기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
배포 고려 사항
다음 섹션에서는이 솔루션을 구현하기 위한 제약 조건과 고려 사항을 제공합니다.
AWS WAF 규칙
이 솔루션이 생성하는 웹 ACL은 웹 애플리케이션에 대한 포괄적인 보호를 제공하도록 설계되었습니다. 이 솔루션은 웹 ACL에 추가할 수 있는 AWS 관리형 규칙 및 사용자 지정 규칙 세트를 제공합니다. 규칙을 포함하려면 CloudFormation 스택을 시작할 때 관련 파라미터에 yes
대해를 선택합니다. 1단계를 참조하세요. 파라미터 목록에 대한 스택을 시작합니다.
참고
out-of-box 제공 솔루션은 AWS Firewall Manager
웹 ACL 트래픽 로깅
미국 동부(버지니아 북부) 이외의 AWS 리전에서 스택을 생성하고 엔드포인트를 로 설정하는 경우 HTTP 서비스 장애 방지 활성화를 no
또는 로 설정해야 CloudFront
합니다yes - AWS WAF rate based rule
.
다른 두 옵션(yes - AWS Lambda log parser
및 yes - Amazon Athena log parser
)은 모든 AWS 엣지 로케이션에서 실행되는 웹 ACL에서 AWS WAF 로그를 활성화해야 하며 미국 동부(버지니아 북부) 외부에서는 지원되지 않습니다. 웹 ACL 트래픽 로깅에 대한 자세한 내용은 AWS WAF 개발자 안내서를 참조하세요.
요청 구성 요소의 크기 초과 처리
AWS WAF는 웹 요청 구성 요소의 본문, 헤더 또는 쿠키에 대한 크기 초과 콘텐츠 검사를 지원하지 않습니다. 이러한 요청 구성 요소 유형 중 하나를 검사하는 규칙 문을 작성할 때 다음 옵션 중 하나를 선택하여 AWS WAF에 이러한 요청으로 수행할 작업을 지시할 수 있습니다.
-
yes
(계속) - 규칙 검사 기준에 따라 요청 구성 요소를 정상적으로 검사합니다. AWS WAF는 크기 제한 내에 있는 요청 구성 요소 콘텐츠를 검사합니다. 솔루션에 사용되는 기본 옵션입니다. -
yes - MATCH
- 웹 요청을 규칙 문과 일치하는 것으로 처리합니다. AWS WAF는 규칙의 검사 기준에 따라 평가하지 않고 요청에 규칙 작업을 적용합니다.Block
작업이 있는 규칙의 경우 과대 구성 요소로 요청을 차단합니다. -
yes - NO_MATCH
- 웹 요청을 규칙의 검사 기준에 따라 평가하지 않고 규칙 문과 일치하지 않는 것으로 취급합니다. AWS WAF는 일치하지 않는 규칙과 마찬가지로 웹 ACL의 나머지 규칙을 사용하여 웹 요청에 대한 검사를 계속합니다.
자세한 내용은 AWS WAF에서 과대 웹 요청 구성 요소 처리를 참조하세요.
다중 솔루션 배포
솔루션을 동일한 계정 및 리전에 여러 번 배포할 수 있습니다. 각 배포에 고유한 CloudFormation 스택 이름과 Amazon S3 버킷 이름을 사용해야 합니다. 각 고유 배포에는 추가 요금이 발생하며 리전별 계정당 AWS WAF 할당량이 적용됩니다.
배포를 위한 최소 역할 권한(선택 사항)
고객은 배포에 필요한 최소 권한으로 IAM 역할을 수동으로 생성할 수 있습니다.
-
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/*" ] }
-
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:*" }
-
Firehose 권한
{ "Effect": "Allow", "Action": [ "firehose:CreateDeliveryStream", "firehose:DeleteDeliveryStream", "firehose:DescribeDeliveryStream", "firehose:StartDeliveryStreamEncryption", "firehose:StopDeliveryStreamEncryption", "firehose:UpdateDestination" ], "Resource": "arn:aws:firehose:*:*:deliverystream/*" }
-
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:::*" }
-
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*" }
-
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 Logs 권한
{ "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 권한
{ "Effect": "Allow", "Action": [ "cloudwatch:DeleteDashboards", "cloudwatch:GetDashboard", "cloudwatch:ListDashboards", "cloudwatch:PutDashboard", "cloudwatch:PutMetricData" ], "Resource": "*" }
-
SNS 권한
{ "Effect": "Allow", "Action": [ "sns:CreateTopic", "sns:DeleteTopic", "sns:Subscribe", "sns:Unsubscribe", "sns:SetTopicAttributes" ], "Resource": "arn:aws:sns:*:*:*" }
-
DynamoDB 권한
{ "Effect": "Allow", "Action": [ "dynamodb:CreateTable", "dynamodb:DeleteTable", "dynamodb:DescribeTable", "dynamodb:PutItem", "dynamodb:GetItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem" ], "Resource": "arn:aws:dynamodb:*:*:table/*" }
-
CloudFormation 권한
{ "Effect": "Allow", "Action": [ "cloudformation:CreateStack", "cloudformation:DeleteStack", "cloudformation:DescribeStacks", "cloudformation:UpdateStack", "cloudformation:ListStacks" ], "Resource": "arn:aws:cloudformation:*:*:stack/*/*" }
-
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:*:*:*" }
-
X-Ray 권한
{ "Effect": "Allow", "Action": [ "xray:PutTraceSegments", "xray:PutTelemetryRecords" ], "Resource": "*" }
-
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 권한
{ "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/*" }