세분화된 액세스 제어를 구현하는 데 IAM 정책 조건을 사용하여 리소스 레코드 세트 관리 - Amazon Route 53

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

세분화된 액세스 제어를 구현하는 데 IAM 정책 조건을 사용하여 리소스 레코드 세트 관리

Route 53에서 리소스 레코드 세트에 권한을 부여할 때 권한 정책이 적용되는 방식을 결정하는 조건을 지정할 수 있습니다.

Route 53에서는 IAM 정책을 사용해 권한을 부여할 때 조건을 지정할 수 있습니다(액세스 제어 참조). 예를 들어, 다음을 수행할 수 있습니다.

  • 단일 리소스 레코드 세트에 대한 액세스를 허용하는 권한을 부여합니다.

  • 사용자가 호스팅 영역에서 특정 DNS 레코드 유형(예: A 레코드 및 AAAA 레코드)의 모든 리소스 레코드 세트에 액세스할 수 있도록 권한을 부여합니다.

  • 사용자가 이름에 특정 문자열이 포함된 리소스 레코드 세트에 액세스할 수 있도록 권한을 부여합니다.

  • 사용자가 Route 53 콘솔에서 또는 ChangeResourceRecordSetsAPI를 사용할 때 일부 CREATE | UPSERT | DELETE 작업만 수행할 수 있도록 권한을 부여하십시오.

세분화된 권한을 무엇이든 조합하여 권한을 생성할 수도 있습니다.

IAM Condition 요소를 사용하여 세분화된 액세스 제어 정책을 구현합니다. 비즈니스 요구 사항에 따라 Condition 요소를 권한 정책에 추가하여, Route 53 리소스 레코드 세트의 레코드에 대한 액세스를 허용하거나 거부할 수 있습니다. 예를 들어, IAM 정책은 호스팅 영역의 개별 DNS 레코드에 액세스를 제한할 수 있습니다. 그런 다음 정책을 사용자, 그룹 또는 역할을 적용할 수 있습니다.

조건 키 값 정규화

정책 조건에 입력하는 값은 다음과 같이 형식을 지정하거나 정규화해야 합니다.

route53:ChangeResourceRecordSetsNormalizedRecordNames의 경우:

  • 모든 문자는 소문자여야 합니다.

  • DNS 이름 뒤에는 점이 없어야 합니다.

  • a~z, 0~9, -(하이픈), _(밑줄), .(마침표, 레이블 구분 기호) 이외의 문자는 \three-digit 8진수 코드 형태로 이스케이프 코드를 사용해야 합니다. 예를 들어 \052 는 * 문자의 8진수 코드입니다.

route53:ChangeResourceRecordSetsActions의 경우, 값은 다음 중 하나일 수 있으며 대문자여야 합니다.

  • CREATE

  • UPSERT

  • DELETE

route53:ChangeResourceRecordSetsRecordTypes의 경우

  • 값은 대문자여야 하며 Route 53에서 지원하는 모든 DNS 레코드 유형일 수 있습니다. 자세한 설명은 지원되는 DNS 레코드 유형 섹션을 참조하세요.

중요

원하는 대로 작업을 허용하거나 제한할 권한을 얻으려면 다음 규칙을 따라야 합니다.

정책이 예상한 대로 권한을 부여하거나 제한하는지 확인하려면 IAM 사용 설명서Access Analyzer정책 시뮬레이터를 사용하면 됩니다. Route 53 작업을 수행하는 테스트 사용자 또는 역할에 IAM 정책을 적용하여 권한을 검증할 수도 있습니다.

조건 지정: 조건 키 사용

AWS는 액세스 제어를 위해 IAM을 지원하는 모든 AWS 서비스에 대해 사전 정의된 조건 키(AWS 차원의 조건 키) 집합을 제공합니다. 예를 들어 aws:SourceIp 조건 키를 사용하여 요청자의 IP 주소를 확인한 후 작업을 수행하도록 허용할 수 있습니다. AWS 차원 키에 대한 정보와 목록은 IAM 사용 설명서사용 가능한 조건 키를 참조하세요.

참고

Route 53은 태그 기반 조건 키를 지원하지 않습니다.

다음 표는 리소스 레코드 세트에 적용되는 Route 53 서비스별 조건 키를 보여 줍니다.

Route 53 조건 키 API 작업 값 유형 설명
route53:ChangeResourceRecordSetsNormalizedRecordNames

ChangeResourceRecordSets

다중 값

요청의 ChangeResourceRecordSets DNS 레코드 이름 목록을 나타냅니다. 예상되는 동작을 가져오려면 다음과 같이 IAM 정책의 DNS 이름을 정규화해야 합니다.

  • 모든 문자는 소문자여야 합니다.

  • DNS 이름 뒤에는 점이 없어야 합니다.

  • a~z, 0~9, -(하이픈), _(밑줄), .(마침표, 레이블 구분 기호) 이외의 문자는 \three-digit 8진수 코드 형태로 이스케이프 코드를 사용해야 합니다.

route53:ChangeResourceRecordSetsRecordTypes

ChangeResourceRecordSets

다중 값

ChangeResourceRecordSets 요청의 DNS 레코드 유형 목록을 나타냅니다.

ChangeResourceRecordSetsRecordTypes은 Route 53에서 지원되는 모든 DNS 레코드 유형이 될 수 있습니다. 자세한 설명은 지원되는 DNS 레코드 유형 섹션을 참조하세요. 정책에는 모두 대문자로 입력해야 합니다.

route53:ChangeResourceRecordSetsActions

ChangeResourceRecordSets

다중 값

