태그를 사용하여 KMS 키에 대한 액세스 제어 - AWS Key Management Service

태그를 사용하여 KMS 키에 대한 액세스 제어

KMS 키의 태그를 기반으로 AWS KMS keys에 대한 액세스를 제어할 수 있습니다. 예를 들어 보안 주체가 특정 태그가 있는 KMS 키만 활성화 및 비활성화할 수 있도록 허용하는 IAM 정책을 작성할 수 있습니다. 또는 IAM 정책을 사용하여 KMS 키에 특정 태그가 없으면 보안 주체가 암호화 작업에서 KMS 키를 사용하지 못하도록 할 수 있습니다.

이 기능은 속성 기반 액세스 제어(ABAC)에 대한 AWS KMS 지원의 일부입니다. 태그를 사용하여 AWS 리소스에 대한 액세스를 제어하는 방법에 대한 정보는 AWS의 ABAC란 무엇입니까? IAM 사용 설명서리소스 태그를 사용하여 AWS 리소스에 대한 액세스 제어를 참조하십시오. ABAC와 관련된 액세스 문제를 해결하는 방법에 대한 자세한 내용은 AWS KMS의 ABAC 문제 해결 단원을 참조하십시오.

참고

태그 및 별칭 변경으로 KMS 키 인증에 영향을 미치는 데 최대 5분이 소요될 수 있습니다. 최근 변경 사항은 권한 부여에 영향을 미치기 전에 API 작업에서 볼 수 있습니다.

AWS KMS는 aws:ResourceTag/tag-key 전역 조건 컨텍스트 키 사용을 지원하므로 KMS 키의 태그를 기반으로 KMS 키에 대한 액세스를 제어할 수 있습니다. 여러 KMS 키가 동일한 태그를 가질 수 있으므로 이 기능을 사용하면 선택한 KMS 키 집합에 사용 권한을 적용할 수 있습니다. 태그를 변경하여 집합의 KMS 키를 쉽게 변경할 수도 있습니다.

AWS KMS에서 aws:ResourceTag/tag-key 조건 키는 IAM 정책에서만 지원됩니다. 동일한 태그를 사용하여 여러 KMS 키에 대한 액세스를 제어할 수 있도록 설계되었습니다. 하나의 KMS 키에만 적용되는 키 정책에서는 지원되지 않습니다. 또한 리소스 조건은 기존 리소스를 사용하는 작업에만 적용됩니다. 따라서 aws:ResourceTag/tag-key를 사용하여 CreateKey, ListKeys 또는 ListAliases와 같은 작업에 대한 액세슬를 제어할 수 없습니다.

