다른 계정의 사용자가 CMK를 사용하도록 허용 - AWS Key Management Service

다른 계정의 사용자가 CMK를 사용하도록 허용

다른 AWS 계정의 IAM 사용자 또는 역할이 계정에서 AWS KMS key(KMS 키)를 사용하도록 허용할 수 있습니다. 교차 계정 액세스에는 KMS 키의 키 정책과 외부 사용자 계정의 IAM 정책에 대한 권한이 필요합니다.

교차 계정 권한은 다음 작업에만 적용됩니다.

다른 계정의 사용자에게 다른 작업에 대한 권한을 부여하면 해당 권한은 영향을 주지 않습니다. 예를 들어 다른 계정의 보안 주체에 IAM 정책의 kms:ListKeys 권한을 부여하거나 키 정책의 KMS 키에 대한 kms:ScheduleKeyDeletion 권한을 부여하는 경우 리소스에서 해당 작업을 호출하려는 사용자의 시도는 여전히 실패합니다.

AWS KMS 작업에 대해 서로 다른 계정에서 KMS 키를 사용하는 방법에 대한 자세한 내용은 AWS KMS 권한다른 계정에서 KMS 키 사용교차 계정 사용(Cross-account use) 열을 참조하십시오. 또한 AWS Key Management Service API 참조서의 각 API 설명에 교차 계정 사용 섹션도 있습니다.

주의

보안 주체에 KMS 키를 사용할 수 있는 권한을 부여할 때는 주의해야 합니다. 가능하면 최소 권한 원칙을 따르십시오. 사용자에게 필요한 작업에만 필요한 KMS 키에만 액세스할 수 있도록 합니다.

또한 익숙하지 않은 KMS 키, 특히 다른 계정의 KMS 키를 사용할 때는 주의해야 합니다. 악의적인 사용자는 KMS 키를 사용하여 본인이나 계정에 대한 정보를 얻을 수 있는 권한을 부여할 수 있습니다.

정책을 사용하여 계정의 리소스를 보호하는 방법에 대한 자세한 내용은 IAM 정책 모범 사례 단원을 참조하십시오.

다른 계정의 사용자 및 역할에게 KMS 키를 사용할 수 있는 권한을 부여하려면 다음 두 가지 유형의 정책을 사용해야 합니다.

  • KMS 키의 키 정책은 외부 계정(또는 외부 계정의 사용자 및 역할)에게 KMS 키를 사용할 수 있는 권한을 부여해야 합니다. 키 정책은 KMS 키를 소유하는 계정에 있습니다.

  • 외부 계정의 IAM 정책은 키 정책 권한을 해당 사용자 및 역할에 위임해야 합니다. 이러한 정책은 외부 계정에 설정되며 해당 계정의 사용자 및 역할에 권한을 부여합니다.

키 정책은 누가 KMS 키에 대한 액세스 권한을 가질 수 있는지를 결정합니다. IAM 정책은 누가 KMS 키에 대한 액세스 권한을 가질 수 있는지를 결정합니다. 키 정책과 IAM 정책만으로는 충분하지 않습니다. 둘 다 변경해야 합니다.

키 정책을 편집하려면 AWS Management Console에서 정책 보기를 사용하거나 CreateKey 또는 PutKeyPolicy작업을 사용할 수 있습니다. KMS 키를 생성할 때 키 정책을 설정하는 방법에 대한 도움말은 다른 계정이 사용할 수 있는 KMS 키 생성 단원을 참조하십시오.

IAM 정책 편집에 대한 도움말은 AWS KMS에서 IAM 정책 사용 단원을 참조하십시오.

키 정책과 IAM 정책이 함께 작동하여 다른 계정에서 KMS 키 사용을 허용하는 방법을 보여 주는 예는 예제 2: 사용자가 다른 AWS 계정에서 KMS 키를 사용할 수 있는 권한이 있는 역할 담당 단원을 참조하십시오.

AWS CloudTrail 로그에서 KMS 키에 대한 결과 교차 계정 AWS KMS 작업을 볼 수 있습니다. 다른 계정의 KMS 키를 사용하는 작업은 호출자의 계정과 KMS 키 소유자 계정 모두에 기록됩니다.

참고

이 주제의 예제에서는 키 정책과 IAM 정책을 함께 사용하여 KMS 키에 대한 액세스를 제공하고 제한하는 방법을 보여 줍니다. 이러한 일반 예제는 KMS 키에서 특정 AWS 서비스에 필요한 권한을 나타내려는 것이 아닙니다. AWS 서비스에 필요한 권한에 대한 자세한 내용은 서비스 설명서의 암호화 주제를 참조하세요.

