AWS WAF 를 사용하여 보호 AWS AppSync APIs - AWS AppSync

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS WAF 를 사용하여 보호 AWS AppSync APIs

AWS WAF 는 웹 애플리케이션과 를 공격APIs으로부터 보호하는 데 도움이 되는 웹 애플리케이션 방화벽입니다. 이를 통해 정의한 사용자 지정 가능한 웹 보안 규칙 및 조건을 기반으로 웹 액세스 제어 목록(웹 ACL)이라는 규칙 세트를 구성하여 웹 요청을 허용, 차단 또는 모니터링할 수 있습니다. 를 AWS AppSync API 와 통합 AWS WAF하면 에서 허용하는 HTTP 트래픽에 대한 제어 및 가시성을 높일 수 있습니다API. 에 대한 자세한 내용은 AWS WAF 개발자 안내서의 AWS WAF 작동 방식을 AWS WAF참조하세요.

AWS WAF 를 사용하여 SQL 주입 및 사이트 간 스크립팅(XSS) 공격과 같은 일반적인 웹 악용으로부터 를 AppSync API 보호할 수 있습니다. 이는 API 가용성 및 성능에 영향을 미치거나, 보안을 손상시키거나, 과도한 리소스를 소비할 수 있습니다. 예를 들어 지정된 IP 주소 범위의 요청, CIDR 블록의 요청, 특정 국가 또는 리전에서 시작된 요청, 악성 SQL 코드가 포함된 요청 또는 악성 스크립트가 포함된 요청을 허용하거나 차단하는 규칙을 생성할 수 있습니다.

HTTP 헤더, 메서드, 쿼리 문자열, URI및 요청 본문(첫 8KB로 제한됨)에서 지정된 문자열 또는 정규식 패턴과 일치하는 규칙을 생성할 수도 있습니다. 또한 특정 사용자 에이전트, 악성 봇, 콘텐츠 스크래퍼의 공격을 차단하는 규칙을 생성할 수 있습니다. 예를 들어, 비율 기반 규칙을 사용하여 연속적으로 업데이트되는 이후 5분 동안 각 클라이언트 IP에서 허용하는 웹 요청 수를 지정할 수 있습니다.

지원되는 규칙 유형과 추가 AWS WAF 기능에 대한 자세한 내용은 AWS WAF 개발자 안내서AWS WAF API 참조를 참조하세요.

중요

AWS WAF 는 웹 악용에 대한 1차 방어선입니다. 에서 이 AWS WAF 활성화되면 API 키 권한 부여API, IAM 정책, OIDC 토큰 및 Amazon Cognito 사용자 풀과 같은 다른 액세스 제어 기능보다 AWS WAF 먼저 규칙이 평가됩니다.

와 AppSync API 통합 AWS WAF

AWS Management Console, AWS CLI AWS CloudFormation또는 기타 호환 클라이언트를 AWS WAF 사용하여 Appsync를 API와 통합할 수 있습니다.

를 AWS AppSync API와 통합하려면 AWS WAF
  1. AWS WAF 웹을 생성합니다ACL. AWS WAF 콘솔을 사용하는 자세한 단계는 웹 생성을 참조하세요ACL.

  2. 웹 에 대한 규칙을 정의합니다ACL. 규칙 또는 규칙은 웹을 생성하는 과정에서 정의됩니다ACL. 규칙 구성 방법에 대한 자세한 내용은 AWS WAF 규칙을 참조하세요. 에 대해 정의할 수 있는 유용한 규칙의 예는 섹션을 AWS AppSync API참조하세요웹에 대한 규칙 생성 ACL.

  3. 웹을 ACL에 연결합니다 AWS AppSync API. 콘솔 또는 AWS WAF 콘솔 에서 이 단계를 수행할 수 있습니다AppSync .

    • 웹을 AWS WAF 콘솔의 ACL AWS AppSync API와 연결하려면 AWS WAF 개발자 안내서의 리소스ACL와 웹을 연결하거나 연결 해제하기 AWS 위한 지침을 따르세요.

    • 콘솔의 ACL AWS AppSync API에 웹을 AWS AppSync 연결하려면

      1. 에 로그인 AWS Management Console 하고 AppSync 콘솔을 엽니다.

      2. 웹 에 API 연결할 을 선택합니다ACL.

      3. 탐색 창에서 설정을 선택합니다.

      4. 웹 애플리케이션 방화벽 섹션에서 AWS WAF활성화를 켭니다.

      5. 웹 ACL 드롭다운 목록에서 에 ACL 연결할 웹의 이름을 선택합니다API.

      6. 저장을 선택하여 웹을 ACL에 연결합니다API.

참고

AWS WAF 콘솔ACL에서 웹을 생성한 후 새 웹을 사용할 수 있는 ACL 데 몇 분 정도 걸릴 수 있습니다. 웹 애플리케이션 방화벽 메뉴ACL에 새로 생성된 웹이 표시되지 않는 경우 몇 분 정도 기다린 후 단계를 다시 시도하여 웹을 ACL와 연결합니다API.

