조건 지정: 사용자 지정 태그 사용 - Amazon Aurora

조건 지정: 사용자 지정 태그 사용

Amazon Aurora에서는 사용자 지정 태그를 사용하여 IAM 정책에서 조건을 지정할 수 있습니다.

예를 들어 이름이 environment인 태그를 beta, staging, production 등의 값으로 DB 인스턴스에 추가한다고 가정하겠습니다. 그러면 environment 태그 값에 따라 특정 사용자를 DB 인스턴스로 제한하는 정책을 생성할 수 있습니다.

참고

사용자 지정 태그 식별자는 대/소문자를 구분합니다.

다음 표에는 Condition 요소에서 사용할 수 있는 RDS 태그 식별자가 나와 있습니다.

RDS 태그 식별자 적용 대상
db-tag 읽기 전용 복제본을 포함하는 DB 인스턴스입니다.
snapshot-tag DB 스냅샷
ri-tag 예약 DB 인스턴스
og-tag DB 옵션 그룹
pg-tag DB 파라미터 그룹
subgrp-tag DB 서브넷 그룹
es-tag 이벤트 구독
cluster-tag DB 클러스터
cluster-pg-tag DB 클러스터 파라미터 그룹
cluster-snapshot-tag DB 클러스터 스냅샷

사용자 지정 태그 조건의 구문은 다음과 같습니다.

"Condition":{"StringEquals":{"rds:rds-tag-identifier/tag-name": ["value"]} }

예를 들어, 다음 Condition 요소는 태그 이름이 environment이고 태그 값이 production인 DB 인스턴스에 적용됩니다.

"Condition":{"StringEquals":{"rds:db-tag/environment": ["production"]} }

태그 생성에 대한 자세한 내용은 Amazon Aurora 및 Amazon RDS 리소스에 태그 지정 단원을 참조하십시오.

중요

태깅을 사용하여 RDS 리소스에 대한 액세스를 관리하는 경우 RDS 리소스의 태그에 대한 액세스의 보안을 유지하는 것이 좋습니다. AddTagsToResourceRemoveTagsFromResource 작업에 대한 정책을 생성하여 태그에 대한 액세스를 관리할 수 있습니다. 예를 들어, 다음 정책은 모든 리소스에 대해 태그를 추가하거나 제거할 수 있는 사용자의 권한을 거부합니다. 그런 다음 특정 사용자가 태그를 추가하거나 제거할 수 있도록 허용하기 위한 정책을 생성할 수 있습니다.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"DenyTagUpdates", "Effect":"Deny", "Action":[ "rds:AddTagsToResource", "rds:RemoveTagsFromResource" ], "Resource":"*" } ] }

Aurora 작업 목록을 보려면 서비스 권한 부여 참조에서 Amazon RDS에서 정의한 작업을 참조하세요.

정책 예: 사용자 지정 태그 사용

다음은 Amazon Aurora IAM 권한 정책에서 사용자 지정 태그를 사용할 수 있는 방법의 예입니다. Amazon Aurora 리소스에 태그를 추가하는 방법에 대한 자세한 내용은 Amazon RDS의 Amazon 리소스 이름(ARN) 단원을 참조하십시오.

참고

모든 예는 us-west-2 리전을 사용하며 가상의 계정 ID를 포함합니다.

예제 1: 두 개의 값을 갖는 특정 태그를 사용하는 리소스 작업에 대한 권한 부여

다음 정책은 development 또는 test로 설정된 stage 태그를 사용하여 DB 인스턴스에서 CreateDBSnapshot API 작업을 수행할 수 있는 권한을 허용합니다.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowAnySnapshotName", "Effect":"Allow", "Action":[ "rds:CreateDBSnapshot" ], "Resource":"arn:aws:rds:*:123456789012:snapshot:*" }, { "Sid":"AllowDevTestToCreateSnapshot", "Effect":"Allow", "Action":[ "rds:CreateDBSnapshot" ], "Resource":"arn:aws:rds:*:123456789012:db:*", "Condition":{ "StringEquals":{ "rds:db-tag/stage":[ "development", "test" ] } } } ] }

다음 정책은 development 또는 test로 설정된 stage 태그를 사용하여 DB 인스턴스에서 ModifyDBInstance API 작업을 수행할 수 있는 권한을 허용합니다.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowChangingParameterOptionSecurityGroups", "Effect":"Allow", "Action":[ "rds:ModifyDBInstance" ], "Resource":" [ "arn:aws:rds:*:123456789012:pg:*", "arn:aws:rds:*:123456789012:secgrp:*", "arn:aws:rds:*:123456789012:og:*" ] }, { "Sid":"AllowDevTestToModifyInstance", "Effect":"Allow", "Action":[ "rds:ModifyDBInstance" ], "Resource":"arn:aws:rds:*:123456789012:db:*", "Condition":{ "StringEquals":{ "rds:db-tag/stage":[ "development", "test" ] } } } ] }

예제 2: 지정된 DB 파라미터 그룹을 사용하는 DB 인스턴스를 만들 수 있는 권한을 명시적으로 거부

다음 정책은 특정 태그 값이 있는 DB 파라미터 그룹을 사용하는 DB 인스턴스를 만들 수 있는 권한을 명시적으로 거부합니다. DB 인스턴스를 생성할 때 특정 고객 생성 DB 파라미터 그룹을 사용해야 할 경우 이 정책을 적용할 수 있습니다. Deny를 사용하는 정책은 더 광범위한 정책에서 부여한 액세스 권한을 제한하기 위해 가장 자주 사용됩니다.

명시적으로 거부하는 권한은 이미 부여된 다른 모든 권한에 우선합니다. 따라서 부여하지 않으려는 권한을 자격 증명이 우연히 획득하지 않도록 할 수 있습니다.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"DenyProductionCreate", "Effect":"Deny", "Action":"rds:CreateDBInstance", "Resource":"arn:aws:rds:*:123456789012:pg:*", "Condition":{ "StringEquals":{ "rds:pg-tag/usage":"prod" } } } ] }

예제 3: 인스턴스 이름에 사용자 이름이 접두사로 붙은 DB 인스턴스 작업에 대한 권한 부여

다음 정책은 DB 인스턴스 이름에 사용자 이름이 접두사로 붙어 있고 AddTagsToResource와 동일한 RemoveTagsFromResource라는 태그가 있거나 stage라는 태그가 없는 DB 인스턴스에서 API(devo 또는 stage 제외)를 호출할 수 있는 권한을 허용합니다.

정책의 Resource 줄은 Amazon 리소스 이름(ARN)을 기준으로 리소스를 식별합니다. Amazon Aurora 리소스에서 ARN을 사용하는 방법에 대한 자세한 내용은 Amazon RDS의 Amazon 리소스 이름(ARN) 단원을 참조하십시오.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowFullDevAccessNoTags", "Effect":"Allow", "NotAction":[ "rds:AddTagsToResource", "rds:RemoveTagsFromResource" ], "Resource":"arn:aws:rds:*:123456789012:db:${aws:username}*", "Condition":{ "StringEqualsIfExists":{ "rds:db-tag/stage":"devo" } } } ] }