조건 지정: 사용자 지정 태그 사용
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 리소스의 태그에 대한 액세스의 보안을 유지하는 것이 좋습니다. AddTagsToResource
및 RemoveTagsFromResource
작업에 대한 정책을 생성하여 태그에 대한 액세스를 관리할 수 있습니다. 예를 들어, 다음 정책은 모든 리소스에 대해 태그를 추가하거나 제거할 수 있는 사용자의 권한을 거부합니다. 그런 다음 특정 사용자가 태그를 추가하거나 제거할 수 있도록 허용하기 위한 정책을 생성할 수 있습니다.
{ "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" } } } ] }