

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 다른 계정의 사용자가 KMS를 사용하도록 허용
<a name="key-policy-modifying-external-accounts"></a>

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

교차 계정 권한은 다음 작업에만 적용됩니다.
+ [암호화 작업](kms-cryptography.md#cryptographic-operations)
+ [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)
+ [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)
+ [GetKeyRotationStatus](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyRotationStatus.html)
+ [GetPublicKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html)
+ [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)
+ [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)
+ [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html)

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

 AWS KMS 작업에 다른 계정에서 KMS 키를 사용하는 방법에 대한 자세한 내용은 [AWS KMS 권한](kms-api-permissions-reference.md) 및의 **교차 계정 사용** 열을 참조하세요[다른 계정에서 KMS 키 사용](#cross-account-use). 또한 [AWS Key Management Service API 참조서](https://docs.aws.amazon.com/kms/latest/APIReference/)의 각 API 설명에 **교차 계정 사용** 섹션도 있습니다.

**주의**  
보안 주체에 KMS 키를 사용할 수 있는 권한을 부여할 때는 주의해야 합니다. 가능하면 *최소 권한* 원칙을 따르십시오. 사용자에게 필요한 작업에만 필요한 KMS 키에만 액세스할 수 있도록 합니다.  
또한 익숙하지 않은 KMS 키, 특히 다른 계정의 KMS 키를 사용할 때는 주의해야 합니다. 악의적인 사용자는 KMS 키를 사용하여 본인이나 계정에 대한 정보를 얻을 수 있는 권한을 부여할 수 있습니다.  
정책을 사용하여 계정의 리소스를 보호하는 방법에 대한 자세한 내용은 [IAM 정책 모범 사례](iam-policies-best-practices.md) 섹션을 참조하십시오.

다른 계정의 사용자 및 역할에게 KMS 키를 사용할 수 있는 권한을 부여하려면 다음 두 가지 유형의 정책을 사용해야 합니다.
+ KMS 키의 **키 정책**은 외부 계정(또는 외부 계정의 사용자 및 역할)에게 KMS 키를 사용할 수 있는 권한을 부여해야 합니다. 키 정책은 KMS 키를 소유하는 계정에 있습니다.
+ 외부 계정의 **IAM 정책**은 키 정책 권한을 해당 사용자 및 역할에 위임해야 합니다. 이러한 정책은 외부 계정에 설정되며 해당 계정의 사용자 및 역할에 권한을 부여합니다.

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

키 정책을 편집하려면 AWS Management Console 에서 [정책 보기](key-policy-modifying.md#key-policy-modifying-how-to-console-policy-view)를 사용하거나 [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) 또는 [PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) 작업을 사용할 수 있습니다.

IAM 정책 편집에 대한 도움말은 [에서 IAM 정책 사용 AWS KMS](iam-policies.md) 섹션을 참조하십시오.

키 정책과 IAM 정책이 함께 작동하여 다른 계정에서 KMS 키 사용을 허용하는 방법을 보여 주는 예는 [예제 2: 사용자가 다른에서 KMS 키를 사용할 권한이 있는 역할을 맡음 AWS 계정](policy-evaluation.md#example-cross-acct) 섹션을 참조하십시오.

[AWS CloudTrail 로그](logging-using-cloudtrail.md)의 KMS 키에서 결과 교차 계정 AWS KMS 작업을 볼 수 있습니다. 다른 계정의 KMS 키를 사용하는 작업은 호출자의 계정과 KMS 키 소유자 계정 모두에 기록됩니다.

**Topics**
+ [1단계: 로컬 계정에서 키 정책 문 추가](#cross-account-key-policy)
+ [2단계: 외부 계정에서 IAM 정책 추가](#cross-account-iam-policy)
+ [에서 외부 KMS 키 사용 허용 AWS 서비스](#cross-account-service)
+ [다른 계정에서 KMS 키 사용](#cross-account-use)

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

## 1단계: 로컬 계정에서 키 정책 문 추가
<a name="cross-account-key-policy"></a>

KMS 키에 대한 키 정책은 누가 KMS 키에 액세스할 수 있으며 어떤 작업을 수행할 수 있는지에 대한 주요 결정 요인입니다. 키 정책은 항상 KMS 키를 소유하는 계정에 있습니다. IAM 정책과 달리, 키 정책은 리소스를 지정하지 않습니다. 리소스는 키 정책과 연결된 KMS 키입니다. 교차 계정 권한을 제공할 때 KMS 키의 키 정책은 외부 계정(또는 외부 계정의 사용자 및 역할)에게 KMS 키를 사용할 수 있는 권한을 부여해야 합니다.

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

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

외부 계정 및 보안 주체에 부여된 사용 권한은 KMS 키와 키 정책을 호스팅하는 리전에서 외부 계정을 사용하도록 설정한 경우에만 유효합니다. 기본적으로 사용하도록 설정되지 않은 리전(‘옵트인 리전’)에 대한 자세한 내용은 *AWS 일반 참조*의 [AWS 리전관리](https://docs.aws.amazon.com/general/latest/gr/rande-manage.html)를 참조하세요.

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

**참고**  
다음 예는 KMS 키를 다른 계정과 공유하기 위한 샘플 키 정책을 나타냅니다. 예제 `Sid`, `Principal` 및 `Action` 값을 KMS 키의 용도에 맞는 유효한 값으로 바꾸세요.

```
{
    "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`이 `111122223333` 계정의 KMS 키를 사용하도록 허용합니다. 이 키 정책문은 대칭 암호화 KMS 키에 대한 암호화 작업에서 KMS 키를 사용할 수 있는 권한을 외부 계정 `444455556666`에 부여합니다.

**참고**  
다음 예는 KMS 키를 다른 계정과 공유하기 위한 샘플 키 정책을 나타냅니다. 예제 `Sid`, `Principal` 및 `Action` 값을 KMS 키의 용도에 맞는 유효한 값으로 바꾸세요.

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

**참고**  
[조건](policy-conditions.md)을 사용하여 키 정책을 제한하지 않는 한 권한을 허용하는 키 정책문에서 보안 주체를 별표(\$1)로 설정하지 마세요. 별표는 다른 정책 문이 명시적으로 거부하지 않는 한 모든 자격 증명에 KMS 키를 사용할 수 있는 AWS 계정 권한을 부여합니다. 다른의 사용자는 자신의 계정에 해당 권한이 있을 때마다 KMS 키를 사용할 AWS 계정 수 있습니다.

또한 외부 계정에게 어떤 권한을 부여할지도 결정해야 합니다. 예를 들어, 암호화 해제할 수 있지만 암호화할 수 없는 권한을 부여하거나, KMS 키를 볼 수 있지만 사용할 수 없는 권한을 부여해야 할 수 있습니다. KMS 키에 대한 권한 목록은 [AWS KMS 권한](kms-api-permissions-reference.md) 섹션을 참조하세요.

**KMS 키를 생성하는 경우 키 정책 설정**  
[CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html) 작업을 사용하여 KMS 키를 생성하는 경우 `Policy` 파라미터를 사용하여 외부 계정 또는 외부 사용자 및 역할에게 KMS 키를 사용할 권한을 부여하는 키 정책을 지정할 수 있습니다.  
에서 KMS 키를 생성할 때 해당 키 정책 AWS Management Console도 생성합니다. **Key Administrators(키 관리자)** 및 **Key Users(키 사용자)** 섹션에서 자격 증명을 선택하면 AWS KMS 는 해당 자격 증명에 대한 정책 문을 KMS 키의 키 정책에 추가합니다. 또한 **Key Users(키 사용자)** 섹션을 사용하여 외부 계정을 키 사용자로 추가할 수도 있습니다.  
외부 계정의 계정 ID를 입력하면가 키 정책에 두 개의 문을 AWS KMS 추가합니다. 이 작업은 키 정책에만 영향을 미칩니다. 해당 사용자 및 역할에 이러한 권한의 일부 또는 전부를 부여하는 IAM 정책을 연결할 때까지 외부 계정의 사용자 및 역할은 KMS 키를 사용할 수 없습니다.  
첫 번째 키 정책문은 외부 계정에게 암호화 작업에서 KMS 키를 사용할 수 있는 권한을 부여합니다. 두 번째 키 정책 문은 외부 계정이 KMS 키에 대한 권한 부여를 생성, 확인 및 취소할 수 있도록 허용합니다. 단, 요청이 [AWS 와 통합된 서비스 AWS KMS](https://aws.amazon.com/kms/features/#AWS_Service_Integration)에서 오는 경우에만 가능합니다. 이러한 권한을 통해 사용자 데이터를 암호화하는 다른 AWS 서비스에서 KMS 키를 사용할 수 있습니다. 이러한 권한은 AWS 서비스의 사용자 데이터를 암호화하는 KMS 키용으로 설계되었습니다.

## 2단계: 외부 계정에서 IAM 정책 추가
<a name="cross-account-iam-policy"></a>

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

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

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

다음 예제 IAM 정책은 보안 주체가 `111122223333` 계정의 KMS 키를 암호화 작업에 사용하도록 허용합니다. 이 권한을 `444455556666` 계정의 사용자 및 역할에 부여하려면 `444455556666` 계정의 사용자 또는 역할에 [정책을 연결](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#attach-managed-policy-console)합니다.

**참고**  
다음 예제는 KMS 키를 다른 계정과 공유하기 위한 샘플 IAM 정책을 나타냅니다. 예제 `Sid`, `Resource` 및 `Action` 값을 KMS 키의 용도에 맞는 유효한 값으로 바꾸세요.

```
{
    "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 키를 지정하려면 해당 [키 ARN](concepts.md#key-id-alias-ARN)을 `Resource` 요소에 추가합니다.
+ `Resource` 요소에서 KMS 키를 두 개 이상 지정할 수 있습니다. 하지만 `Resource` 요소에서 특정 KMS 키를 지정하지 않으면 의도한 것보다 많은 KMS 키에 대한 액세스 권한을 실수로 부여할 수 있습니다.
+ 외부 사용자가 [AWS KMS와 통합된AWS 서비스](https://aws.amazon.com/kms/features/#AWS_Service_Integration)에 KMS 키를 사용하도록 허용하려면 키 정책 또는 IAM 정책에 권한을 추가해야 할 수 있습니다. 자세한 내용은 [에서 외부 KMS 키 사용 허용 AWS 서비스](#cross-account-service) 섹션을 참조하세요.

IAM 정책 작업에 대한 자세한 내용은 [IAM 정책](iam-policies.md) 섹션을 참조하십시오.

## 에서 외부 KMS 키 사용 허용 AWS 서비스
<a name="cross-account-service"></a>

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

키 정책은 외부 사용자 또는 외부 사용자의 계정에게 KMS 키를 사용할 수 있는 권한을 부여해야 합니다. 추가로, 사용자에게 AWS 서비스를 사용할 수 있는 권한을 부여하는 IAM 정책을 자격 증명에 연결해야 합니다. 서비스에서 사용자에게 키 정책 또는 IAM 정책에 대한 추가 권한이 필요할 수도 있습니다. 에서 고객 관리형 키에 AWS 서비스 필요한 권한 목록은 서비스 사용 설명서 또는 개발자 안내서의 보안 장에서 데이터 보호 주제를 참조하세요.

## 다른 계정에서 KMS 키 사용
<a name="cross-account-use"></a>

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

셸 명령 또는 API 요청에서 다른 계정의 KMS 키를 식별하려면 다음 [키 식별자](concepts.md#key-id)를 사용합니다.
+ [암호화 작업](kms-cryptography.md#cryptographic-operations), [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html) 및 [GetPublicKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html)의 경우 KMS 키의 [키 ARN](concepts.md#key-id-key-ARN) 또는 [별칭 ARN](concepts.md#key-id-alias-ARN)을 사용합니다.
+ [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html), [GetKeyRotationStatus](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyRotationStatus.html), [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/ListGrants.html) 및 [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/RevokeGrant.html)의 경우 KMS 키의 키 ARN을 사용합니다.

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

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

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