Associar uma ACL da web do AWS WAF a um grupo de usuários - Amazon Cognito

Associar uma ACL da web do AWS WAF a um grupo de usuários

O AWS WAF é um firewall da aplicação web. Com uma lista de controle de acesso web (ACL da web) do AWS WAF, você pode proteger o grupo de usuários contra solicitações indesejadas à interface do usuário hospedada e a endpoints do serviço de API do Amazon Cognito. A ACL da web oferece controle detalhado sobre todas as solicitações web HTTPS às quais o grupo de usuários responde. Para obter mais informações sobre ACLs da web do AWS WAF, consulte “Gerenciar e usar uma lista de controle de acesso web (ACL da web)” no Guia do desenvolvedor do AWS WAF.

Quando você tem uma ACL da web do AWS WAF associada a um grupo de usuários, o Amazon Cognito encaminha cabeçalhos não confidenciais selecionados e conteúdos de solicitações dos usuários ao AWS WAF. O AWS WAF inspeciona o conteúdo da solicitação, o compara com as regras especificadas na ACL da web e retorna uma resposta ao Amazon Cognito.

Fatos sobre ACLs da web do AWS WAF e o Amazon Cognito

  • Solicitações bloqueadas pelo AWS WAF não contam para a cota de taxa de solicitação de nenhum tipo de solicitação. O manipulador AWS WAF é chamado antes dos manipuladores de controle de utilização em nível de API.

  • Quando você cria uma ACL da web, há um pequeno tempo de espera até que a ACL da web seja totalmente propagada e esteja disponível para o Amazon Cognito. O tempo de propagação pode ser de alguns segundos a alguns minutos. O AWS WAF retorna WAFUnavailableEntityException quando você tenta associar uma ACL da web antes que ela seja totalmente propagada.

  • É possível associar uma ACL da web a um grupo de usuários.

  • Sua solicitação pode ocasionar uma carga útil acima dos limites inspecionados pelo AWS WAF. Consulte Oversize request component handling (Tratamento de componentes de solicitação de grandes dimensões) no Guia do desenvolvedor do AWS WAF para saber como configurar a forma como o AWS WAF lida com solicitações de grandes dimensões do Amazon Cognito.

  • Não é possível associar uma ACL da web que use o AWS WAF Fraud Control – Account Takeover Prevention (ATP) com um grupo de usuários do Amazon Cognito. Você implementa o recurso ATP ao adicionar o grupo de regras gerenciadas pela AWS-AWSManagedRulesATPRuleSet. Antes de associá-lo a um grupo de usuários, a ACL da web não pode usar esse grupo de regras gerenciadas.

  • Quando você tem uma ACL da web do AWS WAF associada a um grupo de usuários e uma regra na ACL da web apresenta um CAPTCHA, isso pode causar um erro irrecuperável no registro de TOTP da UI hospedada. Para criar uma regra que tenha uma ação de CAPTCHA e não afete a TOTP da UI hospedada, consulte Configurar a ACL da web do AWS WAF para MFA com TOTP da UI hospedada.

O AWS WAF inspeciona as solicitações aos endpoints a seguir.

Interface do usuário hospedada

Solicitações a todos os endpoints no Referência da interface do usuário hospedada e endpoints do grupo de usuários.

Operações públicas de API

Solicitações da aplicação à API do Amazon Cognito que não usam credenciais da AWS para autorização. Isso inclui operações de API como InitiateAuth, RespondToAuthChallenge e GetUser. As operações de API que estão no escopo do AWS WAF não precisam de autenticação com credenciais da AWS. Elas não são autenticadas nem autorizadas com uma string de sessão nem um token de acesso. Para ter mais informações, consulte Operações de API autenticadas e não autenticadas de grupos de usuários do Amazon Cognito.

É possível configurar as regras na ACL da web com ações como Count (Contar), Allow (Permitir), Block (Bloquear) ou apresentar um CAPTCHA em resposta a uma solicitação correspondente a uma regra. Para ter mais informações, consulte Regras do AWS WAF no Guia do desenvolvedor do AWS WAF. Dependendo da ação da regra, você pode personalizar a resposta que o Amazon Cognito retorna aos usuários.

Importante

Suas opções para personalizar a resposta de erro dependem da forma como você faz uma solicitação de API.

  • Você pode personalizar o código de erro e o corpo da resposta das solicitações da interface do usuário hospedada. Você só pode apresentar um CAPTCHA para o usuário resolver na interface do usuário hospedada.

  • Para solicitações feitas com a API de grupos de usuários do Amazon Cognito, você pode personalizar o corpo da resposta de uma solicitação que recebe uma resposta Bloquear. Você também pode especificar um código de erro personalizado no intervalo de 400 a 499.

  • A AWS Command Line Interface (AWS CLI) e os AWS SDKs retornam um erro ForbiddenException para solicitações que produzem uma resposta Block (Bloquear) ou CAPTCHA.

