AWS WAF, AWS Firewall Manager 및 AWS Shield Advanced
개발자 가이드 (API 버전 2015-08-24)

AWS WAF에 대한 자격 증명 기반 정책(IAM 정책) 사용

이 주제에서는 자격 증명 기반 정책의 예를 통해 계정 관리자가 IAM 자격 증명(사용자, 그룹, 역할)에 권한 정책을 연결해 AWS WAF 리소스에 대한 작업 수행 권한을 부여하는 방법을 보여줍니다.

중요

AWS WAF 리소스에 대한 액세스 관리를 위해 제공되는 기본 개념과 옵션 설명에 대한 소개 주제 부분을 우선 읽어 보는 것이 좋습니다. 자세한 내용은 AWS WAF 리소스에 대한 액세스 권한 관리 개요 단원을 참조하십시오.

다음은 권한 정책의 예입니다:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "CreateFunctionPermissions", "Effect": "Allow", "Action": [ "waf:ListWebACLs", "waf:ListRules", "waf:GetWebACL", "waf:GetRule", "cloudwatch:ListMetrics", "waf:GetSampledRequests" ], "Resource": "*" }, { "Sid": "PermissionToPassAnyRole", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::account-id:role/*" } ] }

이 정책에는 두 명령문이 있습니다:

  • 첫 번째 문은 waf:ListWebACLs, waf:ListRules, waf:GetWebACL, waf:GetRule, cloudwatch:ListMetricswaf:GetSampledRequests 작업을 사용하여 AWS WAF 웹 ACL에 대한 통계를 볼 수 있는 권한을 부여합니다.AWS WAF는 리소스 수준에서 이러한 작업 중 일부에 대한 권한을 지원하지 않습니다. 따라서 정책은 와일드카드 문자(*)를 Resource 값으로 지정합니다.

  • 두 번째 문은 IAM 역할에서 IAM 작업 iam:PassRole에 대한 권한을 부여합니다. Resource 값의 끝에 있는 와일드카드 문자(*)는 문이 모든 IAM 역할에서 iam:PassRole 작업에 대한 권한을 허용함을 의미합니다. 이러한 권한을 특정 역할로 제한하려면 리소스 ARN에 있는 와일드카드 문자(*)를 특정 역할 이름으로 대체합니다.

자격 증명 기반 정책에서는 권한을 얻을 보안 주체를 지정하지 않으므로 이 정책은 Principal 요소를 지정하지 않습니다. 정책을 사용자에게 연결할 경우 사용자는 암시적인 보안 주체입니다. IAM 역할에 권한 정책을 연결하면 역할의 신뢰 정책에서 식별된 보안 주체가 권한을 얻습니다.

모든 AWS WAF API 작업과 해당 작업이 적용되는 리소스를 보여주는 표는 AWS WAF API 권한: 작업, 리소스 및 조건 참조 단원을 참조하십시오.

주제

AWS WAF 콘솔 사용에 필요한 권한

AWS WAF 콘솔은 AWS WAF 리소스를 생성하고 관리하기 위한 통합 환경을 제공합니다. 콘솔은 AWS WAF API 권한: 작업, 리소스 및 조건 참조에 기록된 API 관련 권한 외에도 주로 AWS WAF 리소스를 생성할 권한이 필요한 많은 기능과 워크플로우를 제공합니다. 이러한 추가 콘솔 권한에 대한 자세한 내용은 고객 관리형 정책 예 단원을 참조하십시오.

AWS WAF에 대한 AWS 관리형(미리 정의된) 정책

AWS는 AWS에서 생성하고 관리하는 독립형 IAM 정책을 제공하여 많은 일반 사용 사례를 처리합니다. 관리형 정책은 사용자가 필요한 권한을 조사할 필요가 없도록 일반 사용 사례에 필요한 권한을 부여합니다. 자세한 내용은 IAM 사용 설명서AWS 관리형 정책 단원을 참조하십시오.

계정의 사용자에게 연결할 수 있는 다음 AWS 관리형 정책은 AWS WAF에 고유하며, 사용 사례 시나리오를 기준으로 그룹화되어 있습니다.

  • AWSWAFReadOnlyAccess – AWS WAF 리소스에 대한 읽기 전용 액세스 권한을 부여합니다.

  • AWSWAFFullAccess – AWS WAF 리소스에 대한 전체 액세스 권한을 부여합니다.

참고

IAM 콘솔에 로그인하고 이 콘솔에서 특정 정책을 검색하면 이러한 권한 정책을 검토할 수 있습니다.

AWS WAF API 작업 및 리소스에 대한 권한을 허용하는 고유의 사용자 지정 IAM 정책을 생성할 수도 있습니다. 이러한 사용자 지정 정책을 해당 권한이 필요한 IAM 사용자 또는 그룹에 연결하거나 AWS WAF 리소스에 대해 생성하는 사용자 지정 실행 역할(IAM 역할)에 연결할 수 있습니다.

고객 관리형 정책 예

이 단원의 예제에서는 사용자에게 연결할 수 있는 샘플 정책 그룹을 제공합니다. 정책을 처음 생성하는 경우 이 단원의 단계에서 설명하는 순서대로 먼저 계정에서 IAM 사용자를 생성하고 정책을 사용자에게 연결하는 것이 좋습니다.

콘솔을 사용하여 정책을 사용자에게 연결할 때 각 정책의 효과를 확인할 수 있습니다. 처음에 사용자는 권한을 가지고 있지 않으며 사용자는 콘솔에서 어떠한 작업도 수행할 수 없습니다. 정책을 사용자에게 연결하면 사용자가 콘솔에서 다양한 작업을 수행할 수 있는지 확인할 수 있습니다.

두 개의 브라우저 창을 사용하는 것이 좋습니다. 하나에서는 사용자를 생성하고 권한을 부여하며, 다른 하나에서는 사용자의 자격 증명을 사용하여 AWS Management 콘솔에 로그인하고 사용자에게 부여하는 권한을 확인합니다.

AWS WAF 리소스에 대한 실행 역할로 사용할 수 있는 IAM 역할을 생성하는 예제는 IAM 사용 설명서IAM 역할 생성 단원을 참조하십시오.

예 항목

IAM 사용자 생성

먼저 관리자 권한을 사용하여 IAM 사용자를 생성하고 IAM 그룹에 추가한 다음 생성한 IAM 사용자에게 관리자 권한을 부여해야 합니다. 그러면 특별 URL과 사용자의 자격 증명을 사용하여 AWS에 액세스할 수 있습니다.

지침은 IAM 사용 설명서첫 번째 IAM 사용자 및 관리자 그룹 생성 단원을 참조하십시오.

예제 1: 사용자에게 AWS WAF, CloudFront 및 CloudWatch에 대한 읽기 전용 액세스 권한 부여

다음 정책은 사용자에게 AWS WAF 리소스, Amazon CloudFront 웹 배포 및 Amazon CloudWatch 지표에 대한 읽기 전용 액세스 권한을 부여합니다. AWS WAF 조건, 규칙 및 웹 ACL의 설정을 보면서 어떤 배포가 웹 ACL에 연결되어 있는지 확인하고 CloudWatch에서 지표와 요청 샘플을 모니터링해야 하는 사용자에게 유용합니다. 이러한 사용자는 AWS WAF 리소스를 생성, 업데이트 또는 삭제할 수 없습니다.

{ "Version":"2012-10-17", "Statement": [ { "Action": [ "waf:Get*", "waf:List*", "cloudfront:GetDistribution", "cloudfront:GetDistributionConfig", "cloudfront:ListDistributions", "cloudfront:ListDistributionsByWebACLId", "cloudwatch:ListMetrics", "cloudwatch:GetMetricStatistics" ], "Effect": "Allow", "Resource": "*" } ] }

예제 2: 사용자에게 AWS WAF, CloudFront 및 CloudWatch에 대한 전체 액세스 권한 부여

사용자는 다음 정책을 사용하여 모든 AWS WAF 작업과 CloudFront 웹 배포에 대한 모든 작업을 수행할 수 있으며 지표와 CloudWatch의 요청 샘플을 모니터링할 수 있습니다. 이 정책은 AWS WAF 관리자인 사용자에게 유용합니다.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "waf:*", "cloudfront:CreateDistribution", "cloudfront:GetDistribution", "cloudfront:GetDistributionConfig", "cloudfront:UpdateDistribution", "cloudfront:ListDistributions", "cloudfront:ListDistributionsByWebACLId", "cloudfront:DeleteDistribution", "cloudwatch:ListMetrics", "cloudwatch:GetMetricStatistics" ], "Effect": "Allow", "Resource": "*" } ] }

관리 권한이 있는 사용자에 대해 멀티 팩터 인증(MFA)을 구성하는 것이 좋습니다. 자세한 내용은 IAM 사용 설명서AWS에서 멀티 팩터 인증(MFA) 기기 사용하기 단원을 참조하십시오.

예제 3: 지정된 AWS 계정에 대한 액세스 권한 부여

이 정책은 444455556666 계정에 다음과 같은 권한을 부여합니다.

  • 모든 AWS WAF 작업 및 리소스에 대한 전체 액세스 권한.

  • 웹 ACL과 CloudFront 배포를 연결할 수 있도록 허용하는 모든 CloudFront 배포에 대한 읽기 및 업데이트 액세스 권한.

  • CloudWatch 데이터와 AWS WAF 콘솔의 요청 샘플을 볼 수 있도록, 모든 CloudWatch 지표 및 지표 통계에 대한 읽기 액세스 권한.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "waf:*" ], "Resource": [ "arn:aws:waf::444455556666:*" ] }, { "Effect": "Allow", "Action": [ "cloudfront:GetDistribution", "cloudfront:GetDistributionConfig", "cloudfront:ListDistributions", "cloudfront:ListDistributionsByWebACLId", "cloudfront:UpdateDistributions", "cloudwatch:ListMetrics", "cloudwatch:GetMetricStatistics" ], "Resource": [ "*" ] } ] }

예제 4: 지정된 웹 ACL 계정에 대한 액세스 권한 부여

이 정책은 계정 444455556666의 webacl ID 112233d7c-86b2-458b-af83-51c51example에게 다음과 같은 권한을 부여합니다.

  • AWS WAF Get, Update, Delete 작업 및 리소스에 대한 전체 액세스 권한

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "waf:*" ], "Resource": [ "arn:aws:waf::444455556666:webacl/112233d7c-86b2-458b-af83-51c51example" ] } ] }