참고

AWS WAF 통합은 실시간 엔드포인트에 대한 Subscription registration message 이벤트만 지원합니다. AWS AppSync 는 에 의해 Subscription registration message 차단된 에 대한 메시지 대신 오류 start_ack 메시지로 응답합니다 AWS WAF.

웹을 ACL에 연결한 후 를 ACL 사용하여 웹을 AWS AppSync API관리합니다 AWS WAF APIs. 를 다른 웹 ACL 에 AWS AppSync API 연결하려는 경우가 아니면 웹을 와 다시 연결할 AWS AppSync API 필요가 없습니다ACL.

웹에 대한 규칙 생성 ACL

규칙은 웹 요청을 검사하는 방법과 웹 요청이 검사 기준과 일치할 때 수행할 작업을 정의합니다. 규칙은 AWS WAF 자체적으로 에 존재하지 않습니다. 규칙 그룹 또는 정의된 웹에서 이름으로 규칙에 액세스할 수 ACL 있습니다. 자세한 내용은 AWS WAF 규칙을 참조하세요. 다음 예제에서는 를 보호하는 데 유용한 규칙을 정의하고 연결하는 방법을 보여줍니다 AppSync API.

예 요청 본문 크기를 제한하는 웹 ACL 규칙

다음은 요청의 본문 크기를 제한하는 규칙의 예입니다. AWS WAF 콘솔에서 웹을 생성할 때 규칙 JSON 편집기ACL에 입력됩니다.

{ "Name": "BodySizeRule", "Priority": 1, "Action": { "Block": {} }, "Statement": { "SizeConstraintStatement": { "ComparisonOperator": "GE", "FieldToMatch": { "Body": {} }, "Size": 1024, "TextTransformations": [ { "Priority": 0, "Type": "NONE" } ] } }, "VisibilityConfig": { "CloudWatchMetricsEnabled": true, "MetricName": "BodySizeRule", "SampledRequestsEnabled": true } }

앞의 예제 규칙을 ACL 사용하여 웹을 생성한 후 와 연결해야 합니다 AppSync API. 를 사용하는 대신 다음 명령을 실행 AWS CLI 하여 에서 이 단계를 수행할 AWS Management Console수 있습니다.

aws waf associate-web-acl --web-acl-id waf-web-acl-arn --resource-arn appsync-api-arn

변경 사항이 전파되는 데 몇 분 정도 걸릴 수 있지만, 이 명령을 실행한 후에는 1024바이트보다 큰 본문이 포함된 요청이 AWS AppSync에 의해 거부됩니다.

참고

AWS WAF 콘솔ACL에서 새 웹을 생성한 후 웹을 에 연결하는 데 몇 분 정도 걸릴 ACL 수 있습니다API. CLI 명령을 실행하고 WAFUnavailableEntityException 오류가 발생하면 몇 분 정도 기다린 다음 명령 실행을 다시 시도합니다.

예 단일 IP 주소의 요청을 제한하는 웹 ACL 규칙

다음은 단일 IP 주소에서 요청을 100개로 제한 AppSync API하는 규칙의 예입니다. 이는 AWS WAF 콘솔에서 속도 기반 규칙ACL으로 웹을 생성할 때 규칙 JSON 편집기에 입력됩니다.

{ "Name": "Throttle", "Priority": 0, "Action": { "Block": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "Throttle" }, "Statement": { "RateBasedStatement": { "Limit": 100, "AggregateKeyType": "IP" } } }

앞의 예제 규칙을 ACL 사용하여 웹을 생성한 후 와 연결해야 합니다 AppSync API. 다음 명령을 실행 AWS CLI 하여 에서 이 단계를 수행할 수 있습니다.

aws waf associate-web-acl --web-acl-id waf-web-acl-arn --resource-arn appsync-api-arn
예 에 대한 GraphQL __schema 내부 검사 쿼리를 방지하기 위한 웹 ACL 규칙 API

다음은 에 대한 GraphQL __schema 내부 검사 쿼리를 방지하는 규칙의 예입니다API. 문자열 “__schema”가 포함된 모든 HTTP 본문이 차단됩니다. 이는 AWS WAF 콘솔에서 웹을 생성할 때 규칙 JSON 편집기ACL에 입력됩니다.

{ "Name": "BodyRule", "Priority": 5, "Action": { "Block": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "BodyRule" }, "Statement": { "ByteMatchStatement": { "FieldToMatch": { "Body": {} }, "PositionalConstraint": "CONTAINS", "SearchString": "__schema", "TextTransformations": [ { "Type": "NONE", "Priority": 0 } ] } } }

앞의 예제 규칙을 ACL 사용하여 웹을 생성한 후 와 연결해야 합니다 AppSync API. 다음 명령을 실행 AWS CLI 하여 에서 이 단계를 수행할 수 있습니다.

aws waf associate-web-acl --web-acl-id waf-web-acl-arn --resource-arn appsync-api-arn