Amazon Route 53에 대한 자격 증명 기반 정책(IAM 정책) 사용 - Amazon Route 53

Amazon Route 53에 대한 자격 증명 기반 정책(IAM 정책) 사용

이 주제에서는 자격 증명 기반 정책의 예를 통해 계정 관리자가 IAM 자격 증명에 권한 정책을 연결함으로써 Amazon Route 53 리소스에 대한 작업 수행 권한을 부여하는 방법을 보여 줍니다.

중요

Route 53 리소스 액세스를 관리하기 위한 기본 개념과 옵션을 설명하는 소개 주제를 먼저 읽어 보는 것이 좋습니다. 자세한 내용은 Amazon Route 53 리소스에 대한 액세스 권한 관리 개요 단원을 참조하십시오.

참고

액세스 권한을 부여할 때 호스팅 영역과 Amazon VPC가 동일한 파티션에 속해 있어야 합니다. 파티션은 AWS 리전의 그룹입니다. 각 AWS 계정는 하나의 파티션으로 범위가 지정됩니다.

지원되는 파티션은 다음과 같습니다.

  • aws - AWS 리전

  • aws-cn - 중국 리전

  • aws-us-gov - AWS GovCloud (US) Region

자세한 내용은 AWS 일반 참조액세스 관리Amazon Route 53 엔드포인트 및 할당량을 참조하세요.

다음 예는 권한 정책을 보여 줍니다. Sid(문 ID)는 선택 사항입니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid" : "AllowPublicHostedZonePermissions", "Effect": "Allow", "Action": [ "route53:CreateHostedZone", "route53:UpdateHostedZoneComment", "route53:GetHostedZone", "route53:ListHostedZones", "route53:DeleteHostedZone", "route53:ChangeResourceRecordSets", "route53:ListResourceRecordSets", "route53:GetHostedZoneCount", "route53:ListHostedZonesByName" ], "Resource": "*" }, { "Sid" : "AllowHealthCheckPermissions", "Effect": "Allow", "Action": [ "route53:CreateHealthCheck", "route53:UpdateHealthCheck", "route53:GetHealthCheck", "route53:ListHealthChecks", "route53:DeleteHealthCheck", "route53:GetCheckerIpRanges", "route53:GetHealthCheckCount", "route53:GetHealthCheckStatus", "route53:GetHealthCheckLastFailureReason" ], "Resource": "*" } ] }

이 정책에는 두 가지 문이 포함됩니다.

  • 첫 번째 문은 퍼블릭 호스팅 영역과 그 레코드를 생성 및 관리하는 데 필요한 작업에 대한 권한을 부여합니다. Amazon 리소스 이름(ARN)에 와일드카드 문자(*)가 있으면 현재 AWS 계정이 소유한 모든 호스팅 영역에 액세스할 수 있는 권한이 부여됩니다.

  • 두 번째 문은 상태 확인을 생성 및 관리하는 데 필요한 모든 작업 권한을 부여합니다.

작업과 각 작업을 사용할 권한을 부여하거나 거부하기 위해 지정하는 ARN의 목록은 Amazon Route 53 API 권한: 작업, 리소스 및 조건 참조 단원을 참조하세요.

Amazon Route 53 콘솔 사용에 필요한 권한

Amazon Route 53 콘솔에 대한 전체 액세스 권한을 부여하려면 다음 권한 정책에서 권한을 부여합니다.

{ "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "route53:*", "route53domains:*", "tag:*", "ssm:GetParametersByPath", "cloudfront:ListDistributions", "elasticloadbalancing:DescribeLoadBalancers", "elasticbeanstalk:DescribeEnvironments", "s3:ListAllamzn-s3-demo-bucket", "s3:GetBucketLocation", "s3:GetBucketWebsite", "ec2:DescribeRegions", "ec2:DescribeVpcs", "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DescribeAvailabilityZones", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:ModifyNetworkInterfaceAttribute", "sns:ListTopics", "sns:ListSubscriptionsByTopic", "sns:CreateTopic", "kms:ListAliases", "kms:DescribeKey", "kms:CreateKey", "kms:CreateAlias", "kms:Sign", "cloudwatch:DescribeAlarms", "cloudwatch:PutMetricAlarm", "cloudwatch:DeleteAlarms", "cloudwatch:GetMetricStatistics" ], "Resource":"*" }, { "Effect": "Allow", "Action": "apigateway:GET", "Resource": "arn:aws:apigateway:*::/domainnames" } ] }