Associar uma ACL da web ao grupo de usuários

Para trabalhar com uma ACL da web no grupo de usuários, sua entidade principal do AWS Identity and Access Management (IAM) deve ter as permissões a seguir do Amazon Cognito. Para obter mais informações sobre permissões do AWS WAF, consulte AWS WAF API permissions (Permissões de API do AWS WAF) no Guia do usuário do .

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowWebACLUserPool", "Effect": "Allow", "Action": [ "cognito-idp:ListResourcesForWebACL", "cognito-idp:GetWebACLForResource", "cognito-idp:AssociateWebACL" ], "Resource": [ "arn:aws:cognito-idp:*:123456789012:userpool/*" ] }, { "Sid": "AllowWebACLUserPoolWAFv2", "Effect": "Allow", "Action": [ "wafv2:ListResourcesForWebACL", "wafv2:AssociateWebACL", "wafv2:DisassociateWebACL", "wafv2:GetWebACLForResource" ], "Resource": "arn:aws:wafv2:*:123456789012:*/webacl/*/*" }, { "Sid": "DisassociateWebACL1", "Effect": "Allow", "Action": "wafv2:DisassociateWebACL", "Resource": "*" }, { "Sid": "DisassociateWebACL2", "Effect": "Allow", "Action": [ "cognito-idp:DisassociateWebACL" ], "Resource": [ "arn:aws:cognito-idp:*:123456789012:userpool/*" ] } ] }

Embora você deva conceder permissões do IAM, as ações listadas são somente com permissão e não correspondem a uma operação de API.

Como ativar o AWS WAF para o grupo de usuários e associar uma ACL da web

  1. Faça login no console do Amazon Cognito.

  2. No painel de navegação, escolha User Pools (Grupos de usuários) e escolha o grupo de usuários que deseja editar.

  3. Escolha a guia User pool properties (Propriedades do grupo de usuários).

  4. Escolha Edit (Editar) ao lado do AWS WAF.

  5. Em AWS WAF, selecione Usar o AWS WAF com o grupo de usuários.

    Screenshot da caixa de diálogo AWS WAF com a opção Usar o AWS WAF com o grupo de usuários selecionada.
  6. Selecione uma ACL da Web do AWS WAF que você já criou ou selecione Criar ACL da Web no AWS WAF para criar uma em uma nova sessão do AWS WAF no AWS Management Console.

  7. Escolha Salvar alterações.

Para associar programaticamente uma ACL da web ao grupo de usuários na AWS Command Line Interface ou em um SDK, use AssociateWebACL da API do AWS WAF. O Amazon Cognito não tem uma operação de API separada que associe uma ACL da web.

Testar e registrar ACLs da web do AWS WAF

Quando você define uma ação de regra como Count (Contar) na ACL da web, o AWS WAF adiciona a solicitação a uma contagem de solicitações correspondentes à regra. Para testar uma ACL da web com o grupo de usuários, defina as ações da regra como Count (Contar) e considere o volume de solicitações correspondentes a cada regra. Por exemplo, se uma regra que você deseja definir como uma ação Block (Bloquear) corresponder a um grande número de solicitações que você considera tráfego normal de usuários, talvez seja necessário reconfigurar sua regra. Para ter mais informações, consulte Testar e ajustar suas proteções do AWS WAF no Guia do desenvolvedor do AWS WAF.

É possível configurar o AWS WAF para registrar em log os cabeçalhos das solicitações em um grupo de logs do Amazon CloudWatch Logs, um bucket do Amazon Simple Storage Service (Amazon S3) ou um Amazon Data Firehose. Você pode identificar as solicitações do Amazon Cognito realizadas com a API de grupos de usuários pelo x-amzn-cognito-client-id e pelo x-amzn-cognito-operation-name. As solicitações da interface do usuário hospedada incluem somente o cabeçalho do x-amzn-cognito-client-id. Para obter mais informações, consulte Logging web ACL traffic (Registrar em log o tráfego da ACL da web) no Guia do desenvolvedor do AWS WAF.

As ACLs da web do AWS WAF não estão sujeitas à definição de preço dos recursos de segurança avançada do Amazon Cognito. Os recursos de segurança do AWS WAF complementam os recursos de segurança avançada do Amazon Cognito. É possível ativar os dois recursos em um grupo de usuários. O AWS WAF cobra separadamente pela inspeção das solicitações do grupo de usuários. Para obter mais informações, consulte Preços do AWS WAF.

O registro em log dos dados das solicitações do AWS WAF está sujeito a cobrança adicional pelo serviço ao qual você direciona seus logs. Para obter mais informações, consulte Definição de preço para registrar informações de tráfego da ACL da Web no Guia do desenvolvedor do AWS WAF.