1단계: 로컬 계정에서 키 정책 문 추가

KMS 키에 대한 키 정책은 누가 KMS 키에 액세스할 수 있으며 어떤 작업을 수행할 수 있는지에 대한 주요 결정 요인입니다. 키 정책은 항상 KMS 키를 소유하는 계정에 있습니다. IAM 정책과 달리, 키 정책은 리소스를 지정하지 않습니다. 리소스는 키 정책과 연결된 KMS 키입니다.

외부 계정에게 KMS 키를 사용할 수 있는 권한을 부여하려면 외부 계정을 지정하는 문을 키 정책에 추가합니다. 키 정책의 Principal 요소에 외부 계정의 Amazon 리소스 이름(ARN)을 입력합니다.

참고

KMS 키의 키 정책은 외부 계정(또는 외부 계정의 사용자 및 역할)에게 KMS 키를 사용할 수 있는 권한을 부여해야 합니다.

키 정책에서 외부 계정을 지정하면 외부 계정의 IAM 관리자는 IAM 정책을 사용하여 해당 권한을 외부 계정의 사용자 및 역할에게 위임할 수 있습니다. 또한 키 정책에 지정된 작업 중 어떤 작업을 사용자 및 역할이 수행할 수 있는지도 결정할 수 있습니다.

외부 계정 및 보안 주체에 부여된 사용 권한은 KMS 키와 키 정책을 호스팅하는 리전에서 외부 계정을 사용하도록 설정한 경우에만 유효합니다. 기본적으로 사용하도록 설정되지 않은 리전(“옵트인 리전”)에 대한 자세한 내용은 AWS 일반 참조AWS 리전 관리를 참조하십시오.

예를 들어 계정 444455556666이 계정 111122223333에서 대칭 암호화 KMS 키를 사용하도록 허용한다고 가정합니다. 이렇게 하려면 다음 예제와 같은 정책 문을 111122223333 계정의 KMS 키에 대한 키 정책에 추가합니다. 이 정책문은 대칭 암호화 KMS 키에 대한 암호화 작업에서 KMS 키를 사용할 수 있는 권한을 외부 계정 444455556666에 부여합니다.

{ "Sid": "Allow an external account to use this KMS key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::444455556666:root" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }

외부 계정에게 권한을 부여하는 대신, 키 정책에서 특정 외부 사용자 및 역할을 지정할 수 있습니다. 하지만 이러한 사용자 및 역할은 외부 계정의 IAM 관리자가 적절한 IAM 정책을 해당 자격 증명에 연결할 때까지 KMS 키를 사용할 수 없습니다. IAM 정책은 키 정책에 지정된 외부 사용자 및 역할의 일부 또는 전부에게 권한을 부여할 수 있습니다. 그리고 이 정책은 키 정책에 지정된 작업의 일부 또는 전부를 허용할 수 있습니다.

키 정책에서 자격 증명을 지정하면 외부 계정의 IAM 관리자가 제공할 수 있는 권한이 제한됩니다. 하지만 이렇게 하면 두 계정의 정책 관리가 더 복잡해집니다. 예를 들어, 사용자 또는 역할을 추가해야 한다고 가정합니다. KMS 키를 소유하는 계정에서 키 정책에 해당 자격 증명을 추가하고 자격 증명의 계정에서 IAM 정책을 생성해야 합니다.

키 정책에서 특정 외부 사용자 또는 역할을 지정하려면 Principal 요소에 외부 계정의 사용자 또는 역할의 Amazon 리소스 이름(ARN)을 입력합니다.

예를 들어, 다음 예제 키 정책 문은 444455556666 계정의 ExampleRole 및 ExampleUser가 111122223333 계정의 KMS 키를 사용하도록 허용합니다. 이 키 정책문은 대칭 암호화 KMS 키에 대한 암호화 작업에서 KMS 키를 사용할 수 있는 권한을 외부 계정 444455556666에 부여합니다.

{ "Sid": "Allow an external account to use this KMS key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::444455556666:role/ExampleRole", "arn:aws:iam::444455556666:user/ExampleUser" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }
참고

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

또한 외부 계정에게 어떤 권한을 부여할지도 결정해야 합니다. KMS 키에 대한 권한 목록은 AWS KMS 권한 단원을 참조하세요.

