

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

# 기본 키 정책
<a name="key-policy-default"></a>

KMS 키를 생성할 때 새 KMS 키에 대한 키 정책을 지정할 수 있습니다. 제공하지 않으면에서 자동으로 AWS KMS 생성합니다. 에서 AWS KMS 사용하는 기본 키 정책은 AWS KMS 콘솔에서 키를 생성하는지 아니면 AWS KMS API를 사용하는지에 따라 다릅니다.

**프로그래밍 방식으로 KMS 키를 생성하는 경우 기본 키 정책**  
[AWS KMS API](https://docs.aws.amazon.com/kms/latest/APIReference/)를 사용하여 프로그래밍 방식으로 KMS 키를 생성하고( [AWS SDKs](https://aws.amazon.com/tools/#sdk) [AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/) 또는 사용 포함[AWS Tools for PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/)) 키 정책을 지정하지 않으면가 매우 간단한 기본 키 정책을 AWS KMS 적용합니다. 이 기본 키 정책에는 KMS 키를 소유 AWS 계정 한에 IAM 정책을 사용하여 KMS 키의 모든 AWS KMS 작업에 대한 액세스를 허용할 수 있는 권한을 부여하는 정책 문이 하나 있습니다. 이 정책 설명에 대한 자세한 내용은 [에 대한 액세스 허용 AWS 계정 및 IAM 정책 활성화](#key-policy-default-allow-root-enable-iam) 섹션을 참조하세요.

**를 사용하여 KMS 키를 생성할 때의 기본 키 정책 AWS Management Console**  
[를 사용하여 KMS 키를 생성 AWS Management Console](create-keys.md)하면 키 정책은에 [대한 액세스를 AWS 계정 허용하고 IAM 정책을 활성화](#key-policy-default-allow-root-enable-iam)하는 정책 설명으로 시작됩니다. 그런 다음 콘솔은 [키 관리자 문](#key-policy-default-allow-administrators), [키 사용자 문](#key-policy-default-allow-users) 및 (대부분의 키 유형에 대해) 보안 주체가 [다른 AWS 서비스와](#key-policy-service-integration) 함께 KMS 키를 사용하도록 허용하는 문을 추가합니다. AWS KMS 콘솔의 기능을 사용하여 IAM 사용자, IAM 역할, 키 관리자 AWS 계정 및 키 사용자(또는 둘 다)를 지정할 수 있습니다.

**권한**
+ [에 대한 액세스 허용 AWS 계정 및 IAM 정책 활성화](#key-policy-default-allow-root-enable-iam)
+ [키 관리자가 KMS 키를 관리하도록 허용](#key-policy-default-allow-administrators)
+ [키 사용자가 KMS 키를 사용하도록 허용](#key-policy-default-allow-users)
  + [키 사용자가 암호화 작업에 KMS 키를 사용하도록 허용](#key-policy-users-crypto)
  + [키 사용자가 AWS 서비스와 함께 KMS 키를 사용하도록 허용](#key-policy-service-integration)

## 에 대한 액세스 허용 AWS 계정 및 IAM 정책 활성화
<a name="key-policy-default-allow-root-enable-iam"></a>

다음 기본 키 정책 문은 매우 중요합니다.
+ KMS 키를 소유 AWS 계정 한에 KMS 키에 대한 전체 액세스 권한을 부여합니다.

  다른 AWS 리소스 정책과 달리 AWS KMS 키 정책은 계정 또는 해당 자격 증명에 대한 권한을 자동으로 부여하지 않습니다. 계정 관리자에게 권한을 부여하려면 키 정책에 이와 같이 이 권한을 제공하는 명시적인 문이 포함되어야 합니다.
+ 계정이 IAM 정책을 사용하여 키 정책뿐만 아니라 KMS 키에 대한 액세스를 허용할 수 있도록 합니다.

  이 권한이 없으면 키에 대한 액세스를 허용하는 IAM 정책은 효과가 없지만 키에 대한 액세스를 거부하는 IAM 정책은 여전히 유효합니다.
+ 이는 삭제할 수 없는 계정 루트 사용자를 포함한 계정 관리자에게 액세스 제어 권한을 부여하여 키를 관리할 수 없게 될 위험을 줄입니다.

다음 키 정책 문은 프로그래밍 방식으로 생성된 KMS 키에 대한 전체 기본 키 정책입니다. AWS KMS 콘솔에서 생성된 KMS 키에 대한 기본 키 정책의 첫 번째 정책 설명입니다.

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

**IAM 정책에서 KMS 키에 대한 액세스를 허용할 수 있습니다.**  <a name="allow-iam-policies"></a>
위에 표시된 키 정책 문은 키를 소유 AWS 계정 한에 IAM 정책 및 키 정책을 사용하여 KMS 키에 대한 모든 작업(`kms:*`)을 허용할 수 있는 권한을 부여합니다.  
이 키 정책 문의 보안 주체는 [계정 보안 주체](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-accounts)이며 `arn:aws:iam::account-id:root` 형식의 ARN으로 표시됩니다. 계정 보안 주체는 AWS 계정과 해당 관리자를 나타냅니다.  
키 정책 문의 보안 주체가 계정 보안 주체인 경우 정책 문에서는 IAM 보안 주체에 KMS 키를 사용할 권한을 부여하지 않습니다. 대신, 계정이 IAM 정책을 사용하여 정책 문에 지정된 권한을 *위임*할 수 있도록 허용합니다. 이 기본 키 정책 문은 계정이 IAM 정책을 사용하여 KMS 키에 대한 모든 작업(`kms:*`) 권한을 위임할 수 있도록 허용합니다.

**는 KMS 키를 관리할 수 없게 될 위험을 줄입니다.**  
다른 AWS 리소스 정책과 달리 AWS KMS 키 정책은 계정 또는 해당 보안 주체에 권한을 자동으로 부여하지 않습니다. [계정 보안 주체](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-accounts)를 포함한 모든 보안 주체에게 권한을 부여하려면 권한을 명시적으로 제공하는 키 정책 문을 사용해야 합니다. 계정 보안 주체 또는 다른 보안 주체에게 KMS 키에 대한 액세스 권한을 부여할 필요는 없습니다. 그러나 계정 보안 주체에게 액세스 권한을 부여하면 키를 관리할 수 없게 되는 문제를 방지할 수 있습니다.  
예를 들어 한 명의 사용자에게만 KMS 키에 대한 액세스 권한을 부여하는 키 정책을 만들었다고 가정해 보겠습니다. 그런 다음 해당 사용자를 삭제하면 키를 관리할 수 없게 되므로 [AWS Support에 문의](https://console.aws.amazon.com/support/home#/case/create)하여 KMS 키에 대한 액세스 권한을 다시 받아야 합니다.  
위에 표시된 키 정책 문은 [계정 위탁자](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-accounts)에게 키를 제어할 수 있는 권한을 부여합니다. 계정 보안 주체는 [계정 루트 사용자를](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html) 포함하여 AWS 계정 및 해당 관리자를 나타냅니다. 계정 루트 사용자는 AWS 계정을 삭제하지 않으면 삭제할 수 없는 유일한 보안 주체입니다. IAM 모범 사례에서는 긴급 상황을 제외하고는 계정 루트 사용자를 대신하여 조치를 취하는 것을 권장하지 않습니다. 하지만 KMS 키에 액세스할 수 있는 다른 모든 사용자 및 역할을 삭제할 경우 계정 루트 사용자 역할을 해야 할 수도 있습니다.

## 키 관리자가 KMS 키를 관리하도록 허용
<a name="key-policy-default-allow-administrators"></a>

콘솔이 생성한 기본 키 정책을 통해 해당 계정에서 IAM 사용자와 역할을 선택하고 이들을 *키 관리자*로 지정할 수 있습니다. 이 문은 *키 관리자 문*이라고 합니다. 키 관리자는 KMS 키를 관리할 수 있는 권한이 있지만 [암호화 작업](kms-cryptography.md#cryptographic-operations)에 KMS 키를 사용할 수 있는 권한은 없습니다. 기본 보기 또는 정책 보기에서 KMS 키를 생성할 때 키 관리자 목록에 IAM 사용자와 역할을 추가할 수 있습니다.

**주의**  
키 관리자는 키 정책을 변경하고 권한 부여를 생성할 수 있는 권한이 있으므로 자신과 다른 사용자에게이 정책에 지정되지 않은 AWS KMS 권한을 부여할 수 있습니다.  
태그 및 별칭을 관리할 권한이 있는 보안 주체는 KMS 키에 대한 액세스를 제어할 수도 있습니다. 자세한 내용은 [에 대한 ABAC AWS KMS](abac.md)을 참조하세요.

**참고**  
IAM 모범 사례는 장기 보안 인증 정보가 있는 IAM 사용자의 사용을 장려하지 않습니다. 가능할 경우, 임시 보안 인증 정보를 제공하는 IAM 역할을 사용하세요. 자세한 내용은 *IAM 사용 설명서*의 [IAM의 보안 모범 사례](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)를 참조하세요.

다음은 AWS KMS 콘솔의 기본 보기에서 키 관리자 문을 나타낸 예제입니다.

![\[콘솔의 기본 키 정책의 키 관리자, 기본 보기\]](http://docs.aws.amazon.com/ko_kr/kms/latest/developerguide/images/console-key-policy-administrators-60.png)


다음은 AWS KMS 콘솔의 기본 보기의 예제 키 관리자 문입니다. 이 키 관리자 문은 단일 리전 대칭 암호화 KMS 키를 위한 것입니다.

**참고**  
 AWS KMS 콘솔은 문 식별자 아래의 키 정책에 키 관리자를 추가합니다`"Allow access for Key Administrators"`. 이 문 식별자를 수정하면 문에 대해 콘솔이 업데이트 내용을 표시하는 방식에 영향을 미칠 수 있습니다.

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

가장 일반적인 KMS 키인 단일 리전 대칭 KMS 키에 대한 기본 키 관리자 문은 다음과 같은 권한을 허용합니다. 이러한 권한에 대한 자세한 내용은 [AWS KMS 권한](kms-api-permissions-reference.md) 섹션을 참조하세요.

 AWS KMS 콘솔을 사용하여 KMS 키를 생성하면 콘솔은 키 관리자 문의 `Principal` 요소에 지정한 사용자와 역할을 추가합니다.

많은 경우 이러한 권한에 와일드카드 문자(`*`)가 포함되며, 지정된 동사로 시작하는 모든 권한이 허용됩니다. 따라서가 새 API 작업을 AWS KMS 추가하면 키 관리자가 해당 작업을 자동으로 사용할 수 있습니다. 새 작업을 포함하도록 키 정책을 업데이트할 필요는 없습니다. 키 관리자를 고정된 API 작업 집합으로 제한하려는 경우 [키 정책을 변경](key-policy-modifying.md)할 수 있습니다.

**`kms:Create*`**  
[`kms:CreateAlias`](kms-alias.md) 및 [`kms:CreateGrant`](grants.md)를 허용합니다. (`kms:CreateKey` 권한은 IAM 정책에서만 유효)

**`kms:Describe*`**  
[`kms:DescribeKey`](viewing-keys.md)를 허용합니다. AWS Management Console에서 KMS 키의 키 세부 정보 페이지를 보려면 `kms:DescribeKey` 권한이 필요합니다.

**`kms:Enable*`**  
[`kms:EnableKey`](enabling-keys.md)를 허용합니다. 대칭 암호화 KMS 키의 경우 [`kms:EnableKeyRotation`](rotate-keys.md)도 허용합니다.

**`kms:List*`**  
[`kms:ListGrants`](grants.md), [https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeyPolicies.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeyPolicies.html) 및 [`kms:ListResourceTags`](tagging-keys.md)를 허용합니다. ( AWS Management Console에서 KMS 키를 보는 데 필요한 `kms:ListAliases` 및 `kms:ListKeys` 권한은 IAM 정책에서만 유효)

**`kms:Put*`**  
[https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html)를 허용합니다. 이 권한은 키 관리자가 이 KMS 키에 대한 키 정책을 변경하도록 허용합니다.

**`kms:Update*`**  
[`kms:UpdateAlias`](alias-update.md) 및 [https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdateKeyDescription.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdateKeyDescription.html)을 허용합니다. 다중 리전 키의 경우 이 KMS 키에서 [`kms:UpdatePrimaryRegion`](multi-region-update.md#update-primary-console)을 허용합니다.

**`kms:Revoke*`**  
키 관리자가 권한 부여에서 [사용 중지 위탁자](grants.md#terms-retiring-principal)가 아니어도 [권한 부여를 삭제](grant-delete.md)할 수 있도록 [`kms:RevokeGrant`](grant-delete.md)를 허용합니다.

**`kms:Disable*`**  
[`kms:DisableKey`](enabling-keys.md)를 허용합니다. 대칭 암호화 KMS 키의 경우 [`kms:DisableKeyRotation`](rotate-keys.md)도 허용합니다.

**`kms:Get*`**  
[`kms:GetKeyPolicy`](key-policy-viewing.md) 및 [`kms:GetKeyRotationStatus`](rotate-keys.md)를 허용합니다. 가져온 키 구성 요소가 있는 KMS 키의 경우 [https://docs.aws.amazon.com/kms/latest/APIReference/API_GetParametersForImport.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetParametersForImport.html)를 허용합니다. 비대칭 KMS 키의 경우 [https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html)를 허용합니다. AWS Management Console에서 KMS 키의 키 정책을 보려면 `kms:GetKeyPolicy` 권한이 필요합니다.

**`kms:Delete*`**  
[`kms:DeleteAlias`](kms-alias.md)를 허용합니다. 가져온 키 구성 요소가 있는 키의 경우 [`kms:DeleteImportedKeyMaterial`](importing-keys.md)을 허용합니다. `kms:Delete*` 권한은 키 관리자가 KMS 키(`ScheduleKeyDeletion`)를 삭제하도록 허용하지 않습니다.

**`kms:TagResource`**  
키 관리자가 KMS 키에 태그를 추가할 수 있도록 하는 [`kms:TagResource`](tagging-keys.md)를 허용합니다. 태그를 사용하여 KMS 키에 대한 액세스를 제어할 수도 있으므로 이 권한을 통해 관리자는 KMS 키에 대한 액세스를 허용하거나 거부할 수 있습니다. 자세한 내용은 [에 대한 ABAC AWS KMS](abac.md) 섹션을 참조하세요.

**`kms:UntagResource`**  
키 관리자가 KMS 키에 태그를 삭제할 수 있도록 하는 [`kms:UntagResource`](tagging-keys.md)를 허용합니다. 태그를 사용하여 키에 대한 액세스를 제어할 수 있으므로 이 권한을 통해 관리자는 KMS 키에 대한 액세스를 허용하거나 거부할 수 있습니다. 자세한 내용은 [에 대한 ABAC AWS KMS](abac.md) 섹션을 참조하세요.

**`kms:ScheduleKeyDeletion`**  
키 관리자가 [이 KMS 키를 삭제](deleting-keys.md)할 수 있도록 하는 [https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html)을 허용합니다. 이 권한을 삭제하려면 **키 관리자가 이 키를 삭제하도록 허용(Allow key administrators to delete this key)** 옵션을 삭제합니다.

**`kms:CancelKeyDeletion`**  
키 관리자가 [이 KMS 키 삭제를 취소](deleting-keys.md)할 수 있도록 하는 [https://docs.aws.amazon.com/kms/latest/APIReference/API_CancelKeyDeletion.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_CancelKeyDeletion.html)를 허용합니다. 이 권한을 삭제하려면 **키 관리자가 이 키를 삭제하도록 허용(Allow key administrators to delete this key)** 옵션을 삭제합니다.

**`kms:RotateKeyOnDemand`**  
키 관리자가 [이 KMS 키에서 키 구성 요소의 온디맨드 교체를 수행](rotating-keys-on-demand.md)할 수 있는 [https://docs.aws.amazon.com/kms/latest/APIReference/API_RotateKeyOnDemand.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_RotateKeyOnDemand.html)를 허용합니다.

 

AWS KMS 는 특수 목적 키를 생성할 때 기본 키 관리자 문에 다음 권한을 추가합니다.

**`kms:ImportKeyMaterial`**  
[https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_ImportKeyMaterial.html) 권한은 키 관리자가 키 구성 요소를 KMS로 가져오도록 허용합니다. 이 권한은 [키 구성 요소 없이 KMS 키를 생성](importing-keys-create-cmk.md)하는 경우에만 키 정책에 포함됩니다.

**`kms:ReplicateKey`**  
[https://docs.aws.amazon.com/kms/latest/APIReference/API_ReplicateKey.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReplicateKey.html) 권한을 통해 키 관리자는 다른 AWS 리전에서 [다중 리전 기본 키의 복제본을 생성할](multi-region-keys-replicate.md) 수 있습니다. 이 권한은 다중 리전 기본 또는 복제본 키를 생성하는 경우에만 키 정책에 포함됩니다.

**`kms:UpdatePrimaryRegion`**  
[https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdatePrimaryRegion.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdatePrimaryRegion.html) 권한은 키 관리자가 [다중 리전 복제본 키를 다중 리전 기본 키로 변경](multi-region-update.md)하도록 허용합니다. 이 권한은 다중 리전 기본 또는 복제본 키를 생성하는 경우에만 키 정책에 포함됩니다.

## 키 사용자가 KMS 키를 사용하도록 허용
<a name="key-policy-default-allow-users"></a>

콘솔에서 KMS 키에 대해 생성하는 기본 키 정책을 사용하면 계정 및 외부에서 IAM 사용자 AWS 계정및 IAM 역할을 선택하고 *키 사용자를* 만들 수 있습니다.

콘솔은 키 사용자에 대한 키 정책에 두 개의 정책 문을 추가합니다.
+ [KMS 직접 사용](#key-policy-users-crypto) — 첫 번째 키 정책 문은 키 사용자에게 해당 유형의 KMS 키에 대해 지원되는 모든 [암호화 작업](kms-cryptography.md#cryptographic-operations)에 KMS 키를 직접 사용할 수 있는 권한을 부여합니다.
+ [서비스와 함께 AWS KMS 키 사용](#key-policy-service-integration) - 두 번째 정책 설명은 키 사용자에게와 통합된 AWS 서비스가 자신을 대신하여 KMS 키를 AWS KMS 사용하여 Amazon S3 버킷 및 Amazon DynamoDB 테이블과 같은 리소스를 보호할 수 있는 권한을 부여합니다.

KMS 키를 생성할 때 IAM 사용자, IAM 역할 및 기타 AWS 계정 를 키 사용자 목록에 추가할 수 있습니다. 다음 이미지에서 보듯이, 키 정책에 대한 콘솔의 기본 보기로 목록을 편집할 수도 있습니다. 키 정책의 기본 보기는 키 세부 정보 페이지에 있습니다. 다른의 사용자가 KMS 키를 사용하도록 허용하는 AWS 계정 방법에 대한 자세한 내용은 섹션을 참조하세요[다른 계정의 사용자가 KMS를 사용하도록 허용](key-policy-modifying-external-accounts.md).

**참고**  
IAM 모범 사례는 장기 보안 인증 정보가 있는 IAM 사용자의 사용을 장려하지 않습니다. 가능할 경우, 임시 보안 인증 정보를 제공하는 IAM 역할을 사용하세요. 자세한 내용은 *IAM 사용 설명서*의 [IAM의 보안 모범 사례](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)를 참조하세요.

![\[콘솔의 기본 키 정책의 키 사용자, 기본 보기\]](http://docs.aws.amazon.com/ko_kr/kms/latest/developerguide/images/console-key-policy-users-sm.png)


단일 리전 대칭에 대한 기본 *키 사용자 문*은 다음과 같은 권한을 허용합니다. 각 권한에 대한 자세한 내용은 [AWS KMS 권한](kms-api-permissions-reference.md) 섹션을 참조하세요.

 AWS KMS 콘솔을 사용하여 KMS 키를 생성하면 콘솔은 사용자가 지정한 사용자와 역할을 각 키 사용자 문의 `Principal` 요소에 추가합니다.

**참고**  
 AWS KMS 콘솔은 문 식별자 `"Allow use of the key"` 및 아래의 키 정책에 키 사용자를 추가합니다`"Allow attachment of persistent resources"`. 이러한 문 식별자들을 수정하면 문에 대해 콘솔이 업데이트 내용을 표시하는 방식에 영향을 미칠 수 있습니다.

```
{
  "Sid": "Allow use of the key",
  "Effect": "Allow",
  "Principal": {"AWS": [
    "arn:aws:iam::111122223333:role/ExampleRole",
    "arn:aws:iam::444455556666:root"
  ]},
  "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt*",
    "kms:GenerateDataKey*",
    "kms:DescribeKey"
  ],
  "Resource": "*"
},
{
  "Sid": "Allow attachment of persistent resources",
  "Effect": "Allow",
  "Principal": {"AWS": [
    "arn:aws:iam::111122223333:role/ExampleRole",
    "arn:aws:iam::444455556666:root"
  ]},
  "Action": [
    "kms:CreateGrant",
    "kms:ListGrants",
    "kms:RevokeGrant"
  ],
  "Resource": "*",
  "Condition": {"Bool": {"kms:GrantIsForAWSResource": true}}
}
```

## 키 사용자가 암호화 작업에 KMS 키를 사용하도록 허용
<a name="key-policy-users-crypto"></a>

키 사용자는 KMS 키에서 지원되는 모든 [암호화 작업](kms-cryptography.md#cryptographic-operations)에서 KMS 키를 직접 사용할 수 있는 권한이 있습니다. 또한 [DescribeKey ](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)작업을 사용하여 AWS KMS 콘솔에서 또는 AWS KMS API 작업을 사용하여 KMS 키에 대한 자세한 정보를 가져올 수 있습니다.

기본적으로 AWS KMS 콘솔은 다음 예제와 같은 키 사용자 문을 기본 키 정책에 추가합니다. 서로 다른 API 작업을 지원하므로 대칭 암호화 KMS 키, HMAC KMS 키, 퍼블릭 키 암호화를 위한 비대칭 KMS 키, 서명 및 확인을 위한 비대칭 KMS 키에 대한 정책 문의 작업은 약간 다릅니다.

**대칭 암호화 KMS 키**  
콘솔은 대칭 암호화 KMS 키에 대한 키 정책에 다음 문을 추가합니다.  

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

**HMAC KMS 키**  
콘솔은 HMAC KMS 키에 대한 키 정책에 다음 문을 추가합니다.  

```
{
  "Sid": "Allow use of the key",
  "Effect": "Allow",  
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/ExampleKeyUserRole"},
  "Action": [
    "kms:DescribeKey",
    "kms:GenerateMac",
    "kms:VerifyMac"
  ],
  "Resource": "*"
}
```

**퍼블릭 키 암호화를 위한 비대칭 KMS 키**  
콘솔은 키 사용이 **암호화 및 해독**인 비대칭 KMS 키에 대한 키 정책에 다음 문을 추가합니다.  

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

**서명 및 확인을 위한 비대칭 KMS 키**  
콘솔은 키 사용이 **서명 및 확인**인 비대칭 KMS 키에 대한 키 정책에 다음 문을 추가합니다.  

```
{
  "Sid": "Allow use of the key",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/ExampleKeyUserRole"},
  "Action": [
    "kms:DescribeKey",
    "kms:GetPublicKey",
    "kms:Sign",
    "kms:Verify"
  ],
  "Resource": "*"
}
```

**공유 보안 비밀 도출을 위한 비대칭 KMS 키**  
콘솔은 키 사용에 대한 **키 계약**을 사용하여 비대칭 KMS 키에 대한 키 정책에 다음 문을 추가합니다.  

```
{
  "Sid": "Allow use of the key",
  "Effect": "Allow",
  "Principal": {"AWS": "arn:aws:iam::111122223333:role/ExampleKeyUserRole"},
  "Action": [
    "kms:DescribeKey",
    "kms:GetPublicKey",
    "kms:DeriveSharedSecret"
  ],
  "Resource": "*"
}
```

이러한 문의 작업은 키 사용자에게 다음 권한을 제공합니다.

[https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html)  
키 사용자가 이 KMS 키를 사용하여 데이터를 암호화하도록 허용합니다.

[https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)  
키 사용자가 이 KMS 키를 사용하여 데이터를 해독하도록 허용합니다.

[https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret.html)  
키 사용자가 이 KMS 키로 공유 비밀을 도출할 수 있습니다.

[https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)  
키 사용자가 식별자, 생성 날짜, 키 상태 등 이 KMS 키에 대한 세부 정보를 가져오도록 허용합니다. 또한 키 사용자가 AWS KMS 콘솔에서 KMS 키에 대한 세부 정보를 표시할 수 있습니다.

`kms:GenerateDataKey*`  
키 사용자가 클라이언트 측 암호화 작업을 위해 대칭 데이터 키 또는 비대칭 데이터 키 페어를 요청하도록 허용합니다. 콘솔은 \$1 와일드카드 문자를 사용하여 다음 API 작업에 대한 권한을 나타냅니다. [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html), [GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html), [GenerateDataKeyPair](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPair.html), [GenerateDataKeyPairWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPairWithoutPlaintext.html). 이러한 권한은 데이터 키를 암호화하는 대칭 KMS 키에만 유효합니다.

[kms:GenerateMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateMac.html)  
키 사용자가 HMAC KMS 키를 사용하여 HMAC 태그를 생성하도록 허용합니다.

[kms:GetPublicKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html)  
키 사용자가 비대칭 KMS 키의 퍼블릭 키를 다운로드하도록 허용합니다. 이 퍼블릭 키를 공유하는 당사자는 외부에서 데이터를 암호화할 수 있습니다 AWS KMS. 그러나, 그 암호문은 AWS KMS에서 [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 작업을 호출해야만 해독할 수 있습니다.

[kms:ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html)\$1   
키 사용자가 원래 이 KMS 키로 암호화한 데이터를 다시 암호화하거나, 이 KMS 키를 이용해 이전에 암호화한 데이터를 다시 암호화하도록 허용합니다. [ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html) 작업을 수행하려면 소스 및 대상 KMS 키 모두에 대한 액세스 권한이 필요합니다. 이를 위해 원본 KMS 키에 대한 `kms:ReEncryptFrom` 권한과 대상 KMS 키에 대한 `kms:ReEncryptTo` 권한을 허용할 수 있습니다. 그러나 단순화를 위해 콘솔에서는 두 KMS 키 모두에 대해 `kms:ReEncrypt*`를 허용합니다(`*` 와일드카드 문자 사용).

[kms:Sign](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html)  
키 사용자가 이 KMS 키를 사용하여 메시지에 서명하도록 허용합니다.

[kms:Verify](https://docs.aws.amazon.com/kms/latest/APIReference/API_Verify.html)  
키 사용자가 이 KMS 키를 사용하여 서명을 확인하도록 허용합니다.

[kms:VerifyMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_VerifyMac.html)  
키 사용자가 HMAC KMS 키를 사용하여 HMAC 태그를 확인하도록 허용합니다.

## 키 사용자가 AWS 서비스와 함께 KMS 키를 사용하도록 허용
<a name="key-policy-service-integration"></a>

또한 콘솔의 기본 키 정책은 키 사용자에게 권한 부여를 사용하는 AWS 서비스에서 데이터를 보호하는 데 필요한 권한 부여 권한을 부여합니다. AWS 서비스는 권한 부여를 사용하여 KMS 키를 사용할 수 있는 구체적이고 제한된 권한을 얻는 경우가 많습니다.

이 키 정책 문을 사용하면 키 사용자가 KMS 키에 대한 권한 부여를 생성, 확인 및 취소할 수 있지만 권한 부여 작업 요청이 [AWS 와 통합된 서비스 AWS KMS](https://aws.amazon.com/kms/features/#AWS_Service_Integration)에서 오는 경우에만 가능합니다. [kms:GrantIsForAWSResource](conditions-kms.md#conditions-kms-grant-is-for-aws-resource) 정책 조건은 사용자가 이러한 권한 부여 작업을 직접 호출하도록 허용하지 않습니다. 키 사용자가 허용하면 AWS 서비스는 사용자를 대신하여 KMS 키를 사용하여 사용자의 데이터를 보호할 수 있는 권한 부여를 생성할 수 있습니다.

키 사용자는 통합 서비스와 함께 KMS 키를 사용하려면 이러한 권한 부여 권한이 필요하지만 이러한 권한으로는 충분하지 않습니다. 키 사용자는 통합 서비스를 사용할 수 있는 권한도 필요합니다. 와 통합되는 AWS 서비스에 대한 액세스 권한을 사용자에게 부여하는 방법에 대한 자세한 내용은 통합 서비스에 대한 설명서를 AWS KMS참조하세요.

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

예를 들어 키 사용자는 다음과 같은 방법으로 KMS 키에서 이러한 권한을 사용할 수 있습니다.
+ 이 KMS 키를 Amazon Elastic Block Store(Amazon EBS) 및 Amazon Elastic Compute Cloud(Amazon EC2)와 함께 사용하여 암호화된 EBS 볼륨을 EC2 인스턴스에 연결합니다. 키 사용자는 KMS 키를 사용할 수 있는 Amazon EC2 권한을 묵시적으로 부여해 암호화된 볼륨을 인스턴스에 연결합니다. 자세한 내용은 [Amazon Elastic Block Store(Amazon EBS)의 사용 방식 AWS KMS](services-ebs.md) 단원을 참조하십시오.
+ Amazon Redshift와 함께 이 KMS 키를 사용하여 암호화된 클러스터를 시작합니다. 키 사용자는 KMS 키를 사용할 수 있는 Amazon Redshift 권한을 묵시적으로 부여해 암호화된 클러스터를 시작하고 암호화된 스냅샷을 생성합니다. 자세한 내용은 [Amazon Redshift의 사용 방식 AWS KMS](services-redshift.md) 단원을 참조하십시오.
+ 권한 부여를 사용해 해당 서비스로 암호화된 리소스를 생성, 관리 또는 사용하는 [AWS KMS와 통합된 다른AWS 서비스](service-integration.md)와 함께 이 KMS 키를 사용합니다.

기본 키 정책은 키 사용자가 권한 부여를 사용하는 *모든* 통합 서비스에 권한 부여 권한을 위임하도록 허용합니다. 그러나 권한을 지정된 AWS 서비스로 제한하는 사용자 지정 키 정책을 생성할 수 있습니다. 자세한 내용은 [kms:ViaService](conditions-kms.md#conditions-kms-via-service) 조건 키를 참조하세요.