Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Considerazioni sull'implementazione
Le seguenti sezioni forniscono vincoli e considerazioni per l'implementazione di questa soluzione.
Regole AWS WAF
L'ACL Web generato da questa soluzione è progettato per offrire una protezione completa per le applicazioni Web. La soluzione fornisce un set di AWS Managed Rules e regole personalizzate che puoi aggiungere all'ACL Web. Per includere una regola, scegli yes
i parametri pertinenti all'avvio dello CloudFormation stack. Vedi Fase 1. Avvia lo stack per l'elenco dei parametri.
Nota
La out-of-box soluzione non supporta AWS Firewall Manager
Registrazione del traffico Web ACL
Se crei lo stack in una regione AWS diversa dagli Stati Uniti orientali (Virginia settentrionale) e imposti l'endpoint comeCloudFront
, devi impostare Activate HTTP Flood Protection su o. no
yes - AWS WAF rate based rule
Le altre due opzioni (yes - AWS Lambda log parser
eyes - Amazon Athena log parser
) richiedono l'attivazione dei log AWS WAF su un ACL Web che viene eseguito in tutte le edge location AWS, e questa operazione non è supportata al di fuori degli Stati Uniti orientali (Virginia settentrionale). Per ulteriori informazioni sulla registrazione del traffico Web ACL, consulta la guida per sviluppatori AWS WAF.
Gestione sovradimensionata dei componenti della richiesta
AWS WAF non supporta l'ispezione di contenuti di grandi dimensioni per il corpo, le intestazioni o i cookie del componente di richiesta Web. Quando scrivi una dichiarazione di regola che esamina uno di questi tipi di componenti di richiesta, puoi scegliere una di queste opzioni per dire ad AWS WAF cosa fare con queste richieste:
-
yes
(continua) - Ispeziona normalmente il componente della richiesta in base ai criteri di ispezione delle regole. AWS WAF ispeziona i contenuti dei componenti della richiesta che rientrano nei limiti di dimensione. Questa è l'opzione predefinita utilizzata nella soluzione. -
yes - MATCH
: considera la richiesta Web come corrispondente all'istruzione regola. AWS WAF applica l'azione della regola alla richiesta senza valutarla rispetto ai criteri di ispezione della regola. Per una regola conBlock
azione, questo blocca la richiesta con il componente sovradimensionato. -
yes - NO_MATCH
- Considera la richiesta web come se non corrispondesse alla dichiarazione della regola, senza valutarla rispetto ai criteri di ispezione della regola. AWS WAF continua l'ispezione della richiesta Web utilizzando il resto delle regole nell'ACL Web, come farebbe per qualsiasi regola non corrispondente.
Per ulteriori informazioni, consulta Gestione di componenti di richieste Web di grandi dimensioni in AWS WAF.
Implementazioni di più soluzioni
È possibile distribuire la soluzione più volte nello stesso account e nella stessa regione. È necessario utilizzare un nome CloudFormation stack univoco e un nome di bucket Amazon S3 per ogni distribuzione. Ogni implementazione unica comporta costi aggiuntivi ed è soggetta alle quote AWS WAF per account e per regione.
Autorizzazioni minime di ruolo per la distribuzione (facoltative)
I clienti possono creare manualmente un ruolo IAM con le autorizzazioni minime richieste per la distribuzione:
-
Autorizzazioni WAF
{ "Effect": "Allow", "Action": [ "wafv2:CreateWebACL", "wafv2:UpdateWebACL", "wafv2:DeleteWebACL", "wafv2:GetWebACL", "wafv2:ListWebACLs", "wafv2:CreateIPSet", "wafv2:UpdateIPSet", "wafv2:DeleteIPSet", "wafv2:GetIPSet", "wafv2:AssociateWebACL", "wafv2:DisassociateWebACL", "wafv2:PutLoggingConfiguration", "wafv2:DeleteLoggingConfiguration", "wafv2:ListWebACLs", "wafv2:ListIPSets", "wafv2:ListTagsForResource" ], "Resource": [ "arn:aws:wafv2:*:*:regional/webacl/*", "arn:aws:wafv2:*:*:regional/ipset/*", "arn:aws:wafv2:*:*:global/webacl/*", "arn:aws:wafv2:*:*:global/ipset/*" ] }
-
Autorizzazioni Lambda
{ "Effect": "Allow", "Action": [ "lambda:CreateFunction", "lambda:DeleteFunction", "lambda:GetFunction", "lambda:InvokeFunction", "lambda:UpdateFunctionCode", "lambda:UpdateFunctionConfiguration", "lambda:AddPermission", "lambda:RemovePermission" ], "Resource": "arn:aws:lambda:*:*:function:*" }
-
Autorizzazioni Firehose
{ "Effect": "Allow", "Action": [ "firehose:CreateDeliveryStream", "firehose:DeleteDeliveryStream", "firehose:DescribeDeliveryStream", "firehose:StartDeliveryStreamEncryption", "firehose:StopDeliveryStreamEncryption", "firehose:UpdateDestination" ], "Resource": "arn:aws:firehose:*:*:deliverystream/*" }
-
Autorizzazioni S3
{ "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:DeleteBucketPolicy", "s3:GetBucketAcl", "s3:GetBucketPolicy", "s3:GetObject", "s3:PutBucketAcl", "s3:PutBucketPolicy", "s3:PutBucketPublicAccessBlock", "s3:PutBucketVersioning", "s3:PutEncryptionConfiguration", "s3:PutObject", "s3:PutBucketTagging", "s3:PutLifecycleConfiguration", "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:ListMultipartUploadParts", "s3:PutBucketLogging", "s3:GetBucketLogging" ], "Resource": "arn:aws:s3:::*" }
-
Autorizzazioni Athena
{ "Effect": "Allow", "Action": [ "athena:CreateWorkGroup", "athena:DeleteWorkGroup", "athena:GetWorkGroup", "athena:UpdateWorkGroup", "athena:StartQueryExecution", "athena:GetQueryExecution", "athena:GetQueryResults", "athena:StopQueryExecution" ], "Resource": "arn:aws:athena:*:*:workgroup/WAF*" }
-
Autorizzazioni Glue
{ "Effect": "Allow", "Action": [ "glue:CreateDatabase", "glue:DeleteDatabase", "glue:GetDatabase", "glue:GetDatabases", "glue:UpdateDatabase", "glue:CreateTable", "glue:DeleteTable", "glue:GetTable", "glue:GetTables", "glue:UpdateTable" ], "Resource": [ "arn:aws:glue:*:*:catalog", "arn:aws:glue:*:*:database/*", "arn:aws:glue:*:*:table/*/*", "arn:aws:glue:*:*:userDefinedFunction/*" ] }
-
CloudWatch Registra le autorizzazioni
{ "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DeleteLogGroup", "logs:DeleteLogStream", "logs:PutRetentionPolicy", "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:*:*:log-group:/aws/lambda/*", "arn:aws:logs:*:*:log-group:*", "arn:aws:logs:*:*:log-group:/aws/kinesisfirehose/*" ] }
-
CloudWatch Autorizzazioni
{ "Effect": "Allow", "Action": [ "cloudwatch:DeleteDashboards", "cloudwatch:GetDashboard", "cloudwatch:ListDashboards", "cloudwatch:PutDashboard", "cloudwatch:PutMetricData" ], "Resource": "*" }
-
Autorizzazioni SNS
{ "Effect": "Allow", "Action": [ "sns:CreateTopic", "sns:DeleteTopic", "sns:Subscribe", "sns:Unsubscribe", "sns:SetTopicAttributes" ], "Resource": "arn:aws:sns:*:*:*" }
-
Autorizzazioni DynamoDB
{ "Effect": "Allow", "Action": [ "dynamodb:CreateTable", "dynamodb:DeleteTable", "dynamodb:DescribeTable", "dynamodb:PutItem", "dynamodb:GetItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem" ], "Resource": "arn:aws:dynamodb:*:*:table/*" }
-
CloudFormation Autorizzazioni
{ "Effect": "Allow", "Action": [ "cloudformation:CreateStack", "cloudformation:DeleteStack", "cloudformation:DescribeStacks", "cloudformation:UpdateStack", "cloudformation:ListStacks" ], "Resource": "arn:aws:cloudformation:*:*:stack/*/*" }
-
Autorizzazioni del registro dell'app Service Catalog
{ "Effect": "Allow", "Action": [ "servicecatalog:CreateApplication", "servicecatalog:DeleteApplication", "servicecatalog:GetApplication", "servicecatalog:TagResource", "servicecatalog:CreateAttributeGroup", "servicecatalog:DeleteAttributeGroup", "servicecatalog:GetAttributeGroup", "servicecatalog:AssociateAttributeGroup", "servicecatalog:DisassociateAttributeGroup", "servicecatalog:AssociateResource", "servicecatalog:DisassociateResource" ], "Resource": "arn:aws:servicecatalog:*:*:*" }
-
Autorizzazioni X-Ray
{ "Effect": "Allow", "Action": [ "xray:PutTraceSegments", "xray:PutTelemetryRecords" ], "Resource": "*" }
-
Autorizzazioni IAM
{ "Effect": "Allow", "Action": [ "iam:AttachRolePolicy", "iam:CreatePolicy", "iam:CreateRole", "iam:DeleteRole", "iam:DeleteRolePolicy", "iam:DetachRolePolicy", "iam:GetRole", "iam:GetRolePolicy", "iam:ListRoles", "iam:PassRole", "iam:PutRolePolicy" ], "Resource": "arn:aws:iam::*:role/*" }
-
EventBridge Autorizzazioni
{ "Effect": "Allow", "Action": [ "events:PutTargets", "events:RemoveTargets", "events:DescribeRule", "events:EnableRule", "events:ListRules", "events:PutRule", "events:DeleteRule", "events:ListEventSources", "events:DescribeEventSource", "events:ActivateEventSource", "events:DeactivateEventSource" ], "Resource": "arn:aws:events:*:*:rule/*" }