

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

# 에서 IAM 정책 사용 AWS KMS
<a name="iam-policies"></a>

IAM 정책을 [키](key-policies.md) 정책, [권한 부여](grants.md) 및 [VPC 엔드포인트 정책과](https://docs.aws.amazon.com/vpc/latest/privatelink/interface-endpoints.html#edit-vpc-endpoint-policy) 함께 사용하여 AWS KMS keys 에 대한 액세스를 제어할 수 있습니다 AWS KMS.

**참고**  
IAM 정책을 사용하여 KMS 키에 대한 액세스를 제어하려면 KMS 키의 키 정책에서 계정에 IAM 정책 사용 권한을 부여해야 합니다. 특히 키 정책에는 [IAM 정책을 활성화하는 정책 설명](key-policy-default.md#key-policy-default-allow-root-enable-iam)이 포함되어야 합니다.  
이 섹션에서는 IAM 정책을 사용하여 AWS KMS 작업에 대한 액세스를 제어하는 방법을 설명합니다. IAM에 대한 일반적인 내용은 [IAM 사용 설명서](https://docs.aws.amazon.com/IAM/latest/UserGuide/)를 참조하십시오.

모든 KMS 키에는 키 정책이 있어야 합니다. IAM 정책은 선택 사항입니다. IAM 정책을 사용하여 KMS 키에 대한 액세스를 제어하려면 KMS 키의 키 정책에서 계정에 IAM 정책 사용 권한을 부여해야 합니다. 특히 키 정책에는 [IAM 정책을 활성화하는 정책 설명](key-policy-default.md#key-policy-default-allow-root-enable-iam)이 포함되어야 합니다.

IAM 정책은 모든 AWS KMS 작업에 대한 액세스를 제어할 수 있습니다. 키 정책과 달리 IAM 정책은 여러 KMS 키에 대한 액세스를 제어하고 여러 관련 AWS 서비스의 작업에 대한 권한을 제공할 수 있습니다. 그러나 IAM 정책은 [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)와 같은 작업에 대한 액세스를 제어하는 데 특히 유용합니다. 여기에는 특정 KMS 키가 포함되어 있지 않기 때문에 키 정책으로는 제어할 수 없습니다.

Amazon Virtual Private Cloud(VPC) 엔드포인트를 AWS KMS 통해에 액세스하는 경우 VPC 엔드포인트 정책을 사용하여 엔드포인트를 사용할 때 AWS KMS 리소스에 대한 액세스를 제한할 수도 있습니다. 예를 들어 VPC 엔드포인트를 사용하는 경우의 보안 주체만 고객 관리형 키에 액세스 AWS 계정 하도록 허용할 수 있습니다. 자세한 내용은 [VPC 엔드포인트 정책](https://docs.aws.amazon.com/vpc/latest/privatelink/interface-endpoints.html#edit-vpc-endpoint-policy)을 참조하세요.

JSON 정책 문서 작성 및 형식 지정에 대한 도움말은 *IAM 사용 설명서*의 [IAM JSON 정책 참조](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html) 섹션을 확인하세요.

IAM 정책을 다음과 같이 사용할 수 있습니다.
+ **페더레이션 또는 크로스 계정 권한의 역할에 권한 정책 연결** – IAM 역할에 IAM 정책을 연결하여 자격 증명 연동을 활성화하거나, 크로스 계정 권한을 허용하거나, EC2 인스턴스에서 실행되는 애플리케이션에 권한을 부여할 수 있습니다. IAM 역할의 다양한 사용 사례에 대한 자세한 내용은 *IAM 사용 설명서*의 [IAM 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)을 참조하십시오.
+ **사용자 또는 그룹에 권한 정책 연결** – 사용자 또는 사용자 그룹이 AWS KMS 작업을 호출하도록 허용하는 정책을 연결할 수 있습니다. 그러나 IAM 모범 사례에서는 가능한 경우 IAM 역할과 같은 임시 보안 인증 정보가 있는 ID를 사용할 것을 권장합니다.

다음 예제에서는 AWS KMS 권한이 있는 IAM 정책을 보여줍니다. 이 정책은 연결되는 IAM 자격 증명이 모든 KMS 키와 별칭을 나열하도록 허용합니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:ListKeys",
      "kms:ListAliases"
    ],
    "Resource": "*"
  }
}
```

------

모든 IAM 정책처럼 이 정책에는`Principal` 요소가 없습니다. IAM 정책을 IAM ID에 연결할 경우 해당 ID는 정책에 지정된 권한을 얻습니다.

모든 AWS KMS API 작업과 해당 작업이 적용되는 리소스를 보여주는 표는 섹션을 참조하세요[권한 참조](kms-api-permissions-reference.md).

## 여러 IAM 보안 주체가 KMS 키에 액세스하도록 허용
<a name="key-policy-modifying-multiple-iam-users"></a>

키 정책에서 IAM 그룹은 유효한 보안 주체가 아닙니다. 여러 사용자 및 역할이 KMS 키에 액세스하도록 허용하려면 다음 중 한 방법을 사용합니다.
+ IAM 역할을 키 정책의 보안 주체로 사용하세요. 필요한 경우 여러 명의 권한 있는 사용자가 해당 역할을 맡을 수 있습니다. 자세한 내용은 **IAM 사용 설명서에서 [IAM 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)을 참조하세요.

  키 정책에 여러 IAM 사용자를 나열할 수 있지만 이 방법을 따르는 경우에는 인증된 사용자 목록이 변경될 때마다 키 정책을 업데이트하기 때문에 권장되지 않습니다. 또한 IAM 모범 사례는 장기 보안 인증 정보가 있는 IAM 사용자의 사용을 장려하지 않습니다. 자세한 내용은 *IAM 사용 설명서*의 [IAM의 보안 모범 사례](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)를 참조하세요.
+ IAM 정책을 사용하여 IAM 그룹에 권한을 부여하세요. 이 작업을 수행하기 위해서는 키 정책에 [IAM 정책이 KMS 키에 대한 액세스를 허용하도록 하는](key-policy-default.md#key-policy-default-allow-root-enable-iam) 문이 포함되어 있는지 확인하고, KMS 키에 대한 액세스를 허용하는 [IAM 정책을 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#create-managed-policy-console)한 다음, [해당 정책을 권한이 있는 IAM 사용자가 포함된 IAM 그룹에 연결](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-using.html#attach-managed-policy-console)합니다. 이 방법을 사용하면 권한있는 사용자 목록이 변경되어도 정책을 변경할 필요가 없습니다. 해당 IAM 그룹에서 사용자를 제거하거나 추가하기만 하면 됩니다. 자세한 내용은 **IAM 사용 설명서의 [IAM 사용자 그룹](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html)을 참조하세요.

 AWS KMS 키 정책과 IAM 정책이 함께 작동하는 방식에 대한 자세한 내용은 섹션을 참조하세요[AWS KMS 권한 문제 해결](policy-evaluation.md).

# IAM 정책 모범 사례
<a name="iam-policies-best-practices"></a>

에 대한 액세스를 보호하는 AWS KMS keys 것은 모든 AWS 리소스의 보안에 매우 중요합니다. KMS 키는 AWS 계정에서 가장 중요한 리소스를 보호하는 데 사용됩니다. 따라서 KMS 키에 대한 액세스를 제어하는 [키 정책](key-policies.md),​​ IAM 정책, [권한 부여](grants.md) 및 VPC 엔드포인트 정책을 설계하는 데 시간을 할애하세요.

KMS 키에 대한 액세스를 제어하는 IAM 정책 설명에서 [최소 권한 원칙](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)을 사용합니다. IAM 보안 주체에 사용하거나 관리해야 하는 KMS 키에만 필요한 권한만 부여합니다.

다음 모범 사례는 AWS KMS 키 및 별칭에 대한 액세스를 제어하는 IAM 정책에 적용됩니다. 일반적인 IAM 정책 모범 사례 지침은 **IAM 사용 설명서의 [IAM의 보안 모범 사례](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)를 참조하세요.

**키 정책 사용**  
가능하면 다른 AWS 계정에 있는 키를 포함해 여러 KMS 키에 적용할 수 있는 IAM 정책보다는 하나의 KMS 키에 영향을 주는 키 정책에 권한을 제공합니다. 이는 [kms:PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) 및 [kms:ScheduleKeyDeletion](https://docs.aws.amazon.com/kms/latest/APIReference/API_ScheduleKeyDeletion.html)과 같은 민감한 권한뿐만 아니라 데이터 보호 방법을 결정하는 암호화 작업에도 특히 중요합니다.

**CreateKey 권한 제한**  
필요한 보안 주체에게만 키 생성 권한([kms:CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html))을 부여합니다. KMS 키를 만드는 보안 주체도 키 정책을 설정하므로 자신이 만든 KMS 키를 사용하고 관리할 수 있는 권한을 자신과 다른 사용자에게 부여할 수 있습니다. 이 사용 권한을 할 때 [정책 조건](policy-conditions.md)을 사용하여 제한하는 것이 좋습니다. 예를 들어, [kms:KeySpec](conditions-kms.md#conditions-kms-key-spec) 조건을 사용하여 대칭 암호화 KMS 키에 대한 권한을 제한할 수 있습니다.

**IAM 정책에서 KMS 키 지정**  
가장 좋은 방법은 정책 설명의 `Resource` 요소에 권한이 적용되는 각 KMS 키의 [키 ARN](concepts.md#key-id-key-ARN)을 지정하는 것입니다. 이 방법은 보안 주체에 필요한 KMS 키에 대한 사용 권한을 제한합니다. 예를 들어 이 `Resource` 요소는 보안 주체가 사용해야 하는 KMS 키만 나열합니다.  

```
"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 키를 지정하는 것이 실용적이지 않은 경우와 같이 신뢰할 수 있는 AWS 계정 및 리전의 KMS 키에 대한 액세스를 제한하는 `Resource` 값을 사용합니다`arn:aws:kms:region:account:key/*`. 또는 AWS 계정와 같이 신뢰할 수 있는의 모든 리전(\$1)에서 KMS 키에 대한 액세스를 제한합니다`arn:aws:kms:*:account:key/*`.  
[키 ID](concepts.md#key-id-key-id), [별칭 이름](concepts.md#key-id-alias-name) 또는 [별칭 ARN](concepts.md#key-id-alias-ARN)을 사용하여 IAM 정책의 `Resource` 필드에서 KMS 키를 나타낼 수 없습니다. 별칭 ARN을 지정하면 정책이 KMS 키가 아닌 별칭에 적용됩니다. 별칭에 대한 IAM 정책에 대한 자세한 내용은 [별칭에 대한 액세스 제어](alias-access.md) 섹션을 참조하십시오.

**IAM 정책에서 "Resource": "\$1" 사용 안 함**  <a name="avoid-resource-star"></a>
와일드카드 문자 (\$1)를 신중하게 사용하십시오. 키 정책에서 `Resource` 요소의 와일드카드 문자는 키 정책이 연결된 KMS 키를 나타냅니다. 그러나 IAM 정책에서는 `Resource` 요소(`"Resource": "*"`)의 와일드카드 문자만 보안 주체의 계정에 사용 권한이 AWS 계정 있는 모든의 모든 KMS 키에 권한을 적용합니다. 여기에는 [다른의 KMS 키 AWS 계정](key-policy-modifying-external-accounts.md)와 보안 주체 계정의 KMS 키가 포함될 수 있습니다.  
예를 들어 다른에서 KMS 키를 사용하려면 보안 주체 AWS 계정는 외부 계정에 있는 KMS 키의 키 정책 및 자체 계정에 있는 IAM 정책의 권한이 필요합니다. 임의의 계정이 KMS 키에 대한 AWS 계정 [kms:Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 권한을 부여했다고 가정합니다. 이 경우 역할에 모든 KMS 키(`"Resource": "*"`)에 대한 `kms:Decrypt` 권한을 부여하는 계정의 IAM 정책은 요구 사항의 IAM 부분을 충족합니다. 따라서 해당 역할을 수임할 수 있는 보안 주체는 이제 신뢰할 수 없는 계정의 KMS 키를 사용하여 암호문을 해독할 수 있습니다. 두 계정의 CloudTrail 로그에 해당 작업에 대한 항목이 표시됩니다.  
특히 다음 API 작업을 허용하는 정책 설명에서 `"Resource": "*"`를 사용하지 마십시오. 이러한 작업은 다른의 KMS 키에서 호출할 수 있습니다 AWS 계정.  
+ [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)
+ [GetKeyRotationStatus](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetKeyRotationStatus.html)
+ [암호화 작업](kms-cryptography.md#cryptographic-operations)([Encrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.html), [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html), [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html), [GenerateDataKeyPair](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPair.html), [GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html), [GenerateDataKeyPairWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPairWithoutPlaintext.html), [GetPublicKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html), [ReEncrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html), [Sign](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html), [Verify](https://docs.aws.amazon.com/kms/latest/APIReference/API_Verify.html))
+ [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html), [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html), [ListRetirableGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListRetirableGrants.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)

**"Resource": "\$1"를 사용하는 경우**  <a name="require-resource-star"></a>
IAM 정책에서 필요한 권한에 대해서만 `Resource` 요소의 와일드카드 문자를 사용하십시오. 다음 권한에만 `"Resource": "*"` 요소가 필요합니다.  
+ [kms:CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html)
+ [kms:GenerateRandom](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateRandom.html)
+ [kms:ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html)
+ [kms:ListKeys](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html)
+ 사용자 지정 키 스토어 권한(예: [kms:CreateCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateCustomKeyStore.html) 및 [kms:ConnectCustomKeyStore](https://docs.aws.amazon.com/kms/latest/APIReference/API_ConnectCustomKeyStore.html))
별칭 작업에 대한 권한([kms:CreateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateAlias.html), [kms:UpdateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_UpdateAlias.html), [kms:DeleteAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeleteAlias.html))은 별칭과 KMS 키에 연결되어야 합니다. IAM 정책에서 `"Resource": "*"`를 사용하여 별칭과 KMS 키를 나타내거나 `Resource` 요소에서 별칭과 KMS 키를 지정할 수 있습니다. 예제는 [별칭에 대한 액세스 제어](alias-access.md) 섹션을 참조하십시오.

 

이 항목의 예에서는 KMS 키에 대한 IAM 정책을 설계하기 위한 추가 정보와 지침을 제공합니다. 모든 AWS 리소스에 대한 IAM 모범 사례는 [IAM 사용 설명서의 IAM의 보안 모범 사례를](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) 참조하세요. ** 

# IAM 정책 설명에서 KMS 키 지정
<a name="cmks-in-iam-policies"></a>

IAM 정책을 사용하여 보안 주체가 KMS 키를 사용하거나 관리하도록 허용할 수 있습니다. KMS 키는 정책 설명의 `Resource` 요소에 지정됩니다.
+ IAM 정책 설명에서 KMS 키를 지정하려면[키 ARN](concepts.md#key-id-key-ARN)을 사용해야 합니다. [키 ID](concepts.md#key-id-key-id), [별칭 이름](concepts.md#key-id-alias-name) 또는 [별칭 ARN](concepts.md#key-id-alias-ARN)을 사용하여 IAM 정책 설명에서 KMS 키를 식별할 수 없습니다.

  예: "`Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab`"

  별칭을 기반으로 KMS 키에 대한 액세스를 제어하려면[kms:RequestAlias](conditions-kms.md#conditions-kms-request-alias) 또는 [kms:ResourceAliases](conditions-kms.md#conditions-kms-resource-aliases) 조건 키를 사용합니다. 자세한 내용은 [에 대한 ABAC AWS KMS](abac.md) 섹션을 참조하십시오.

  [CreateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/CreateAlias.html), [UpdateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/UpdateAlias.html) 또는 [DeleteAlias](https://docs.aws.amazon.com/kms/latest/APIReference/DeleteAlias.html)와 같은 별칭 작업에 대한 액세스를 제어하는 ​​정책 설명에서만 별칭 ARN을 리소스로 사용합니다. 자세한 내용은 [별칭에 대한 액세스 제어](alias-access.md) 섹션을 참조하세요.
+ 계정 및 리전에서 여러 KMS 키를 지정하려면 키 ARN의 리전 또는 리소스 ID 위치에 와일드카드 문자(\$1)를 사용합니다.

  예를 들어 계정의 미국 서부(오레곤) 리전에 있는 모든 KMS 키를 지정하려면 "`Resource": "arn:aws:kms:us-west-2:111122223333:key/*`"를 사용합니다. 계정의 모든 리전에서 모든 KMS 키를 지정하려면 "`Resource": "arn:aws:kms:*:111122223333:key/*`"를 사용합니다.
+ 모든 KMS 키를 표시하려면 와일드카드 문자(`"*"`)만 사용합니다. 특정 KMS 키, 즉 [CreateKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateKey.html), [GenerateRandom](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateRandom.html), [ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html) 및 [ListKeys](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html)를 사용하지 않는 작업에 이 형식을 사용합니다.

정책 설명을 작성할 때 모든 KMS 키에 대한 액세스 권한을 부여하는 대신 보안 주체가 사용해야 하는 KMS 키만 지정하는 것이 [모범 사례](iam-policies-best-practices.md)입니다.

예를 들어 다음 IAM 정책 문은 위탁자가 정책 문의 `Resource` 요소에 나열된 KMS 키에 대해서만 [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html), [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html), [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 작업을 직접적으로 호출하도록 허용합니다. 키 ARN으로 KMS 키를 지정하면 사용 권한이 지정된 KMS 키로만 제한됩니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:DescribeKey",
      "kms:GenerateDataKey",
      "kms:Decrypt"
    ],
    "Resource": [
     "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
     "arn:aws:kms:us-west-2:111122223333:key/01234abcd-12ab-34cd-56ef-1234567890ab"
    ]
  }
}
```

------

신뢰할 수 있는 특정의 모든 KMS 키에 권한을 적용하려면 리전 및 키 ID 위치에 와일드카드 문자(\$1)를 사용할 AWS 계정수 있습니다. 예를 들어 다음 정책 설명은 보안 주체가 두 개의 신뢰할 수 있는 예제 계정의 모든 KMS 키에 대해 지정된 작업을 호출하도록 허용합니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:DescribeKey",
      "kms:GenerateDataKey",
      "kms:GenerateDataKeyPair"
    ],
    "Resource": [
      "arn:aws:kms:*:111122223333:key/*",
      "arn:aws:kms:*:444455556666:key/*"
    ]
  }
}
```

------

`Resource` 요소에서 와일드카드 문자(`"*"`)만 사용할 수도 있습니다. 계정에 사용 권한이 있는 모든 KMS 키에 대한 액세스를 허용하므로 특정 KMS 키가 없는 작업 및 `Deny` 문에 주로 권장됩니다. 덜 민감한 읽기 전용 작업만 허용하는 정책 설명에서도 이 기능을 사용할 수 있습니다. AWS KMS 작업에 특정 KMS 키가 포함되어 있는지 확인하려면에 있는 테이블의 **리소스** 열에서 **KMS 키** 값을 찾습니다[AWS KMS 권한](kms-api-permissions-reference.md).

예를 들어 다음 정책 설명은`Deny` 효과를 사용하여 보안 주체가 모든 KMS 키에 대해 지정된 작업을 사용하지 못하도록 합니다. `Resource` 요소에 와일드카드 문자를 사용하여 모든 KMS 키를 나타냅니다.

------
#### [ JSON ]

****  

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

------

다음 정책 설명에서는 와일드카드 문자만 사용하여 모든 KMS 키를 나타냅니다. 그러나 덜 민감한 읽기 전용 작업과 특정 KMS 키에 적용되지 않는 작업만 허용합니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": {
    "Effect": "Allow",
    "Action": [
      "kms:CreateKey",
      "kms:ListKeys",
      "kms:ListAliases",
      "kms:ListResourceTags"
    ],
    "Resource": "*"
  }
}
```

------

# IAM 정책 예시
<a name="customer-managed-policies"></a>

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

**중요**  
다음 정책에 포함된 권한 중 일부는 KMS 키의 키 정책에서도 허용하는 경우에만 허용됩니다. 자세한 내용은 [권한 참조](kms-api-permissions-reference.md) 단원을 참조하십시오.

JSON 정책 문서 작성 및 형식 지정에 대한 도움말은 *IAM 사용 설명서*의 [IAM JSON 정책 참조](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies.html)를 참조하십시오.

**Topics**
+ [사용자가 AWS KMS 콘솔에서 KMS 키를 볼 수 있도록 허용](#iam-policy-example-read-only-console)
+ [사용자가 KMS 키를 생성할 수 있도록 허용](#iam-policy-example-create-key)
+ [사용자가 특정의 KMS 키를 사용하여 암호화 및 복호화하도록 허용 AWS 계정](#iam-policy-example-encrypt-decrypt-one-account)
+ [사용자가 특정 및 리전의 모든 KMS 키를 사용하여 암호화 AWS 계정 및 복호화할 수 있도록 허용](#iam-policy-example-encrypt-decrypt-one-account-one-region)
+ [사용자가 특정 KMS 키로 암호화와 해독을 수행하도록 허용](#iam-policy-example-encrypt-decrypt-specific-cmks)
+ [사용자가 KMS 키를 비활성화하거나 삭제하지 못하도록 차단](#iam-policy-example-deny-disable-delete)

## 사용자가 AWS KMS 콘솔에서 KMS 키를 볼 수 있도록 허용
<a name="iam-policy-example-read-only-console"></a>

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

**AWS 관리형 키** 및 **고객 관리형 키** 페이지에서 KMS 키를 보려면, 키에 태그나 별칭이 없더라도 위탁자에게 [kms:ListKeys](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListKeys.html), [kms:ListAliases](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListAliases.html) 및 [tag:GetResources](https://docs.aws.amazon.com/resourcegroupstagging/latest/APIReference/API_GetResources.html) 권한이 필요합니다. 나머지 사용 권한, 특히 [kms:DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)는 KMS 키 세부 정보 페이지에서 선택적 KMS 키 테이블 열 및 데이터를 보는 데 필요합니다. [iam:ListUsers](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListUsers.html) 및 [iam:ListRoles](https://docs.aws.amazon.com/IAM/latest/APIReference/API_ListRoles.html) 권한은 오류 없이 기본 보기에 키 정책을 표시하는 데 필요합니다. **사용자 지정 키 스토어** 페이지의 데이터와 사용자 지정 키 저장소의 KMS 키에 대한 세부 정보를 보려면 보안 주체에 [kms:DescribeCustomKeyStores](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeCustomKeyStores.html) 권한도 필요합니다.

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

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

------
#### [ JSON ]

****  

```
{
  "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 키를 생성할 수 있도록 허용
<a name="iam-policy-example-create-key"></a>

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

사용자를 특정 유형의 KMS 키로 제한하려면 [kms:KeySpec](conditions-kms.md#conditions-kms-key-spec), [kms:KeyUsage](conditions-kms.md#conditions-kms-key-usage), [kms:KeyOrigin](conditions-kms.md#conditions-kms-key-origin) 조건 키를 사용합니다.

------
#### [ JSON ]

****  

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

------

키를 만드는 보안 주체에게는 몇 가지 관련 사용 권한이 필요할 수 있습니다.
+ **kms:PutKeyPolicy** — `kms:CreateKey` 권한이 있는 보안 주체는 KMS 키에 대한 초기 키 정책을 설정할 수 있습니다. 그러나, `CreateKey` 호출자는 KMS 키 정책을 변경할 수 있는 [kms:PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) 권한이 있어야 하고, 권장되지 않는 `CreateKey`의 `BypassPolicyLockoutSafetyCheck` 파라미터를 지정해야 합니다. `CreateKey` 호출자는 IAM 정책에서 KMS 키에 대한 `kms:PutKeyPolicy` 권한을 가져오거나 생성 중인 KMS 키의 키 정책에 이 권한을 포함할 수 있습니다.
+ **kms:TagResource** — `CreateKey` 작업 중에 KMS 키에 태그를 추가하려면 `CreateKey` 호출자는 IAM 정책에서 [kms:TagResource](https://docs.aws.amazon.com/kms/latest/APIReference/API_TagResource.html) 권한이 있어야 합니다. 새 KMS 키의 키 정책에 이 권한을 포함시키는 것만으로는 충분하지 않습니다. 그러나, `CreateKey` 호출자가 초기 키 정책에 `kms:TagResource`를 포함하는 경우 KMS 키가 생성된 후 별도의 호출에서 태그를 추가할 수 있습니다.
+ **kms:CreateAlias** - AWS KMS 콘솔에서 KMS 키를 생성하는 보안 주체는 KMS 키 및 별칭에 대해 [kms:CreateAlias](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateAlias.html) 권한이 있어야 합니다. (콘솔은 `CreateKey`, `CreateAlias`를 각각 한 번씩, 두 번 호출합니다.) IAM 정책에서 별칭 권한을 제공해야 합니다. 키 정책 또는 IAM 정책에서 KMS 키 권한을 제공할 수 있습니다. 자세한 내용은 [별칭에 대한 액세스 제어](alias-access.md) 섹션을 참조하세요.

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

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

------
#### [ JSON ]

****  

```
{
  "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": "*"
    }
  ]
}
```

------

## 사용자가 특정의 KMS 키를 사용하여 암호화 및 복호화하도록 허용 AWS 계정
<a name="iam-policy-example-encrypt-decrypt-one-account"></a>

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

------
#### [ JSON ]

****  

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

------

## 사용자가 특정 및 리전의 모든 KMS 키를 사용하여 암호화 AWS 계정 및 복호화할 수 있도록 허용
<a name="iam-policy-example-encrypt-decrypt-one-account-one-region"></a>

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

------
#### [ JSON ]

****  

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

------

## 사용자가 특정 KMS 키로 암호화와 해독을 수행하도록 허용
<a name="iam-policy-example-encrypt-decrypt-specific-cmks"></a>

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

------
#### [ JSON ]

****  

```
{
  "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/01234abc-d12a-b34c-d56e-f1234567890a'"
    ]
  }
}
```

------

## 사용자가 KMS 키를 비활성화하거나 삭제하지 못하도록 차단
<a name="iam-policy-example-deny-disable-delete"></a>

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

------
#### [ JSON ]

****  

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

------