다음은 권한이 필요한 이유입니다.

route53:*

다음을 제외한 모든 Route 53 작업을 수행할 수 있습니다.

  • 별칭 대상(Alias Target) 값이 CloudFront 배포, Elastic Load Balancing 로드 밸런서, Elastic Beanstalk 환경 또는 Amazon S3 버킷인 별칭 레코드를 생성 및 업데이트합니다. (이 권한으로 [Alias Target] 값이 동일한 호스팅 영역의 다른 레코드가 되는 별칭 레코드를 생성할 수 있습니다.)

  • 프라이빗 호스팅 영역 작업

  • 도메인 작업

  • CloudWatch 경보를 생성하고, 삭제하고, 볼 수 있게 해줍니다.

  • Route 53 콘솔에서 CloudWatch 지표을 렌더링합니다.

route53domains:*

도메인에 대한 작업을 할 수 있게 해줍니다.

중요

route53 작업을 개별적으로 나열하는 경우, 도메인을 작업할 route53:CreateHostedZone을 포함해야 합니다. 도메인을 등록하는 동시에 호스팅 영역이 생성되므로, 도메인 등록 권한이 포함된 정책에는 호스팅 영역을 생성할 권한도 필요합니다.

도메인 등록과 관련해 Route 53은 개별 리소스에 대한 권한 부여 또는 거부를 지원하지 않습니다.

route53resolver:*

Route 53 Resolver로 작업할 수 있게 해줍니다.

ssm:GetParametersByPath

새 별칭 레코드, 프라이빗 호스팅 영역 및 상태 확인을 생성할 때 공개적으로 사용 가능한 리전을 가져올 수 있습니다.

cloudfront:ListDistributions

별칭 대상(Alias Target)의 값이 CloudFront 배포인 별칭 레코드를 생성 및 업데이트할 수 있게 해줍니다.

Route 53 콘솔을 사용하지 않는 경우에는 이러한 권한이 필요하지 않습니다. Route 53은 콘솔에 표시할 배포 목록을 가져오는 데만 이 권한을 사용합니다.

elasticloadbalancing:DescribeLoadBalancers

[Alias Target]의 값이 ELB 로드 밸런서인 별칭 레코드를 생성 및 업데이트할 수 있게 해줍니다.

Route 53 콘솔을 사용하지 않는 경우에는 이러한 권한이 필요하지 않습니다. Route 53은 콘솔에 표시할 로드 밸런서 목록을 가져오는 데만 이 권한을 사용합니다.

elasticbeanstalk:DescribeEnvironments

별칭 대상(Alias Target)의 값이 Elastic Beanstalk 환경인 별칭 레코드를 생성 및 업데이트할 수 있게 해줍니다.

Route 53 콘솔을 사용하지 않는 경우에는 이러한 권한이 필요하지 않습니다. Route 53은 콘솔에 표시할 환경 목록을 가져오는 데만 이 권한을 사용합니다.

s3:ListAllamzn-s3-demo-bucket, s3:GetBucketLocations3:GetBucketWebsite

별칭 대상(Alias Target)의 값이 Amazon S3 버킷인 별칭 레코드를 생성 및 업데이트할 수 있게 해줍니다. (버킷이 웹 사이트 엔드포인트로 구성되어 있는 경우에만 Amazon S3 버킷의 별칭을 생성할 수 있습니다. s3:GetBucketWebsite는 필요한 구성 정보를 가져옵니다.)

Route 53 콘솔을 사용하지 않는 경우에는 이러한 권한이 필요하지 않습니다. Route 53은 콘솔에 표시할 버킷 목록을 가져오는 데만 이 권한을 사용합니다.

ec2:DescribeVpcsec2:DescribeRegions

프라이빗 호스팅 영역에 대한 작업을 할 수 있게 해줍니다.

나열된 모든 ec2 권한

Route 53 Resolver로 작업할 수 있게 해줍니다.

sns:ListTopics, sns:ListSubscriptionsByTopic, sns:CreateTopic, cloudwatch:DescribeAlarms, cloudwatch:PutMetricAlarm, cloudwatch:DeleteAlarms

CloudWatch 경보를 생성하고, 삭제하고, 볼 수 있게 해줍니다.

cloudwatch:GetMetricStatistics

CloudWatch 지표 상태 확인을 생성할 수 있게 해줍니다.

Route 53 콘솔을 사용하지 않는 경우에는 이러한 권한이 필요하지 않습니다. Route 53은 콘솔에 표시할 통계를 가져오는 데만 이 권한을 사용합니다.

