태그에 대한 액세스 제어
태그를 추가, 보기 및 삭제하려면 AWS KMS 콘솔 또는 API를 사용하여 보안 주체에 태그 권한이 필요합니다. 키 정책에서 이러한 권한을 제공할 수 있습니다. IAM 정책(VPC 엔드포인트 정책 포함)에서도 이를 제공할 수 있지만, 이는 키 정책에서 허용하는 경우에만 가능합니다. AWSKeyManagementServicePowerUser 관리형 정책은 보안 주체가 계정이 액세스할 수 있는 모든 KMS 키에 대해 태그를 지정하고 태그를 해제하고 나열할 수 있도록 허용합니다.
태그에 AWS 전역 조건 키를 사용하여 이러한 권한을 제한할 수도 있습니다. AWS KMS에서 이러한 조건은 태그 지정 작업(예: TagResource 및 UntagResource)에 대한 액세스를 제어할 수 있습니다.
참고
보안 주체에게 태그 및 별칭을 관리할 수 있는 권한을 부여하는 데 주의해야 합니다. 태그나 별칭을 변경하면 고객 관리형 키의 권한을 허용하거나 거부할 수 있습니다. 자세한 내용은 AWS KMS의 ABAC 및 태그를 사용하여 KMS 키에 대한 액세스 제어 섹션을 참조하세요.
예제 정책과 자세한 내용은 IAM 사용 설명서의 태그 키를 기반으로 액세스 제어 섹션을 참조하십시오.
태그를 만들고 관리할 수 있는 권한은 다음과 같습니다.
- kms:TagResource
-
보안 주체가 태그를 추가하거나 편집할 수 있습니다. KMS 키를 생성하는 동안 태그를 추가하려면 보안 주체에 특정 KMS 키로 제한되지 않는 IAM 정책에 대한 권한이 있어야 합니다.
- kms:ListResourceTags
-
보안 주체가 KMS 키의 태그를 볼 수 있도록 허용합니다.
- kms:UntagResource
-
보안 주체가 KMS 키에서 태그를 삭제할 수 있도록 허용합니다.
정책에서 태그 지정 권한
키 정책 또는 IAM 정책에서 태그 지정 권한을 제공할 수 있습니다. 예를 들어 다음 예제 키 정책은 KMS 키에 대한 태그 지정 권한을 사용자에게 제공합니다. 예를 들어 관리자 또는 개발자 역할로 가정할 수 있는 모든 사용자에게 태그를 볼 수 있는 권한을 제공합니다.
{ "Version": "2012-10-17", "Id": "example-key-policy", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:root"}, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow all tagging permissions", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::111122223333:user/LeadAdmin", "arn:aws:iam::111122223333:user/SupportLead" ]}, "Action": [ "kms:TagResource", "kms:ListResourceTags", "kms:UntagResource" ], "Resource": "*" }, { "Sid": "Allow roles to view tags", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::111122223333:role/Administrator", "arn:aws:iam::111122223333:role/Developer" ]}, "Action": "kms:ListResourceTags", "Resource": "*" } ] }
보안 주체에게 여러 KMS 키에 대한 태그 지정 권한을 부여하려면 IAM 정책을 사용할 수 있습니다. 이 정책이 유효하려면 각 KMS 키의 키 정책으로 인해 계정이 IAM 정책을 사용하여 KMS 키에 대한 액세스를 제어할 수 있어야 합니다.
예를 들어, 다음 IAM 정책은 보안 주체가 KMS 키를 생성할 수 있도록 허용합니다. 또한 지정된 계정의 모든 KMS 키에 태그를 만들고 관리할 수 있습니다. 이 조합을 통해 보안 주체가 CreateKey 작업의 태그 파라미터를 사용하여 KMS 키를 만드는 동안 KMS 키에 태그를 추가할 수 있습니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "IAMPolicyCreateKeys", "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*" }, { "Sid": "IAMPolicyTags", "Effect": "Allow", "Action": [ "kms:TagResource", "kms:UntagResource", "kms:ListResourceTags" ], "Resource": "arn:aws:kms:*:111122223333:key/*" } ] }
태그 지정 권한 제한
정책 조건을 사용하여 태그 지정 권한을 제한할 수 있습니다. 다음 정책 조건을 kms:TagResource
및 kms:UntagResource
권한에 적용할 수 있습니다. 예를 들어, aws:RequestTag/tag-key
조건을 사용하여 보안 주체가 특정 태그만 추가하거나 보안 주체가 특정 태그 키를 사용하여 태그를 추가하지 못하도록 할 수 있습니다. 또는 kms:KeyOrigin
조건을 사용하여 보안 주체가 가져온 키 구성 요소가 있는 KMS 키에 태그를 지정하거나 태그를 해제하지 못하도록 할 수 있습니다.
태그를 사용하여 KMS 키에 대한 액세스를 제어할 때 가장 좋은 방법은 aws:RequestTag/tag-key
또 는aws:TagKeys
조건 키를 사용하여 허용되는 태그 (또는 태그 키)를 결정하는 것입니다.
예를 들어 다음 IAM 정책은 이전 것과 비슷합니다. 그러나 이 정책은 보안 주체가 Project
태그 키가 있는 태그에 대해서만 태그(TagResource
)를 생성하고 태그 UntagResource
를 삭제할 수 있도록 허용합니다.
왜냐하면 TagResource
및 UntagResource
요청에는 여러 태그가 포함될 수 있으므로 ForAllValues
또는 ForAnyValue
집합 연산자와 aws:TagKeys 조건을 지정해야 합니다. ForAnyValue
연산자를 사용하려면 요청의 태그 키 중 적어도 하나가 정책의 태그 키 중 하나와 일치해야 합니다. ForAllValues
연산자를 사용하려면 요청의 모든 태그 키가 정책의 태그 키 중 하나와 일치해야 합니다. ForAllValues
연산자는 요청에 태그가 없는 경우에도 true
를 반환하지만 태그가 지정되지 않으면 TagResource 및 UntagResource가 실패합니다. 집합 연산자에 대한 자세한 내용은 IAM 사용 설명서의 여러 키 및 값 사용을 참조하십시오.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "IAMPolicyCreateKey", "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*" }, { "Sid": "IAMPolicyViewAllTags", "Effect": "Allow", "Action": "kms:ListResourceTags", "Resource": "arn:aws:kms:*:111122223333:key/*" }, { "Sid": "IAMPolicyManageTags", "Effect": "Allow", "Action": [ "kms:TagResource", "kms:UntagResource" ], "Resource": "arn:aws:kms:*:111122223333:key/*", "Condition": { "ForAllValues:StringEquals": {"aws:TagKeys": "Project"} } } ] }