IAM 정책 예제 - AWS Key Management Service

IAM 정책 예제

이 단원에서는 다양한 AWS KMS 작업에 대한 권한을 허용하는 IAM 정책의 예를 제공합니다.

중요

다음 정책에 포함된 권한 중 일부는 KMS 키의 키 정책에서도 허용하는 경우에만 허용됩니다. 자세한 정보는 권한 참조을 참조하십시오.

JSON 정책 문서 작성 및 형식 지정에 대한 도움말은 IAM 사용 설명서IAM JSON 정책 참조를 참조하십시오.

사용자가 AWS KMS 콘솔에서 KMS 키를 볼 수 있도록 허용

다음 IAM 정책은 사용자가 AWS KMS 콘솔에 읽기 전용 액세스를 할 수 있도록 허용합니다. 이러한 권한이 있는 사용자는 AWS 계정의 모든 KMS 키를 볼 수 있지만 KMS 키를 만들거나 변경할 수는 없습니다.

AWS 관리형 키고객 관리형 키 페이지에서 KMS 키를 보려면, 키에 태그나 별칭이 없더라도 보안 주체에게 kms:ListKeys, kms:ListAliasestag:GetResources 권한이 필요합니다. 나머지 사용 권한, 특히 kms:DescribeKey는 KMS 키 세부 정보 페이지에서 선택적 KMS 키 테이블 열 및 데이터를 보는 데 필요합니다. iam:ListUsersiam:ListRoles 권한은 오류 없이 기본 보기에 키 정책을 표시하는 데 필요합니다. 사용자 지정 키 스토어 페이지의 데이터와 사용자 지정 키 저장소의 KMS 키에 대한 세부 정보를 보려면 보안 주체에 kms:DescribeCustomKeyStores 권한도 필요합니다.

사용자의 콜솔 액세스를 특정 KMS 키로 제한하면 콘솔에서 보이지 않는 각 KMS 키에 대한 오류를 표시합니다.