apigateway:GET

별칭 대상(Alias Target)의 값이 Amazon API Gateway API인 별칭 레코드를 생성 및 업데이트할 수 있게 해줍니다.

Route 53 콘솔을 사용하지 않는 경우에는 이 권한이 필요하지 않습니다. Route 53은 콘솔에 표시할 API 목록을 가져오는 데만 이 권한을 사용합니다.

kms:*

DNSSEC 서명을 활성화하는 데 AWS KMS로 작업할 수 있게 해줍니다.

도메인 레코드 소유자에 대한 사용 권한 예제

리소스 레코드 세트 권한을 사용하면 AWS 사용자가 무엇을 업데이트하거나 수정할 수 있는지 제한하는 세분화된 권한을 설정할 수 있습니다. 자세한 내용은 IAM 정책 조건을 사용하여 세분화된 액세스 제어 구현 단원을 참조하십시오.

일부 시나리오에서는 호스팅 영역 소유자가 호스팅 영역의 전반적인 관리를 담당하고 조직의 다른 사람이 이러한 태스크의 하위 집합을 담당합니다. 예를 들어 DNSSEC 서명을 활성화한 호스팅 영역 소유자는 다른 사용자가 다른 태스크 중에 호스팅 영역의 리소스 세트 레코드(RR)를 추가하고 삭제할 수 있는 권한을 포함하는 IAM 정책을 생성하려고 할 수 있습니다. 호스팅 영역 소유자가 레코드 소유자 또는 다른 사용자에 대해 사용하도록 선택하는 특정 권한은 조직의 정책에 따라 달라집니다.

다음은 레코드 소유자가 RR, 트래픽 정책 및 상태 확인을 수정할 수 있도록 허용하는 IAM 정책의 예입니다. 이 정책을 사용하는 레코드 소유자는 영역 만들기 또는 삭제, 쿼리 로깅 활성화 또는 비활성화, 재사용 가능한 위임 집합 만들기 또는 삭제, DNSSEC 설정 변경과 같은 영역 수준 작업을 수행할 수 없습니다.

{ "Sid": "Do not allow zone-level modification ", "Effect": "Allow", "Action": [ "route53:ChangeResourceRecordSets", "route53:CreateTrafficPolicy", "route53:DeleteTrafficPolicy", "route53:CreateTrafficPolicyInstance", "route53:CreateTrafficPolicyVersion", "route53:UpdateTrafficPolicyInstance", "route53:UpdateTrafficPolicyComment", "route53:DeleteTrafficPolicyInstance", "route53:CreateHealthCheck", "route53:UpdateHealthCheck", "route53:DeleteHealthCheck", "route53:List*", "route53:Get*" ], "Resource": [ "*" ] }

DNSSEC 서명에 필요한 Route 53 고객 관리형 키 권한

Route 53에 대해 DNSSEC 서명을 사용하는 경우, Route 53에서 AWS Key Management Service(AWS KMS)의 고객 관리형 키를 기반으로 키 서명 키(KSK)를 생성합니다. DNSSEC 서명을 지원하는 기존 고객 관리형 키를 사용하거나 새 고객 관리형 키를 생성할 수 있습니다. Route 53은 고객 관리형 키에 액세스할 수 있는 권한이 있어야 KSK를 생성할 수 있습니다.

Route 53이 고객 관리형 키에 액세스할 수 있도록 하려면 고객 관리형 키 정책에 다음 설명이 포함되어 있는지 확인해야 합니다.

{ "Sid": "Allow Route 53 DNSSEC Service", "Effect": "Allow", "Principal": { "Service": "dnssec-route53.amazonaws.com" }, "Action": ["kms:DescribeKey", "kms:GetPublicKey", "kms:Sign"], "Resource": "*" }, { "Sid": "Allow Route 53 DNSSEC to CreateGrant", "Effect": "Allow", "Principal": { "Service": "dnssec-route53.amazonaws.com" }, "Action": ["kms:CreateGrant"], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": true } } }

혼동된 대리자 문제는 작업 권한이 없는 엔터티가 권한이 더 많은 엔터티에게 작업을 수행하도록 강요할 수 있는 보안 문제입니다. AWS KMS를 보호하려면 aws:SourceAccountaws:SourceArn 조건(둘 다 또는 하나)의 조합을 제공하여 리소스 기반 정책에서 서비스가 리소스에 대해 가지는 권한을 선택적으로 제한할 수 있습니다. aws:SourceAccount는 호스팅 영역 소유자의 AWS 계정 ID입니다. aws:SourceArn은 호스팅 영역의 ARN입니다.

다음은 추가할 수 있는 권한의 두 가지 예입니다.

{ "Sid": "Allow Route 53 DNSSEC Service", … "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "ArnEquals": { "aws:SourceArn": "arn:aws:route53:::hostedzone/HOSTED_ZONE_ID" } } },

– 또는 -

{ "Sid": "Allow Route 53 DNSSEC Service", … "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": ["1111-2222-3333","4444-5555-6666"] }, "ArnLike": { "aws:SourceArn": "arn:aws:route53:::hostedzone/*" } } },

