키 정책 검사 - AWS Key Management Service

키 정책 검사

키 정책은 KMS 키에 대한 액세스를 제어하는 기본적인 방법입니다. 모든 KMS 키에는 정확히 하나의 키 정책이 있습니다.

키 정책이 기본 키 정책으로 구성되거나 포함하는 경우 키 정책은 계정의 IAM 관리자가 IAM 정책을 사용하여 KMS 키에 대한 액세스를 제어하도록 허용합니다. 또한 키 정책이 다른 AWS 계정에 KMS 키를 사용할 수 있는 권한을 부여하는 경우 외부 계정의 IAM 관리자는 IAM 정책을 사용하여 해당 권한을 위임할 수 있습니다. KMS 키에 액세스할 수 있는 보안 주체의 전체 목록을 결정하려면 IAM 정책을 검사하십시오.

계정에서 AWS KMS 고객 관리형 키 또는 AWS 관리형 키의 키 정책을 보려면 AWS KMS API에서 AWS Management Console 또는 GetKeyPolicy 작업를 사용합니다. 키 정책을 보려면 KMS 키에 대한 kms:GetKeyPolicy 권한이 있어야 합니다. KMS 키에 대한 키 정책을 보는 방법은 키 정책 보기 단원을 참조하십시오.

키 정책 문서를 검사하고 각 정책 문서의 Principal 요소에 지정된 모든 보안 주체를 기록해 둡니다. Principal 요소의 IAM 사용자, IAM 역할, AWS 계정은 이 KMS 키에 대한 액세스 권한이 있습니다.

참고

조건을 사용하여 키 정책을 제한하지 않는 한 권한을 허용하는 키 정책문에서 보안 주체를 별표(*)로 설정하지 마십시오. 별표는 다른 정책문에서 명백하게 거부한 경우를 제외하고 모든 AWS 계정 내 모든 자격 증명에게 KMS 키를 사용할 수 있도록 허가합니다. 다른 AWS 계정의 사용자는 본인의 계정에서 KMS 키를 사용할 수 있는 IAM 권한만 있으면 됩니다.

다음 예제는 기본 키 정책에 수록된 정책문을 사용하여 이를 수행하는 방법을 보여줍니다.

예 정책문 1

{ "Sid": "Enable IAM policies", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:root"}, "Action": "kms:*", "Resource": "*" }

정책문 1에서 arn:aws:iam::111122223333:root는 AWS 계정 111122223333을 나타냅니다. 기본적으로 이와 같은 정책문은 AWS Management Console을 이용해 새 KMS 키를 생성하는 경우 키 정책 문서에 포함되어 있습니다. 또한 새 KMS 키를 프로그래밍 방식으로 생성하지만 키 정책을 제공하지 않는 경우도 포함되어 있습니다.

AWS 계정(루트 사용자)에 대한 액세스를 허용하는 문이 포함된 키 정책 문서를 통해 해당 계정의 IAM 정책은 KMS 키에 대한 액세스를 허용할 수 있습니다. 즉 이 계정의 IAM 사용자와 역할은 키 정책 문서에 보안 주체로 명시되지 않은 경우에도 KMS 키에 액세스할 수 있습니다. 보안 주체로 기록된 모든 AWS 계정에서 신중하게 모든 IAM 정책을 검사하여 이 KMS 키에 대한 액세스를 허용하는지 파악하십시오.

예 정책문 2

{ "Sid": "Allow access for Key Administrators", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/KMSKeyAdmin"}, "Action": [ "kms:Describe*", "kms:Put*", "kms:Create*", "kms:Update*", "kms:Enable*", "kms:Revoke*", "kms:List*", "kms:Disable*", "kms:Get*", "kms:Delete*", "kms:ScheduleKeyDeletion", "kms:CancelKeyDeletion" ], "Resource": "*" }

정책문 2에서 arn:aws:iam::111122223333:user/KMSKeyAdmin은 AWS 계정 111122223333의 KMSKeyAdmin이라는 IAM 사용자를 나타냅니다. 이 사용자는 KMS 키 관리를 위한 관리 작업인 정책문에 나열된 작업을 수행할 수 있습니다.

예 정책문 3

{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:role/EncryptionApp"}, "Action": [ "kms:DescribeKey", "kms:GenerateDataKey*", "kms:Encrypt", "kms:ReEncrypt*", "kms:Decrypt" ], "Resource": "*" }

정책 문 3에서 arn:aws:iam::111122223333:role/EncryptionApp은 AWS 계정 111122223333에서 EncryptionApp이라는 IAM 역할을 나타냅니다. 이 역할을 맡을 수 있는 보안 주체는 정책 문서에 수록된 작업, 즉 KMS 키로 데이터를 암호화하고 복호화하기 위한 암호화 작업을 수행할 수 있습니다.

예 정책문 4

{ "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:role/EncryptionApp"}, "Action": [ "kms:ListGrants", "kms:CreateGrant", "kms:RevokeGrant" ], "Resource": "*", "Condition": {"Bool": {"kms:GrantIsForAWSResource": true}} }

정책 문 4에서 arn:aws:iam::111122223333:role/EncryptionApp은 AWS 계정 111122223333에서 EncryptionApp이라는 IAM 역할을 나타냅니다. 이 역할을 맡을 수 있는 보안 주체는 정책 문서에 수록된 작업을 수행할 수 있습니다. 예제 정책문 3에서 허용된 작업과 결합된 이러한 작업은 AWS KMS와 통합되는 대부분의 AWS 서비스, 특히 권한 부여를 사용하는 서비스에 KMS 키 사용을 위임하는 데 필요한 작업입니다. Condition 요소는 위임이 AWS와 통합되는 AWS KMS 서비스이고 승인을 위해 권한 부여를 사용하는 경우에만 위임이 허용되도록 보장합니다.

키 정책 문서에서 보안 주체를 지정할 수 있는 모든 다양한 방법을 알아보려면 IAM 사용 설명서보안 주체 지정을 참조하십시오.

AWS KMS 키 정책에 대한 자세한 내용은 AWS KMS의 키 정책 단원을 참조하십시오.