이 정책에는 두 가지 정책 설명이 포함됩니다. 첫 번째 정책 설명의 Resource 요소는 예제 AWS 계정의 모든 리전에 있는 모든 KMS 키에 대해 지정된 권한을 허용합니다. 콘솔 뷰어는 AWS KMS 콘솔이 보안 주체의 계정에 KMS 키만 표시하므로 추가 액세스가 필요하지 않습니다. 다른 AWS 계정의 KMS 키를 볼 수 있는 권한이 있는 경우에도 마찬가지입니다. 나머지 AWS KMS 및 IAM 권한에는 특정 KMS 키에 적용되지 않으므로 "Resource": "*" 요소가 필요합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadOnlyAccessForAllKMSKeysInAccount", "Effect": "Allow", "Action": [ "kms:GetPublicKey", "kms:GetKeyRotationStatus", "kms:GetKeyPolicy", "kms:DescribeKey", "kms:ListKeyPolicies", "kms:ListResourceTags", "tag:GetResources" ], "Resource": "arn:aws:kms:*:111122223333:key/*" }, { "Sid": "ReadOnlyAccessForOperationsWithNoKMSKey", "Effect": "Allow", "Action": [ "kms:ListKeys", "kms:ListAliases", "iam:ListRoles", "iam:ListUsers" ], "Resource": "*" } ] }

사용자가 KMS 키를 생성할 수 있도록 허용

다음 IAM 정책은 사용자가 모든 유형의 KMS 키를 만들 수 있도록 허용합니다. CreateKey 작업에서는 특정 AWS KMS 리소스(KMS 키 또는 별칭)를 사용하지 않기 때문에 Resource 요소의 값은 *입니다.

사용자를 특정 유형의 KMS 키로 제한하려면 kms:KeySpec, kms:KeyUsage, kms:KeyOrigin 조건 키를 사용합니다.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*" } }

키를 만드는 보안 주체에게는 몇 가지 관련 사용 권한이 필요할 수 있습니다.

  • kms:PutKeyPolicykms:CreateKey 권한이 있는 보안 주체는 KMS 키에 대한 초기 키 정책을 설정할 수 있습니다. 그러나, CreateKey 호출자는 KMS 키 정책을 변경할 수 있는 kms:PutKeyPolicy 권한이 있어야 하고, 권장되지 않는 CreateKeyBypassPolicyLockoutSafetyCheck 파라미터를 지정해야 합니다. CreateKey 호출자는 IAM 정책에서 KMS 키에 대한 kms:PutKeyPolicy 권한을 가져오거나 생성 중인 KMS 키의 키 정책에 이 권한을 포함할 수 있습니다.

  • kms:TagResourceCreateKey 작업 중에 KMS 키에 태그를 추가하려면 CreateKey 호출자는 IAM 정책에서 kms:TagResource 권한이 있어야 합니다. 새 KMS 키의 키 정책에 이 권한을 포함시키는 것만으로는 충분하지 않습니다. 그러나, CreateKey 호출자가 초기 키 정책에 kms:TagResource를 포함하는 경우 KMS 키가 생성된 후 별도의 호출에서 태그를 추가할 수 있습니다.

  • kms:CreateAlias — AWS KMS 콘솔에서 KMS 키를 생성하는 보안 주체는 KMS 키 및 별칭에 대한 kms:CreateAlias 권한이 있어야 합니다. (콘솔은 CreateKey, CreateAlias를 각각 한 번씩, 두 번 호출합니다.) IAM 정책에서 별칭 권한을 제공해야 합니다. 키 정책 또는 IAM 정책에서 KMS 키 권한을 제공할 수 있습니다. 자세한 내용은 별칭에 대한 액세스 제어 섹션을 참조하세요.

kms:CreateKey 외에도 다음 IAM 정책은 계정의 모든 별칭에 대한 AWS 계정 및 kms:CreateAlias 권한의 모든 KMS 키에 대한 kms:TagResource 권한을 제공합니다. 또한 IAM 정책에서만 제공할 수 있는 몇 가지 유용한 읽기 전용 권한도 포함되어 있습니다.

이 IAM 정책에는 키 정책에서 설정할 수 있는 권한 또는 기타 kms:PutKeyPolicy 권한이 포함되어 있지 않습니다. 하나의 KMS 키에만 적용되는 키 정책에 이러한 권한을 설정하는 것이 모범 사례입니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "IAMPermissionsForParticularKMSKeys", "Effect": "Allow", "Action": "kms:TagResource", "Resource": "arn:aws:kms:*:111122223333:key/*" }, { "Sid": "IAMPermissionsForParticularAliases", "Effect": "Allow", "Action": "kms:CreateAlias", "Resource": "arn:aws:kms:*:111122223333:alias/*" }, { "Sid": "IAMPermissionsForAllKMSKeys", "Effect": "Allow", "Action": [ "kms:CreateKey", "kms:ListKeys", "kms:ListAliases" ], "Resource": "*" } ] }

사용자가 특정 AWS 계정에서 KMS 키로 암호화와 복호화를 수행하도록 허용

다음 IAM 정책은 사용자가 에서 AWS 계정 111122223333의 모든 KMS 키로 데이터를 암호화 및 복호화할 수 있도록 허용합니다.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt" ], "Resource": "arn:aws:kms:*:111122223333:key/*" } }

사용자가 특정 AWS 계정 및 리전에서 KMS 키로 암호화와 복호화를 수행하도록 허용

다음 IAM 정책은 사용자가 미국 서부(오레곤) 리전에서 AWS 계정 111122223333의 모든 KMS 키로 데이터를 암호화 및 복호화할 수 있도록 허용합니다.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-west-2:111122223333:key/*" ] } }

사용자가 특정 KMS 키로 암호화와 해독을 수행하도록 허용

다음 IAM 정책은 사용자가 Resource 요소에 지정된 두 개의 KMS 키를 사용하여 데이터를 암호화하고 해독할 수 있도록 허용합니다. IAM 정책 설명에서 KMS 키를 지정할 때 KMS 키의 키 ARN을 사용해야 합니다.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321" ] } }

사용자가 KMS 키를 비활성화하거나 삭제하지 못하도록 차단

다음 IAM 정책은 다른 IAM 정책이나 키 정책에 관련 권한이 있더라도 사용자가 KMS 키를 비활성화하거나 삭제하는 것을 금지합니다. 권한을 명시적으로 거부하는 정책이 동일한 권한을 명시적으로 허용하는 정책을 비롯한 다른 모든 정책을 무시합니다. 자세한 정보는 키 액세스 문제 해결을 참조하십시오.

{ "Version": "2012-10-17", "Statement": { "Effect": "Deny", "Action": [ "kms:DisableKey", "kms:ScheduleKeyDeletion" ], "Resource": "*" } }