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

Associar uma Web ACL 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 (Web ACL) do AWS WAF, você pode proteger o grupo de usuários contra solicitações indesejadas à IU do usuário hospedada clássica, ao login gerenciado 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

  • Você não pode configurar as regras de Web ACL para corresponder às informações de identificação pessoal (PII) nas solicitações do grupo de usuários, por exemplo, nomes de usuário, senhas, números de telefone ou endereços de e-mail. Esses dados não estarão disponíveis para AWS WAF. Em vez disso, configure suas regras de Web ACL para corresponder aos dados da sessão nos cabeçalhos, no caminho e no corpo, como endereços IP, agentes do navegador e operações de API solicitadas.

  • As condições das regras da Web ACL só podem retornar respostas de bloco personalizadas à primeira solicitação dos usuários em uma página de login gerenciada interativa com o usuário. Quando as conexões subsequentes correspondem a uma condição de resposta de bloco personalizada, elas retornam seu código de status, cabeçalho e respostas de redirecionamento personalizados, mas uma mensagem de bloqueio padrão.

  • 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 Web ACL a cada 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. O recurso ATP está no grupo de regras gerenciadas AWS-AWSManagedRulesATPRuleSet. Antes de associar uma Web ACL a um grupo de usuários, certifique-se de que ela não usa esse grupo de regras gerenciadas.

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

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

Login gerenciado e a IU hospedada clássica

Solicitações a todos os endpoints no Referência de login gerenciado 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 obter mais informações, consulte Lista de operações de API agrupadas por modelo de autorização.

É possível configurar as regras na Web ACL com ações como Contar, Permitir, 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 do login gerenciado. Você só pode apresentar um CAPTCHA para o usuário resolver no login gerenciado.

  • 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 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 .

JSON
{ "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 nenhuma 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. Clique na guia AWS WAF na seção Segurança.

  4. Escolha Editar.

  5. Selecione Usar AWS WAF com seu 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 Console de gerenciamento da AWS.

  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 de login gerenciado incluem somente o cabeçalho 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 Web ACLs do AWS WAF estão disponíveis em todos os planos de recursos de grupo de usuários. Os recursos de segurança do AWS WAF complementam a proteção contra ameaças 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.