외부 계정에게 암호화 작업에서 KMS 키를 사용할 수 있는 권한을 부여하고 AWS KMS와 통합된 AWS 서비스에 KMS 키를 사용할 수 있습니다. 이렇게 하려면 AWS Management Console의 키 사용자 단원을 사용합니다. 자세한 내용은 다른 계정이 사용할 수 있는 KMS 키 생성 단원을 참조하세요.

키 정책에서 기타 권한을 지정하려면 키 정책 문서를 편집합니다. 예를 들어, 암호화 해제할 수 있지만 암호화할 수 없는 권한을 부여하거나, KMS 키를 볼 수 있지만 사용할 수 없는 권한을 부여해야 할 수 있습니다. 키 정책문을 편집하려면 AWS Management Console에서 정책 보기를 사용하거나 CreateKey 또는 PutKeyPolicy작업을 사용할 수 있습니다.

2단계: 외부 계정에서 IAM 정책 추가

KMS 키를 소유하는 계정의 키 정책은 권한의 유효 범위를 설정합니다. 그러나 해당 권한을 위임하는 IAM 정책을 연결하거나 권한 부여를 사용하여 KMS 키에 대한 액세스를 관리할 때까지 외부 계정의 사용자 및 역할은 KMS 키를 사용할 수 없습니다. IAM 정책은 외부 계정에서 설정됩니다.

키 정책이 외부 계정에게 권한을 부여하는 경우 계정의 어떠한 사용자 또는 역할에든 IAM 정책을 연결할 수 있습니다. 키 정책이 지정된 사용자 또는 역할에게 권한을 부여하는 경우 IAM 정책은 지정된 사용자 및 역할의 일부 또는 전부에게만 해당 권한을 부여할 수 있습니다. IAM 정책이 기타 외부 사용자 또는 역할에게 KMS 키 액세스 권한을 부여하는 경우 해당 권한은 효과가 없습니다.

키 정책은 IAM 정책의 작업도 제한합니다. IAM 정책은 키 정책에 지정된 작업의 일부 또는 전부를 위임할 수 있습니다. IAM 정책이 키 정책에 지정되지 않은 작업을 나열하는 경우 해당 권한은 효과가 없습니다.

다음 예제 IAM 정책은 보안 주체가 111122223333 계정의 KMS 키를 암호화 작업에 사용하도록 허용합니다. 이 권한을 444455556666 계정의 사용자 및 역할에 부여하려면 444455556666 계정의 사용자 또는 역할에 정책을 연결합니다.

{ "Sid": "AllowUseOfKeyInAccount111122223333", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }

이 정책에 대한 다음 세부 정보를 참고하세요.

  • 키 정책과 달리, IAM 정책문에는 Principal 요소가 포함되지 않습니다. IAM 정책에서 보안 주체는 정책이 연결되는 자격 증명입니다.

  • IAM 정책의 Resource 요소는 보안 주체가 사용할 수 있는 KMS 키를 식별합니다. KMS 키를 지정하려면 해당 키 ARNResource 요소에 추가합니다.

  • Resource 요소에서 KMS 키를 두 개 이상 지정할 수 있습니다. 하지만 Resource 요소에서 특정 KMS 키를 지정하지 않으면 의도한 것보다 많은 KMS 키에 대한 액세스 권한을 실수로 부여할 수 있습니다.

  • 외부 사용자가 AWS KMS와 통합된 AWS 서비스에 KMS 키를 사용하도록 허용하려면 키 정책 또는 IAM 정책에 권한을 추가해야 할 수 있습니다. 자세한 내용은 AWS 서비스에서 외부 KMS 키 사용 허용 단원을 참조하세요.

IAM 정책 작업에 대한 자세한 내용은 IAM 정책 단원을 참조하십시오.

다른 계정이 사용할 수 있는 KMS 키 생성

CreateKey 작업을 사용하여 KMS 키를 생성하는 경우 Policy 파라미터를 사용하여 외부 계정 또는 외부 사용자 및 역할에게 KMS 키를 사용할 권한을 부여하는 키 정책을 지정할 수 있습니다. 사용자 및 역할이 키 정책에서 지정되더라도, 이러한 권한을 위임하는 외부 계정의 IAM 정책도 계정의 사용자 및 역할에 추가해야 합니다. 언제든지 PutKeyPolicy 작업을 사용하여 키 정책을 변경할 수 있습니다.