ChangeResourceRecordSets 요청에서 작업 목록을 나타냅니다.

ChangeResourceRecordSetsActions 값은 다음 중 하나일 수 있습니다(대문자여야 함).

  • CREATE

  • UPSERT

  • DELETE

정책 예: 조건을 사용하여 세분화된 액세스 구현

이 단원의 각 예제에서는 Effect 절을 Allow로 설정하고 허용할 작업, 리소스, 파라미터만 지정합니다. 액세스는 IAM 정책에 명시적으로 나열된 항목에만 허용됩니다.

경우에 따라, Effect 절을 Deny로 설정하고 정책의 모든 논리를 반전시켜 거부 기반 정책이 되도록 이러한 정책을 다시 작성할 수도 있습니다. 하지만 허용 기반 정책에 비해 올바르게 작성하기가 어려우므로 거부 기반 정책을 사용하지 않는 것이 좋습니다. 특히 Route 53의 경우 텍스트 정규화가 필요하기 때문에 사용하지 않는 것이 좋습니다.

특정 이름을 사용하는 DNS 레코드에 대한 액세스를 제한하는 권한 부여

다음 권한 정책은 example.com 및 marketing.example.com의 호스팅 영역 Z12345에서 ChangeResourceRecordSets 작업을 허용하는 권한을 부여합니다. route53:ChangeResourceRecordSetsNormalizedRecordNames 조건 키를 사용해 지정된 이름과 일치하는 레코드로만 사용자 작업을 제한합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "route53:ChangeResourceRecordSets", "Resource": "arn:aws:route53:::hostedzone/Z11111112222222333333", "Condition": { "ForAllValues:StringEquals":{ "route53:ChangeResourceRecordSetsNormalizedRecordNames": ["example.com", "marketing.example.com"] } } } ] }

ForAllValues:StringEquals는 다중 값 키에 적용되는 IAM 조건 연산자입니다. 위 정책의 조건은 ChangeResourceRecordSets의 모든 변경 사항에 example.com라는 DNS 이름이 있는 경우에만 작업을 허용합니다. 자세한 내용을 알아보려면 IAM 사용 설명서에서 IAM 조건 연산자다수의 키 또는 값을 사용하는 IAM 조건 단원을 참조하세요.

특정 접미사가 있는 이름과 일치하는 권한을 구현하기 위해 StringLike 또는 StringNotLike 조건 연산자가 포함된 정책에 IAM 와일드카드(*)를 사용할 수 있습니다. 다음 정책은 ChangeResourceRecordSets 작업의 모든 변경 사항에 “-beta.example.com”으로 끝나는 DNS 이름이 있을 때 작업을 허용합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "route53:ChangeResourceRecordSets", "Resource": "arn:aws:route53:::hostedzone/Z11111112222222333333", "Condition": { "ForAllValues:StringLike":{ "route53:ChangeResourceRecordSetsNormalizedRecordNames": ["*-beta.example.com"] } } } ] }
참고

IAM 와일드카드는 도메인 이름 와일드카드와 다릅니다. 와일드카드를 도메인 이름에 사용하는 방법은 다음 예를 참조하세요.

와일드카드가 포함된 도메인 이름과 일치하는 DNS 레코드에 대한 액세스를 제한하는 권한 부여

다음 권한 정책은 example.com의 호스팅 영역 Z12345에서 ChangeResourceRecordSets 작업을 허용하는 권한을 부여합니다. route53:ChangeResourceRecordSetsNormalizedRecordNames 조건 키를 사용해 *.example.com과 일치하는 레코드로만 사용자 작업을 제한합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "route53:ChangeResourceRecordSets", "Resource": "arn:aws:route53:::hostedzone/Z11111112222222333333", "Condition": { "ForAllValues:StringEquals":{ "route53:ChangeResourceRecordSetsNormalizedRecordNames": ["\\052.example.com"] } } } ] }

\052 는 DNS 이름의 * 문자에 대한 8진수 코드이고, \052\는 JSON 구문을 따르기 위해 \\로 이스케이프되었습니다.

특정 DNS 레코드에 대한 액세스를 제한하는 권한 부여

다음 권한 정책은 example.com의 호스팅 영역 Z12345에서 ChangeResourceRecordSets 작업을 허용하는 권한을 부여합니다. 세 가지 조건 키의 조합을 사용해 사용자 작업을 제한하여 특정 DNS 이름 및 유형의 DNS 레코드만 생성하거나 편집할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "route53:ChangeResourceRecordSets", "Resource": "arn:aws:route53:::hostedzone/Z11111112222222333333", "Condition": { "ForAllValues:StringEquals":{ "route53:ChangeResourceRecordSetsNormalizedRecordNames": ["example.com"], "route53:ChangeResourceRecordSetsRecordTypes": ["MX"], "route53:ChangeResourceRecordSetsActions": ["CREATE", "UPSERT"] } } } ] }
지정된 유형의 DNS 레코드만 생성 및 편집하도록 액세스를 제한하는 권한 부여

다음 권한 정책은 example.com의 호스팅 영역 Z12345에서 ChangeResourceRecordSets 작업을 허용하는 권한을 부여합니다. route53:ChangeResourceRecordSetsRecordTypes 조건 키를 사용해 특정 유형(A 및 AAAA)과 일치하는 레코드로만 사용자 작업을 제한합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "route53:ChangeResourceRecordSets", "Resource": "arn:aws:route53:::hostedzone/Z11111112222222333333", "Condition": { "ForAllValues:StringEquals":{ "route53:ChangeResourceRecordSetsRecordTypes": ["A", "AAAA"] } } } ] }