As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Usando AWS WAF para proteger seu AWS AppSync APIs
AWS WAF é um firewall de aplicativos da web que ajuda a proteger os aplicativos da web e APIs contra ataques. Ele permite que você configure um conjunto de regras, chamado de lista de controle de acesso à web (webACL), que permite, bloqueia ou monitora (conta) solicitações da web com base nas regras e condições de segurança da web personalizáveis que você define. Ao integrar o seu AWS AppSync API com AWS WAF, você ganha mais controle e visibilidade do HTTP tráfego aceito pelo seuAPI. Para saber mais AWS WAF, consulte Como AWS WAF funciona no Guia do AWS WAF desenvolvedor.
Você pode usar AWS WAF para protegê-lo contra explorações comuns da web, como ataques de SQL injeção e cross-site scripting ()XSS. AppSync API Isso pode afetar a API disponibilidade e o desempenho, comprometer a segurança ou consumir recursos excessivos. Por exemplo, você pode criar regras para permitir ou bloquear solicitações de intervalos de endereços IP específicos, solicitações de CIDR blocos, solicitações originárias de um país ou região específicos, solicitações que contenham SQL código malicioso ou solicitações que contenham scripts maliciosos.
Você também pode criar regras que correspondam a uma string especificada ou a um padrão de expressão regular nos HTTP cabeçalhos, no métodoURI, na string de consulta e no corpo da solicitação (limitado aos primeiros 8 KB). Além disso, você pode criar regras para bloquear ataques de agentes de usuário específicos, bad bots e descarte de conteúdo. Por exemplo, podem ser utilizadas regras baseadas em intervalos para especificar o número de solicitações da web que são permitidas por cada IP do cliente no final de um período de cinco minutos em atualização contínua.
Para saber mais sobre os tipos de regras compatíveis e os AWS WAF recursos adicionais, consulte o Guia do AWS WAF desenvolvedor e a AWS WAF APIreferência.
Importante
AWS WAF é sua primeira linha de defesa contra explorações na web. Quando AWS WAF ativada em umAPI, AWS WAF as regras são avaliadas antes de outros recursos de controle de acesso, como autorização de API chaves, IAM políticas, OIDC tokens e grupos de usuários do Amazon Cognito.
Integre e AppSync API com AWS WAF
Você pode integrar um Appsync API AWS WAF usando o AWS Management Console, o AWS CLI AWS CloudFormation, ou qualquer outro cliente compatível.
Para integrar e AWS AppSync API com AWS WAF
-
Crie uma AWS WAF webACL. Para obter etapas detalhadas de uso do AWS WAF console
, consulte Criação de uma web ACL. -
Defina as regras para a webACL. Uma regra ou regras são definidas no processo de criação da webACL. Para obter informações sobre como estruturar regras, consulte Regras do AWS WAF. Para obter exemplos de regras úteis que você pode definir para o seu AWS AppSync API, consulteCriação de regras para uma web ACL.
-
Associe a web ACL a um AWS AppSync API. Você pode executar essa etapa no AWS WAF console
ou no AppSync console . -
Para associar a web ACL a uma AWS AppSync API no AWS WAF console, siga as instruções para associar ou desassociar uma Web ACL a um AWS recurso no Guia do AWS WAF desenvolvedor.
-
Para associar a web ACL a uma AWS AppSync API no AWS AppSync console
-
Faça login no AWS Management Console e abra o AppSync console
. -
Escolha o API que você deseja associar a uma webACL.
-
No painel de navegação, selecione Configurações.
-
Na seção Firewall da aplicação web, ative Habilitar AWS WAF.
-
Na lista ACL suspensa Web, escolha o nome da web ACL para associar à sua. API
-
Escolha Salvar para associar a web ACL à suaAPI.
-
-
nota
Depois de criar uma Web ACL no AWS WAF Console, pode levar alguns minutos para que a nova Web ACL esteja disponível. Se você não encontrar uma web recém-criada ACL no menu do firewall do aplicativo Web, aguarde alguns minutos e repita as etapas para associar a web ACL à suaAPI.
nota
AWS WAF a integração só suporta o Subscription registration message
evento para endpoints em tempo real. AWS AppSync responderá com uma mensagem de erro em vez de uma start_ack
mensagem para qualquer mensagem Subscription registration message
bloqueada por AWS WAF.
Depois de associar uma web ACL a uma AWS AppSync API, você gerenciará a web ACL usando AWS WAF APIs o. Você não precisa associar novamente a web ACL à sua, AWS AppSync API a menos que queira associá-la a AWS AppSync API uma web ACL diferente.
Criação de regras para uma web ACL
As regras definem como inspecionar solicitações da Web e o que fazer quando uma solicitação da Web corresponde aos critérios de inspeção. As regras não existem AWS WAF sozinhas. Você pode acessar uma regra pelo nome em um grupo de regras ou na web em ACL que ela está definida. Para obter mais informações, consulte Regras do AWS WAF. Os exemplos a seguir demonstram como definir e associar regras que são úteis para proteger um AppSync API.
exemplo ACLregra da web para limitar o tamanho do corpo da solicitação
Veja a seguir um exemplo de regra que limita o tamanho do corpo das solicitações. Isso seria inserido no JSONeditor de regras ao criar uma web ACL no AWS WAF console.
{ "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 } }
Depois de criar sua web ACL usando a regra de exemplo anterior, você deve associá-la à sua AppSync API. Como alternativa ao uso do AWS Management Console, você pode executar essa etapa no AWS CLI executando o comando a seguir.
aws waf associate-web-acl --web-acl-id
waf-web-acl-arn
--resource-arnappsync-api-arn
Pode levar alguns minutos para que as alterações sejam propagadas, mas, após a execução deste comando, as solicitações que contenham um corpo maior que 1.024 bytes serão rejeitadas pelo AWS AppSync.
nota
Depois de criar uma nova web ACL no AWS WAF console, pode levar alguns minutos para que a web esteja disponível ACL para ser associada a umaAPI. Se você executar o CLI comando e receber um WAFUnavailableEntityException
erro, aguarde alguns minutos e tente executar o comando novamente.
exemplo ACLregra da web para limitar solicitações de um único endereço IP
Veja a seguir um exemplo de uma regra que limita de 1 AppSync API a 100 solicitações de um único endereço IP. Isso seria inserido no JSONeditor de regras ao criar uma web ACL com uma regra baseada em taxas no AWS WAF console.
{ "Name": "Throttle", "Priority": 0, "Action": { "Block": {} }, "VisibilityConfig": { "SampledRequestsEnabled": true, "CloudWatchMetricsEnabled": true, "MetricName": "Throttle" }, "Statement": { "RateBasedStatement": { "Limit": 100, "AggregateKeyType": "IP" } } }
Depois de criar sua web ACL usando a regra de exemplo anterior, você deve associá-la à sua AppSync API. Você pode executar essa etapa no AWS CLI executando o comando a seguir.
aws waf associate-web-acl --web-acl-id
waf-web-acl-arn
--resource-arnappsync-api-arn
exemplo ACLregra da web para evitar consultas de introspecção do GraphQL __schema a um API
Veja a seguir um exemplo de uma regra que impede consultas de introspecção do GraphQL __schema a um. API Qualquer HTTP corpo que inclua a string “__schema” será bloqueado. Isso seria inserido no JSONeditor de regras ao criar uma web ACL no AWS WAF console.
{ "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 } ] } } }
Depois de criar sua web ACL usando a regra de exemplo anterior, você deve associá-la à sua AppSync API. Você pode executar essa etapa no AWS CLI executando o comando a seguir.
aws waf associate-web-acl --web-acl-id
waf-web-acl-arn
--resource-arnappsync-api-arn