AWS Management Console에서 KMS 키를 생성할 때 해당 키 정책도 생성합니다. Key Administrators(키 관리자)Key Users(키 사용자) 섹션에서 자격 증명을 선택하면 AWS KMS는 해당 자격 증명에 대한 정책 문을 KMS 키의 키 정책에 추가합니다.

또한 Key Users(키 사용자) 섹션을 사용하여 외부 계정을 키 사용자로 추가할 수도 있습니다.


                외부 계정을 KMS 키에 대한 키 정책에 추가하는 콘솔 요소입니다.

외부 계정의 계정 ID를 입력하면 AWS KMS는 두 개의 문을 키 정책에 추가합니다. 이 작업은 키 정책에만 영향을 미칩니다. 해당 사용자 및 역할에 이러한 권한의 일부 또는 전부를 부여하는 IAM 정책을 연결할 때까지 외부 계정의 사용자 및 역할은 KMS 키를 사용할 수 없습니다.

첫 번째 키 정책문은 외부 계정에게 암호화 작업에서 KMS 키를 사용할 수 있는 권한을 부여합니다.

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

두 번째 키 정책문은 외부 계정이 KMS 키에 대한 권한 부여를 생성, 보기 및 취소하도록 허용하지만, AWS KMS와 통합된 AWS 서비스에서 요청이 수행되는 경우에만 이러한 작업을 허용합니다. 이러한 권한을 통해 사용자 데이터를 암호화하는 다른 AWS 서비스가 KMS 키를 사용할 수 있습니다.

이러한 권한은 AWS 서비스(예: Amazon WorkMail)의 사용자 데이터를 암호화하는 KMS 키용으로 설계되었습니다. 이러한 서비스는 일반적으로 권한 부여를 사용하여 사용자 대신 KMS 키를 사용하기 위해 필요한 권한을 얻습니다. 자세한 내용은 AWS 서비스에서 외부 KMS 키 사용 허용 단원을 참조하세요.

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

이러한 권한이 필요에 맞지 않으면 콘솔의 policy view(정책 보기)에서 또는 PutKeyPolicy 작업을 사용하여 권한을 편집할 수 있습니다. 외부 계정에게 권한을 부여하는 대신, 특정 외부 사용자 및 역할을 지정할 수 있습니다. 정책이 지정하는 작업을 변경할 수 있습니다. 그리고 글로벌 및 AWS KMS 정책 조건을 사용하여 권한을 세부적으로 지정할 수 있습니다.

AWS 서비스에서 외부 KMS 키 사용 허용

다른 계정의 사용자에게 AWS KMS와 통합된 서비스에 KMS 키를 사용할 권한을 부여할 수 있습니다. 예를 들어, 외부 계정의 사용자는 KMS 키를 사용하여 Amazon S3 버킷의 객체를 암호화하거나 객체가 AWS Secrets Manager에 저장하는 암호를 암호화할 수 있습니다.

키 정책은 외부 사용자 또는 외부 사용자의 계정에게 KMS 키를 사용할 수 있는 권한을 부여해야 합니다. 추가로, 사용자에게 AWS 서비스를 사용할 수 있는 권한을 부여하는 IAM 정책을 자격 증명에 연결해야 합니다. 서비스에서 사용자에게 키 정책 또는 IAM 정책에 대한 추가 권한이 필요할 수도 있습니다. 세부 정보는 해당 서비스에 대한 설명서를 참조하십시오.

다른 계정에서 KMS 키 사용

다른 AWS 계정에서 KMS 키를 사용할 수 있는 권한이 있는 경우 AWS Management Console, AWS SDK, AWS CLI 및 AWS Tools for PowerShell에서 KMS 키를 사용할 수 있습니다.

셸 명령 또는 API 요청에서 다른 계정의 KMS 키를 식별하려면 다음 키 식별자를 사용합니다.

키 ID 또는 별칭 이름만 입력하면 AWS는 계정에 KMS 키가 있다고 가정합니다.

AWS KMS 콘솔은 다른 계정의 KMS 키를 사용할 수 있는 권한이 있더라도 표시하지 않습니다. 또한 다른 AWS 서비스의 콘솔에 표시되는 KMS 키 목록에는 다른 계정의 KMS 키가 포함되어 있지 않습니다.

AWS 서비스의 콘솔에서 다른 계정의 KMS 키를 지정하려면 KMS 키의 키 ARN 또는 별칭 ARN을 입력해야 합니다. 필요한 키 식별자는 서비스에 따라 다르며, 서비스 콘솔과 API 작업마다 다를 수 있습니다. 세부 정보는 서비스 문서를 참조하세요.