자세한 내용은 IAM 사용 설명서혼동된 대리자 문제를 참조하세요.

고객 관리형 정책 예

Route 53 작업에 대한 권한을 허용하는 고유의 사용자 지정 IAM 정책을 생성할 수 있습니다. 지정된 권한이 필요한 IAM 그룹에 이러한 사용자 지정 정책을 연결할 수 있습니다. 이러한 정책은 Route 53 API, AWS SDK 또는 AWS CLI를 사용하는 경우에 유효합니다. 다음 예제에서는 몇 가지 일반적인 사용 사례의 권한을 보여 줍니다. 사용자에게 Route 53에 대한 전체 액세스 권한을 부여하는 정책에 대해서는 Amazon Route 53 콘솔 사용에 필요한 권한 섹션을 참조하세요.

예 1: 모든 호스팅 영역에 대한 읽기 액세스 허용

다음 권한 정책은 모든 호스팅 영역을 나열하고 호스팅 영역의 모든 레코드를 볼 수 있는 권한을 사용자에게 부여합니다.

{ "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "route53:GetHostedZone", "route53:ListResourceRecordSets" ], "Resource":"*" }, { "Effect":"Allow", "Action":["route53:ListHostedZones"], "Resource":"*" } ] }

예 2: 호스팅 영역 생성 및 삭제 허용

다음 권한 정책은 사용자가 호스팅 영역을 생성 및 업데이트하고, 변경 진행 상황을 추적할 수 있도록 합니다.

{ "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":["route53:CreateHostedZone"], "Resource":"*" }, { "Effect":"Allow", "Action":["route53:DeleteHostedZone"], "Resource":"*" }, { "Effect":"Allow", "Action":["route53:GetChange"], "Resource":"*" } ] }

예 3: 모든 도메인에 대한 전체 액세스 허용(퍼블릭 호스팅 영역만 해당)

다음 권한 정책은 도메인 등록 권한과 호스팅 영역 생성 권한을 비롯하여 사용자가 도메인 등록에 관한 모든 작업을 수행할 수 있도록 허용합니다.

{ "Version": "2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "route53domains:*", "route53:CreateHostedZone" ], "Resource":"*" } ] }

도메인을 등록하는 동시에 호스팅 영역이 생성되므로, 도메인 등록 권한이 포함된 정책에는 호스팅 영역을 생성할 권한도 필요합니다. (도메인 등록과 관련해 Route 53은 개별 리소스에 대한 권한 부여를 지원하지 않습니다.)

프라이빗 호스팅 영역 작업에 필요한 권한은 Amazon Route 53 콘솔 사용에 필요한 권한 단원을 참조하십시오.

예 4: 인바운드 및 아웃바운드 Route 53 엔드포인트 생성 허용

다음 권한 정책은 사용자가 Route 53 콘솔을 사용하여 Resolver 인바운드 및 아웃바운드 엔드포인트를 생성할 수 있도록 허용합니다.

이러한 권한 중 일부는 콘솔에서 엔드포인트를 생성하는 데에만 필요합니다. 프로그래밍 방식으로 인바운드 및 아웃바운드 엔드포인트를 생성할 수 있는 권한만 부여하려는 경우 이러한 권한을 생략할 수 있습니다.

  • route53resolver:ListResolverEndpoints를 사용하면 엔드포인트가 생성되었는지 확인할 수 있도록 인바운드 또는 아웃바운드 엔드포인트 목록을 볼 수 있습니다.

  • 가용 영역 목록을 표시하려면DescribeAvailabilityZones이 필요합니다.

  • DescribeVpcs는 VPC 목록을 표시해야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "route53resolver:CreateResolverEndpoint", "route53resolver:ListResolverEndpoints", "ec2:CreateNetworkInterface", "ec2:DescribeAvailabilityZones", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs" ], "Resource": "*" } ] }