AWS WAF 웹 ACL을 사용자 풀과 연결 - Amazon Cognito

AWS WAF 웹 ACL을 사용자 풀과 연결

AWS WAF는 웹 애플리케이션 방화벽입니다. AWS WAF 웹 액세스 제어 목록(웹 ACL)을 사용하면 호스팅된 UI 및 Amazon Cognito API 서비스 엔드포인트에 대한 원치 않는 요청으로부터 사용자 풀을 보호할 수 있습니다. 웹 ACL을 사용하면 사용자 풀이 응답하는 모든 HTTPS 웹 요청을 세부적으로 제어할 수 있습니다. AWS WAF 웹 ACL에 대한 자세한 내용은 AWS WAF 개발자 안내서웹 액세스 제어 목록(웹 ACL) 관리 및 사용을 참조하세요.

사용자 풀과 연결된 AWS WAF 웹 ACL이 있는 경우 Amazon Cognito는 선택한 비기밀 헤더와 사용자의 요청 내용을 AWS WAF로 전달합니다. AWS WAF는 요청의 내용을 검사하고 웹 ACL에 지정한 규칙과 비교하여 Amazon Cognito에 응답을 반환합니다.

AWS WAF 웹 ACL 및 Amazon Cognito에 대해 알아야 할 사항

  • 웹 ACL을 생성할 때 웹 ACL이 완전히 전파되어 Amazon Cognito에서 사용할 수 있게 되기까지 약간의 시간이 걸립니다. 전파 시간은 몇 초에서 몇 분이 될 수 있습니다. AWS WAF는 완전히 전파되기 전에 웹 ACL을 연결하려고 하면 WAFUnavailableEntityException을 반환합니다.

  • 각 사용자 풀에 하나의 웹 ACL을 연결할 수 있습니다.

  • 요청으로 인해 AWS WAF가 검사할 수 있는 한계보다 더 큰 페이로드가 발생할 수 있습니다. AWS WAF가 Amazon Cognito의 과대 요청을 처리하는 방식을 어떻게 구성하는지 알아보려면 AWS WAF 개발자 안내서Oversize request component handling(과대 요청 구성 요소 처리)을 참조하세요.

  • AWS WAF 사기 제어 계정 탈취 방지(ATP)를 사용하는 웹 ACL은 Amazon Cognito 사용자 풀과 연결할 수 없습니다. AWS-AWSManagedRulesATPRuleSet 관리형 규칙 그룹을 추가할 때 ATP 기능을 구현합니다. 사용자 풀과 연결하기 전에 웹 ACL에서 이 관리형 규칙 그룹을 사용하지 않는지 확인하세요.

  • 사용자 풀과 연결된 AWS WAF 웹 ACL이 있고 웹 ACL의 규칙이 CAPTCHA를 표시하는 경우 호스팅 UI TOTP 등록에서 복구할 수 없는 오류가 발생할 수 있습니다. CAPTCHA 작업이 있고 호스팅 UI TOTP에 영향을 주지 않는 규칙을 생성하려면 호스팅 UI TOTP MFA에 대한 AWS WAF 웹 ACL 구성 단원을 참조하세요.

AWS WAF는 다음 엔드포인트에 대한 요청을 검사합니다.

호스팅된 UI

사용자 풀 OIDC 및 호스트된 UI API 엔드포인트 참조의 모든 엔드포인트에 대한 요청입니다.

퍼블릭 API 작업

AWS 보안 인증을 사용하여 승인하지 않는, 앱에서 Amazon Cognito API에 대한 요청입니다. 여기에는 InitiateAuth, RespondToAuthChallengeGetUser와 같은 API 작업이 포함됩니다. AWS WAF 범위에 있는 API 작업에는 AWS 보안 인증 정보를 사용한 인증이 필요하지 않습니다. 인증되지 않았거나 세션 문자열 또는 액세스 토큰으로 권한이 부여되었습니다.

Count(개수), Allow(허용), Block(차단) 또는 규칙과 일치하는 요청에 대한 응답으로 CAPTCHA를 표시하는 규칙 작업을 사용하여 웹 ACL에서 규칙을 구성할 수 있습니다. 자세한 내용은 AWS WAF 개발자 안내서AWS WAF 규칙을 참조하세요. 규칙 작업에 따라 Amazon Cognito가 사용자에게 반환하는 응답을 사용자 지정할 수 있습니다.

중요