태그를 사용하여 액세스를 제어하면 사용 권한을 단순하고 확장 가능하며 유연하게 관리할 수 있습니다. 그러나 제대로 설계되고 관리되지 않으면 실수로 KMS 키에 대한 액세스를 허용하거나 거부할 수 있습니다. 태그를 사용하여 액세스를 제어하는 경우 다음 방법을 고려하세요.

  • 최소 권한 액세스를 강화하는 최고의 방식은 태그를 사용하는 것입니다. IAM 보안 주체에 사용하거나 관리해야 하는 KMS 키에만 필요한 권한만 부여합니다. 예를 들어 태그를 사용하여 프로젝트에 사용되는 KMS 키에 레이블을 지정합니다. 그런 다음 프로젝트 팀에 프로젝트 태그와 함께 KMS 키만 사용할 수 있는 권한을 부여합니다.

  • 보안 주체에게 태그를 추가, 편집 및 삭제할 수 있는 kms:TagResourcekms:UntagResource 권한을 부여할 때는 주의해야 합니다. 태그를 사용하여 KMS 키에 대한 액세스를 제어하는 경우 태그를 변경하면 보안 주체에게 사용 권한이 없는 KMS 키를 사용할 수 있는 권한이 부여될 수도 있습니다. 또한 다른 보안 주체가 작업을 수행하는 데 필요한 KMS 키에 대한 액세스를 거부할 수도 있습니다. 키 정책을 변경하거나 권한 부여를 생성할 권한이 없는 키 관리자는 태그를 관리할 권한이 있는 경우 KMS 키에 대한 액세스를 제어할 수 있습니다.

    가능하면 정책 조건(예: aws:RequestTag/tag-key 또는 aws:TagKeys)을 사용하여 보안 주체의 태그 지정 권한을를 특정 KMS 키의 특정 태그 또는 태그 패턴으로 제한합니다.

  • 현재 태그 지정 및 태그 해제 권한이 있는 AWS 계정 의 보안 주체를 검토하고 필요한 경우 조정합니다. 예를 들어, 키 관리자에 대한 콘솔 기본 키 정책에는 해당 KMS 키에 대한 kms:TagResourcekms:UntagResource 권한이 포함됩니다. IAM 정책은 모든 KMS 키에 대한 태그 및 태그 해제 권한을 허용할 수 있습니다. 예를 들어 AWSKeyManagementServicePowerUser 관리형 정책은 보안 주체가 모든 KMS 키에 대해 태그를 지정하고 태그를 해제하고 나열할 수 있도록 허용합니다.

  • 태그에 따라 달라지는 정책을 설정하기 전에 AWS 계정 에 있는 KMS 키의 태그를 검토합니다. 포함하려는 태그에만 정책을 적용해야 합니다. CloudTrail 로그CloudWatch 경보를 사용하여 KMS 키에 대한 액세스에 영향을 줄 수 있는 태그 변경 사항을 알립니다.

  • 태그 기반 정책 조건은 패턴 일치를 사용하며 태그의 특정 인스턴스에 연결되어 있지 않습니다. 태그 기반 조건 키를 사용하는 정책은 패턴과 일치하는 모든 새 태그와 기존 태그에 영향을 줍니다. 정책 조건과 일치하는 태그를 삭제했다가 다시 만들면 이전 태그와 마찬가지로 조건이 새 태그에 적용됩니다.

예를 들어 다음과 같은 IAM 정책을 살펴보십시오. 이를 통해 보안 주체는 아시아 태평양(싱가포르) 지역이고 "Project"="Alpha" 태그가 있는 계정의 KMS 키에서만 GenerateDataKeyWithoutPlaintextDecrypt 작업을 호출할 수 있습니다. 이 정책은 예제 Alpha 프로젝트의 역할에 연결할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "IAMPolicyWithResourceTag", "Effect": "Allow", "Action": [ "kms:GenerateDataKeyWithoutPlaintext", "kms:Decrypt" ], "Resource": "arn:aws:kms:ap-southeast-1:111122223333:key/*", "Condition": { "StringEquals": { "aws:ResourceTag/Project": "Alpha" } } } ] }

다음 예제 IAM 정책은 보안 주체가 특정 암호화 작업에 대해 계정의 모든 KMS 키를 사용하도록 허용합니다. 그러나 이는 보안 주체가 "Type"="Reserved" 태그가 있거나 "Type" 태그가 없는 KMS 키에서 AWS KMS 작업을 사용하는 것을 금지합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "IAMAllowCryptographicOperations", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:GenerateDataKey*", "kms:Decrypt", "kms:ReEncrypt*" ], "Resource": "arn:aws:kms:*:111122223333:key/*" }, { "Sid": "IAMDenyOnTag", "Effect": "Deny", "Action": "kms:*", "Resource": "arn:aws:kms:*:111122223333:key/*", "Condition": { "StringEquals": { "aws:ResourceTag/Type": "Reserved" } } }, { "Sid": "IAMDenyNoTag", "Effect": "Deny", "Action": "kms:*", "Resource": "arn:aws:kms:*:111122223333:key/*", "Condition": { "Null": { "aws:ResourceTag/Type": "true" } } } ] }