오류 응답을 사용자 지정하는 옵션은 API 요청을 수행하는 방식에 따라 달라집니다.

  • 호스팅된 UI 요청의 오류 코드와 응답 본문을 사용자 지정할 수 있습니다. 호스팅된 UI에서는 사용자가 해결할 수 있는 CAPTCHA만 제시할 수 있습니다.

  • Amazon Cognito 네이티브 API로 요청하는 경우 Block(차단) 응답을 수신하는 요청의 응답 본문을 사용자 지정할 수 있습니다. 400~499 범위의 사용자 지정 오류 코드를 지정할 수도 있습니다.

  • AWS Command Line Interface(AWS CLI) 및 AWS SDK는 Block(차단) 또는 CAPTCHA 응답을 생성하는 요청에 대해 ForbiddenException 오류를 반환합니다.

웹 ACL을 사용자 풀과 연결

사용자 풀에서 웹 ACL을 사용하려면 AWS Identity and Access Management(IAM) 보안 주체에 다음 Amazon Cognito 권한이 있어야 합니다. AWS WAF 권한에 대한 자세한 내용은 AWS WAF 개발자 안내서AWS WAF API 권한을 참조하세요.

  • cognito-idp:AssociateWebACL

  • cognito-idp:DisassociateWebACL

  • cognito-idp:GetWebACLForResource

  • cognito-idp:ListResourcesForWebACL

IAM 권한을 부여해야 하지만 나열된 작업은 권한 전용이며 API 작업에 해당하지 않습니다.

사용자 풀에 대해 AWS WAF를 활성화하고 웹 ACL을 연결하려면

  1. Amazon Cognito 콘솔에 로그인합니다.

  2. 탐색 창에서 [사용자 풀(User Pools)]을 선택한 다음 편집할 사용자 풀을 선택합니다.

  3. User pool properties(사용자 풀 속성) 탭을 선택합니다.

  4. AWS WAF 옆에 있는 Edit(편집)을 선택합니다.

  5. AWS WAF에서 사용자 풀과 함께 AWS WAF 사용(Use AWS WAF with your user pool)을 선택합니다.

    
              사용자 풀과 함께 AWS WAF 사용(Use AWS WAF with your user pool)이 선택되어 있는 AWS WAF 대화 상자의 스크린샷.
  6. 이미 생성한 AWS WAF 웹 ACL(AWS WAF Web ACL)을 선택하거나 AWS WAF에서 웹 ACL 생성(Create web ACL in AWS WAF)을 선택하여 AWS Management Console의 새 AWS WAF 세션에서 생성합니다.

  7. [Save changes]를 선택합니다.

웹 ACL을 AWS Command Line Interface 또는 SDK의 사용자 풀과 프로그래밍 방식으로 연결하려면 AWS WAF API에서 AssociateWebACL을 사용합니다. Amazon Cognito에는 웹 ACL을 연결하는 별도의 API 작업이 없습니다.

AWS WAF 웹 ACL 테스트 및 로깅

웹 ACL에서 규칙 작업을 Count(개수)로 설정하면 AWS WAF는 규칙과 일치하는 요청 개수에 요청을 추가합니다. 사용자 풀로 웹 ACL을 테스트하려면 규칙 작업을 Count(개수)로 설정하고 각 규칙과 일치하는 요청 볼륨을 고려합니다. 예를 들어 Block(차단) 작업으로 설정하려는 규칙이 일반 사용자 트래픽으로 판단되는 많은 수의 요청과 일치하는 경우 규칙을 재구성해야 할 수 있습니다. 자세한 내용은 AWS WAF 개발자 안내서AWS WAF 보호 테스트 및 조정을 참조하세요.

Amazon CloudWatch Logs 로그 그룹, Amazon Simple Storage Service(Amazon S3) 버킷 또는 Amazon Kinesis Data Firehose에 요청 헤더를 기록하도록 AWS WAF를 구성할 수도 있습니다. x-amzn-cognito-client-idx-amzn-cognito-operation-name을 통해 네이티브 API로 수행한 Amazon Cognito 요청을 식별할 수 있습니다. 호스팅된 UI 요청에는 x-amzn-cognito-client-id 헤더만 포함됩니다. 자세한 내용은 AWS WAF 개발자 안내서웹 ACL 트래픽 로깅을 참조하세요.

AWS WAF 웹 ACL에는 Amazon Cognito 고급 보안 기능 요금이 적용되지 않습니다. AWS WAF의 보안 기능은 Amazon Cognito 고급 보안 기능을 보완합니다. 사용자 풀에서 두 기능을 모두 활성화할 수 있습니다. AWS WAF는 사용자 풀 요청 검사에 대해 별도로 요금을 청구합니다. 자세한 내용은 AWS WAF 요금을 참조하세요.

AWS WAF 요청 데이터 로깅에는 로그를 대상으로 하는 서비스에서 추가 요금이 청구됩니다. 자세한 내용은 AWS WAF 개발자 안내서웹 ACL 트래픽 정보 로깅 요금을 참조하세요.