

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

# 의 권한 부여 AWS KMS
<a name="grants"></a>

*권한 부여*는 [AWS 보안 주체](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-principal)가 암호화 작업에서 KMS 키를 사용할 수 있도록 하는 정책 도구입니다. 또한 KMS 키(`DescribeKey`)를 보고 권한 부여를 생성 및 관리할 수 있습니다. KMS 키에 대한 액세스 권한을 부여할 때 [키 정책](key-policies.md) 및 [IAM 정책](iam-policies.md)과 함께 권한 부여가 고려됩니다. 권한 부여는 키 정책이나 IAM 정책을 변경하지 않고 권한을 생성하고 삭제할 수 있기 때문에 임시 권한에 자주 사용됩니다.

권한 부여는 저장 데이터를 암호화 AWS KMS 하기 위해와 통합되는 AWS 서비스에서 일반적으로 사용됩니다. 서비스는 계정의 사용자를 대신하여 권한 부여를 만들고, 권한을 사용하고, 작업이 완료되는 즉시 권한 부여를 폐기합니다. AWS 서비스에서 권한 부여를 사용하는 방법에 대한 자세한 내용은 서비스 사용 설명서 또는 개발자 안내서의 *저장 시 암호화* 주제를 참조하세요.

권한 부여는 매우 유연하고 유용한 액세스 제어 메커니즘입니다. KMS 키에 대한 권한 부여를 생성하면 권한 부여에 지정된 모든 조건이 충족되는 경우 권한 부여를 통해 피부여자 보안 주체가 KMS 키에 대해 지정된 권한 부여 작업을 호출할 수 있습니다.
+ 각 권한 부여를 통해 정확히 하나의 KMS 키에 액세스할 수 있습니다. 다른 AWS 계정에서 KMS 키에 대한 권한 부여를 생성할 수 있습니다.
+ 권한 부여는 KMS 키에 대한 액세스를 허용할 수 있지만 액세스를 거부할 수는 없습니다.
+ 각 권한 부여에는 하나의 [피부여자 보안 주체](#terms-grantee-principal)가 있습니다. 피부여자 보안 주체는 KMS 키 AWS 계정 와 동일한 또는 다른 계정에서 하나 이상의 자격 증명을 나타낼 수 있습니다.
+ 권한 부여는 [권한 부여 작업](#terms-grant-operations)만 허용할 수 있습니다. 권한 부여 작업은 권한 부여의 KMS 키로 지원되어야 합니다. 지원되지 않는 작업을 지정하면 [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) 요청이 `ValidationError` 예외와 함께 실패합니다.
+ 피부여자 보안 주체는 권한이 키 정책 또는 IAM 정책에서 제공되는 경우와 마찬가지로 권한 부여를 지정하지 않고 권한 부여가 부여하는 권한을 사용할 수 있습니다. 그러나 AWS KMS API는 [최종 일관성](#terms-eventual-consistency) 모델을 따르기 때문에 권한 부여를 생성, 사용 중지 또는 취소할 때 변경 사항이 전체에 적용되기 전에 잠시 지연될 수 있습니다 AWS KMS. 권한 부여에서 권한을 즉시 사용하려면 [권한 부여 토큰](using-grant-token.md)을 사용하십시오.
+ 권한이 부여된 보안 주체는 권한 부여를 삭제([사용 중지](#terms-retire-grant) 또는 [취소](#terms-revoke-grant))할 수 있습니다. 권한 부여를 삭제하면 권한 부여가 허용한 모든 권한이 제거됩니다. 권한 부여를 실행 취소하기 위해 추가하거나 제거할 정책을 파악할 필요가 없습니다.
+ AWS KMS 는 각 KMS 키에 대한 권한 부여 수를 제한합니다. 자세한 내용은 [KMS 키당 권한 부여: 50,000](resource-limits.md#grants-per-key)을 참조하세요.

권한 부여를 생성할 때와 다른 사람에게 권한 부여 생성 권한을 부여할 때는 주의해야 합니다. 권한 부여를 생성할 수 있는 권한은 정책을 설정할 수 있는 [kms:PutKeyPolicy](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html) 권한을 사용하여 정책을 설정할 수 있습니다.
+ KMS 키(`kms:CreateGrant`)에 대한 권한 부여를 생성할 권한이 있는 사용자는 권한 부여를 사용하여 AWS 서비스를 포함한 사용자 및 역할이 KMS 키를 사용하도록 허용할 수 있습니다. 보안 주체는 자신의 자격 증명 AWS 계정 이거나 다른 계정 또는 조직의 자격 증명일 수 있습니다.
+ 권한 부여는 AWS KMS 작업의 하위 집합만 허용할 수 있습니다. 권한 부여를 사용하여 보안 주체가 KMS 키를 보고, 암호화 작업에 사용하고, 권한 부여를 만들고 사용 중지하도록 허용할 수 있습니다. 자세한 내용은 [권한 부여 작업](#terms-grant-operations) 섹션을 참조하세요. [권한 부여 제약 조건](create-grant-overview.md#grant-constraints)을 사용하여 대칭 암호화 키에 대한 권한 부여의 사용 권한을 제한할 수 있습니다.
+ 보안 주체는 키 정책 또는 IAM 정책에서 권한 부여를 생성할 수 있는 권한을 가질 수 있습니다. 정책에서 `kms:CreateGrant` 권한을 받은 보안 주체는 KMS 키에 대한 [권한 부여 작업](#terms-grant-operations)에 대한 권한을 생성할 수 있습니다. 이러한 보안 주체는 키에 대해 부여한 권한이 필요하지 않습니다. 정책에서 `kms:CreateGrant` 권한을 허용하면 [정책 조건](grant-authorization.md)을 사용하여 이 권한을 제한할 수 있습니다.
+ 보안 주체는 권한 부여에서 권한 부여를 만들 수 있는 권한을 가져올 수도 있습니다. 이러한 위탁자는 정책에서 다른 권한이 있더라도 부여된 권한만 위임할 수 있습니다. 자세한 내용은 [CreateGrant 권한 부여](create-grant-overview.md#grant-creategrant)을 참조하세요.

## 권한 부여 개념
<a name="grant-concepts"></a>

권한 부여를 효과적으로 사용하려면 AWS KMS 가 사용하는 용어와 개념을 이해해야 합니다.

**권한 부여 제약**  <a name="terms-grant-constraint"></a>
권한 부여의 권한을 제한하는 조건입니다. 현재는 암호화 작업 요청의 암호화 [컨텍스트](encrypt_context.md)를 기반으로 하는 권한 부여 제약 조건을 AWS KMS 지원합니다. 자세한 내용은 [권한 부여 제약 사용](create-grant-overview.md#grant-constraints)을 참조하세요.

**권한 부여 ID**  <a name="terms-grant-id"></a>
KMS 키에 대한 권한 부여의 고유 식별자입니다. [키 식별자](concepts.md#key-id)와 함께 권한 부여 ID를 사용하여 [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html) 또는 [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html) 요청에서 권한 부여를 식별할 수 있습니다.

**권한 부여 작업**  <a name="terms-grant-operations"></a>
권한 부여에서 허용할 수 있는 AWS KMS 작업입니다. 다른 작업을 지정하면 [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) 요청이 `ValidationError` 예외와 함께 실패합니다. [권한 부여 토큰](#grant_token)을 수락하는 작업이기도 합니다. 이러한 권한에 대한 자세한 내용은 [AWS KMS 권한](kms-api-permissions-reference.md) 섹션을 참조하세요.  
이러한 권한 부여 작업은 실제로 작업을 사용할 수 있는 권한을 나타냅니다. 따라서 `ReEncrypt` 작업의 경우 `ReEncryptFrom`, `ReEncryptTo` 또는 둘 다 `ReEncrypt*`를 지정할 수 있습니다.  
권한 부여 작업은 다음과 같습니다.  
+ 암호화 작업
  + [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)
  + [DeriveSharedSecret](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret.html)
  + [암호화](https://docs.aws.amazon.com/kms/latest/APIReference/API_Encrypt.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)
  + [GenerateDataKeyPairWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyPairWithoutPlaintext.html)
  + [GenerateDataKeyWithoutPlaintext](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKeyWithoutPlaintext.html)
  + [GenerateMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateMac.html)
  + [ReEncryptFrom](https://docs.aws.amazon.com/kms/latest/APIReference/API_ReEncrypt.html)
  + [ReEncryptTo](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)
  + [VerifyMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_VerifyMac.html)
+ 기타 작업
  + [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)
  + [DescribeKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html)
  + [GetPublicKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GetPublicKey.html)
  + [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)
허용한 권한 부여 작업은 권한 부여의 KMS 키로 지원되어야 합니다. 지원되지 않는 작업을 지정하면 [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) 요청이 `ValidationError` 예외와 함께 실패합니다. 예를 들어 대칭 암호화 KMS 키에 대한 권한 부여는 [Sign](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html), [Verify](https://docs.aws.amazon.com/kms/latest/APIReference/API_Verify.html), [https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateMac.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateMac.html) 또는 [https://docs.aws.amazon.com/kms/latest/APIReference/API_VerifyMac.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_VerifyMac.html) 작업을 허용하지 않습니다. 비대칭 KMS 키에 대한 권한 부여는 데이터 키 또는 데이터 키 페어를 생성하는 작업을 허용하지 않습니다.

**권한 부여 토큰**  <a name="grant_token"></a>
 AWS KMS API는 [최종 일관성](#terms-eventual-consistency) 모델을 따릅니다. 권한 부여를 생성할 때, 변경 사항이 AWS KMS전체에 적용되기까지 잠깐의 지연이 있을 수 있습니다. 변경 사항이 시스템 전체에 전파되는 데에는 일반적으로 몇 초도 걸리지 않지만 경우에 따라 몇 분 정도 걸릴 수도 있습니다. 시스템에 전체에 완전히 전파하기 전에 권한 부여를 사용하려고 하면 액세스 거부 오류가 발생할 수 있습니다. 권한 부여 토큰을 사용하면 권한 부여를 참조하고 즉시 권한 부여 권한을 사용할 수 있습니다.  
*권한 부여 토큰*은 권한 부여를 나타내는 고유하고 암호화되지 않은 가변 길이 base64 인코딩 문자열입니다. 권한 부여 토큰을 사용하여 [권한 부여 작업](#terms-grant-operations)에서 권한 부여를 식별할 수 있습니다. 그러나 토큰 값은 해시 다이제스트이므로 권한 부여에 대한 세부 정보는 공개되지 않습니다.  
권한 부여 토큰은 권한 부여가 AWS KMS전체에 완전히 전파될 때까지만 사용하도록 설계되었습니다. 그 후, [피부여자 보안 주체](#terms-grantee-principal)는 권한 부여 토큰이나 권한 부여에 대한 다른 증거를 제공하지 않고 권한 부여의 권한을 사용할 수 있습니다. 권한 부여 토큰은 언제든지 사용할 수 있지만 권한 부여가 최종적으로 일관되면는 권한 부여 토큰이 아닌 권한을 결정하는 데 권한 부여를 AWS KMS 사용합니다.  
예를 들어 다음 명령은 [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) 작업을 사용합니다. 권한 부여 토큰을 사용하여 지정된 KMS 키에서 `GenerateDataKey`를 호출할 수 있는 권한을 호출자(피부여자 보안 주체)에게 부여하는 권한 부여를 나타냅니다.  

```
$ aws kms generate-data-key \
        --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
        --key-spec AES_256 \
        --grant-token $token
```
권한 부여 토큰을 사용하여 권한 부여를 관리하는 작업에서 권한 부여를 식별할 수도 있습니다. 예를 들어, [사용 중지 보안 주체](#terms-retiring-principal)는 [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html) 작업을 호출할 때 권한 부여 토큰을 사용할 수 있습니다.  

```
$ aws kms retire-grant \
        --grant-token $token
```
`CreateGrant`는 권한 부여 토큰을 반환하는 유일한 작업입니다. 다른 AWS KMS 작업이나 CreateGrant 작업에 대한 [CloudTrail 로그 이벤트](ct-creategrant.md)에서는 권한 부여 토큰을 가져올 수 없습니다. [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html) 및 [ListRetirableGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListRetirableGrants.html) 작업은 [권한 부여 ID](#terms-grant-id)를 반환하지만 권한 부여 토큰은 아닙니다.  
자세한 내용은 [권한 부여 토큰 사용](using-grant-token.md) 섹션을 참조하세요.

**피부여자 보안 주체**  <a name="terms-grantee-principal"></a>
권한 부여에 지정된 권한을 가져오는 ID입니다. 각 권한 부여에는 하나의 피부여자 보안 주체가 있지만 피부여자 보안 주체는 여러 ID를 나타낼 수 있습니다.  
피부여자 보안 주체는 AWS 계정 (루트), [IAM 사용자](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html), [IAM 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html), [페더레이션 역할 또는 사용자](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) 또는 수임된 역할 사용자를 포함한 모든 보안 AWS 주체일 수 있습니다. 피부여자 보안 주체는 KMS 키와 동일한 계정 또는 다른 계정에 있을 수 있습니다. 그러나 피부여자 보안 주체는 [서비스 주체](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services), [IAM 그룹](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) 또는 [AWS 조직](https://docs.aws.amazon.com/organizations/latest/userguide/)일 수 없습니다.  
IAM 모범 사례는 장기 보안 인증 정보가 있는 IAM 사용자의 사용을 장려하지 않습니다. 가능할 경우, 임시 보안 인증 정보를 제공하는 IAM 역할을 사용하세요. 자세한 내용은 *IAM 사용 설명서*의 [IAM의 보안 모범 사례](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)를 참조하세요.

**권한 부여 사용 중지**  <a name="terms-retire-grant"></a>
권한 부여를 종료합니다. 권한 사용을 마치면 권한 부여를 사용 중지합니다.  
권한 부여를 취소하거나 사용 중지하면 권한 부여가 삭제됩니다. 그러나 사용 중지는 권한 부여에 지정된 보안 주체에 의해 수행됩니다. 취소는 일반적으로 키 관리자가 수행합니다. 자세한 내용은 [권한 부여 사용 중지 및 취소](grant-delete.md) 섹션을 참조하세요.

**사용 중지 보안 주체**  <a name="terms-retiring-principal"></a>
[권한 부여를 사용 중지](#terms-retire-grant)할 수 있는 보안 주체입니다. 권한 부여에서 사용 중지 보안 주체를 지정할 수 있지만 필수는 아닙니다. 사용 중지 보안 주체는 IAM 사용자, IAM 역할 AWS 계정, 페더레이션 사용자, 수임된 역할 사용자를 포함한 모든 보안 AWS 주체일 수 있습니다. 사용 중지 보안 주체는 KMS 키와 동일한 계정에 있거나 다른 계정에 있을 수 있습니다.  
IAM 모범 사례는 장기 보안 인증 정보가 있는 IAM 사용자의 사용을 장려하지 않습니다. 가능할 경우, 임시 보안 인증 정보를 제공하는 IAM 역할을 사용하세요. 자세한 내용은 *IAM 사용 설명서*의 [IAM의 보안 모범 사례](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)를 참조하세요.
권한 부여에 지정된 보안 주체를 사용 중지하는 것 외에도 권한 부여가 생성된 AWS 계정 에서 권한 부여를 사용 중지할 수 있습니다. 권한 부여가 `RetireGrant` 작업을 허용하는 경우 [피부여자 보안 주체](#terms-grantee-principal) 권한 부여를 사용 중지할 수 있습니다. 또한 사용 중지된 보안 주체 AWS 계정 인 AWS 계정 또는는 동일한의 IAM 보안 주체에 권한 부여 사용 중지 권한을 위임할 수 있습니다 AWS 계정. 자세한 내용은 [권한 부여 사용 중지 및 취소](grant-delete.md)을 참조하세요.

**권한 부여 취소**  <a name="terms-revoke-grant"></a>
권한 부여를 종료합니다. 권한 부여를 취소하면 권한 부여가 허용하는 권한을 적극적으로 거부할 수 있습니다.  
권한 부여를 취소하거나 사용 중지하면 권한 부여가 삭제됩니다. 그러나 사용 중지는 권한 부여에 지정된 보안 주체에 의해 수행됩니다. 취소는 일반적으로 키 관리자가 수행합니다. 자세한 내용은 [권한 부여 사용 중지 및 취소](grant-delete.md) 섹션을 참조하세요.

**(권한 부여의) 최종 일관성**  <a name="terms-eventual-consistency"></a>
 AWS KMS API는 [최종 일관성](https://en.wikipedia.org/wiki/Eventual_consistency) 모델을 따릅니다. 권한 부여를 생성, 사용 중지 또는 철회할 때, 변경 사항이 AWS KMS전체에 적용되기까지 잠깐의 지연이 있을 수 있습니다. 변경 사항이 시스템 전체에 전파되는 데에는 일반적으로 몇 초도 걸리지 않지만 경우에 따라 몇 분 정도 걸릴 수도 있습니다.  
예기치 않은 오류가 발생하는 경우 이 짧은 지연을 의식하게 됩니다. 예를 들어 권한 부여가 전체적으로 알려지기 전에 새 권한 부여를 관리하거나 새 권한 부여에서 권한을 사용하려고 AWS KMS하면 액세스 거부 오류가 발생할 수 있습니다. 권한 부여를 사용 중지하거나 취소하는 경우 권한 부여가 완전히 삭제될 때까지 피부여자 보안 주체가 잠시 동안 해당 권한을 계속 사용할 수 있습니다. 일반적인 전략은 요청을 재시도하는 것이며, 일부 AWS SDKs 포함됩니다.  
AWS KMS 에는 이러한 짧은 지연을 완화하는 기능이 있습니다.  
+ 새 권한 부여에서 권한을 즉시 사용하려면 [권한 부여 토큰](using-grant-token.md)을 사용하십시오. 권한 부여 토큰을 사용하여 모든 [권한 부여 작업](#terms-grant-operations)에서 권한 부여를 권한 부여를 참조할 수 있습니다. 지침은 [권한 부여 토큰 사용](using-grant-token.md) 섹션을 참조하세요.
+ [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) 작업에는 재시도 작업이 중복 부여를 생성하지 못하도록 하는 `Name` 파라미터가 있습니다.
권한 부여 토큰은 서비스의 모든 엔드포인트가 새 권한 부여 상태로 업데이트될 때까지 권한 부여의 유효성을 대체합니다. 대부분의 경우 최종 일관성은 5분 이내에 달성됩니다.
자세한 내용은 [AWS KMS 결과적 일관성](accessing-kms.md#programming-eventual-consistency)을 참조하세요.

# AWS KMS 권한 부여 모범 사례
<a name="grant-best-practices"></a>

AWS KMS 에서는 권한 부여를 생성, 사용 및 관리할 때 다음 모범 사례를 권장합니다.
+ 권한 부여의 권한을 피부여자 보안 주체에게 필요한 권한으로 제한합니다. [최소 권한 액세스](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) 원칙을 사용합니다.
+ IAM 역할과 같은 특정 피부여자 보안 주체를 사용하고 피부여자에게 필요한 API 작업만 사용할 수 있는 권한을 부여합니다.
+ 암호화 컨텍스트 [권한 부여 제약 조건](grants.md#terms-grant-constraint) 을 사용하여 호출자가 의도한 목적으로 KMS 키를 사용하고 있는지 확인합니다. 요청에서 암호화 컨텍스트를 사용하여 데이터를 보호하는 방법에 대한 자세한 내용은 *AWS 보안 블로그*[의 AWS Key Management Service 및 EncryptionContext를 사용하여 암호화된 데이터의 무결성을 보호하는 방법을 참조하세요](https://aws.amazon.com/blogs/security/how-to-protect-the-integrity-of-your-encrypted-data-by-using-aws-key-management-service-and-encryptioncontext/).
**작은 정보**  
가능할 때마다 [EncryptionContextEqual](create-grant-overview.md#grant-constraints) 제약 조건을 사용하십시오. [EncryptionContextSubset](create-grant-overview.md#grant-constraints) 권한 부여 제약 조건은 올바르게 사용하기가 더 어렵습니다. 그것을 사용해야 하는 경우 문서를 주의 깊게 읽고 권한 부여 제약 조건을 테스트해 의도한대로 작동하는지 확인하십시오.
+ 중복 권한 부여를 삭제합니다. 중복 권한 부여는 동일한 키 ARN, API 작업, 피부여자 보안 주체, 암호화 컨텍스트 및 이름을 갖습니다. 원래 권한 부여를 사용 중지 또는 취소하지만 중복된 권한 부여를 그대로 두는 경우 남은 중복 권한 부여가 의도하지 않은 권한 에스컬레이션을 구성합니다. `CreateGrant` 요청을 재시도할 때 중복 권한 부여를 방지하려면 [`Name` 파라미터](create-grant-overview.md#grant-create)를 사용하십시오. 중복 권한 부여를 검색하려면 [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html) 작업을 사용합니다. 실수로 중복 권한 부여를 생성한 경우 가능한 한 빨리 사용을 중지하거나 취소합니다.
**참고**  
[AWS 관리형 키](concepts.md#aws-managed-key)에 대한 권한 부여는 중복처럼 보일 수 있지만 피부여자 보안 주체가 다릅니다.  
`ListGrants` 응답의 `GranteePrincipal` 필드에는 일반적으로 권한 부여의 피부여자 보안 주체가 포함됩니다. 그러나 권한 부여의 피부여자 보안 주체가 AWS 서비스인 경우 `GranteePrincipal` 필드에는 여러 피부여자 [보안 주체를 나타낼 수 있는 서비스](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services) 보안 주체가 포함됩니다.
+ 권한 부여는 자동으로 만료되지 않습니다. 권한이 더 이상 필요하지 않으면 즉시 [권한 부여 사용을 중지 또는 취소](grant-delete.md)합니다. 삭제되지 않은 권한 부여는 암호화된 리소스에 대한 보안 위험을 초래할 수 있습니다.

# 권한 부여에 대한 액세스 제어
<a name="grant-authorization"></a>

주요 정책, IAM 정책 및 권한부여에서 권한 부여를 생성하고 관리하는 작업에 대한 액세스를 제어할 수 있습니다. 권한 부여에서 `CreateGrant` 권한을 받은 보안 주체는 [더 제한된 권한 부여 권한](create-grant-overview.md#grant-creategrant)을 갖습니다.


| API 작업 | 키 정책 또는 IAM 정책 | 권한 부여 | 
| --- | --- | --- | 
| CreateGrant | ✓ | ✓ | 
| ListGrants | ✓ | - | 
| ListRetirableGrants | ✓ | - | 
| 권한 부여 사용 중지 | (제한됨. [권한 부여 사용 중지 및 취소](grant-delete.md) 참조) | ✓ | 
| RevokeGrant | ✓ | - | 

키 정책 또는 IAM 정책을 사용하여 권한 부여를 생성하고 관리하는 작업에 대한 액세스를 제어하는 경우 다음 정책 조건 중 하나 이상을 사용하여 권한을 제한할 수 있습니다.는 다음 권한 부여 관련 조건 키를 모두 AWS KMS 지원합니다. 자세한 정보와 예제는 [AWS KMS 조건 키](conditions-kms.md) 섹션을 참조하세요.

[ kms:GrantConstraintType](conditions-kms.md#conditions-kms-grant-constraint-type)  
권한 부여에 지정된 권한 [부여 제약 조건](create-grant-overview.md#grant-constraints)이 포함된 경우에만 보안 주체가 권한 부여를 생성할 수 있습니다.

[kms:GrantIsForAWSResource](conditions-kms.md#conditions-kms-grant-is-for-aws-resource)  
[와 통합된 AWS 서비스가 보안 주체를 대신하여 요청을 AWS KMS](https://aws.amazon.com/kms/features/#AWS_Service_Integration) 보내는 `RevokeGrant` 경우에만 보안 주체가 `ListGrants`, 또는 `CreateGrant`를 호출하도록 허용합니다.

[kms:GrantOperations](conditions-kms.md#conditions-kms-grant-operations)  
보안 주체가 권한 부여를 생성할 수 있도록 허용하지만 권한 부여를 지정된 작업으로 제한합니다.

[kms:GranteePrincipal](conditions-kms.md#conditions-kms-grantee-principal)  
보안 주체가 지정된 [피부여자 보안 주체](grants.md#terms-grantee-principal)에 대해서만 권한 부여를 생성하도록 허용합니다.

[kms:RetiringPrincipal](conditions-kms.md#conditions-kms-retiring-principal)  
권한 부여가 특정 [사용 중지 보안 주체](grants.md#terms-retiring-principal)를 지정하는 경우에만 보안 주체가 권한 부여를 생성하도록 허용합니다.

# 권한 부여 생성
<a name="create-grant-overview"></a>

권한 부여를 생성하기 전에 권한 부여 사용자 정의 옵션에 대해 알아봅니다. *권한 부여 제약 조건*을 사용하여 권한 부여의 사용 권한을 제한할 수 있습니다. 또한 `CreateGrant` 권한 부여에 대해 알아보십시오. 권한 부여에서 권한 부여를 생성할 수 있는 권한을 받은 보안 주체는 생성할 수 있는 권한이 제한됩니다.

**Topics**
+ [권한 부여 생성](#grant-create)
+ [CreateGrant 권한 부여](#grant-creategrant)

## 권한 부여 생성
<a name="grant-create"></a>

권한 부여를 생성하려면 [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) 작업을 호출합니다. KMS 키, [피부여자 보안 주체](grants.md#terms-grantee-principal) 및 허용된 [권한 부여 작업](grants.md#terms-grant-operations) 목록을 지정합니다. [사용 중지 보안 주체](grants.md#terms-retiring-principal)를 선택적으로 지정할 수도 있습니다. 권한 부여를 사용자 지정하려면 선택적 `Constraints` 매개 변수를 사용하여 [권한 부여 제약](https://docs.aws.amazon.com/kms/latest/APIReference/API_GrantConstraints.html)을 정의합니다.

권한 부여를 생성, 폐기 또는 취소할 때 AWS KMS전체에서 변경 내용을 사용할 수 있을 때까지 짧은 지연(보통 5분 미만)이 있을 수 있습니다. 자세한 내용은 [결과적 일관성(권한 부여용)](grants.md#terms-eventual-consistency)을 참조하세요.

예를 들어 다음 `CreateGrant` 명령은 `keyUserRole` 역할을 수임할 권한이 있는 사용자가 지정된 [대칭 KMS 키](symm-asymm-choose-key-spec.md#symmetric-cmks)에서 [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 작업을 호출할 수 있도록 허용하는 권한 부여를 생성합니다. 이 권한 부여는 `RetiringPrincipal` 파라미터를 사용하여 권한 부여를 중단시킬 수 있는 보안 주체를 지정합니다. 또한 요청의 [암호화 컨텍스트](encrypt_context.md)가 `"Department": "IT"`를 포함하는 경우에만 권한을 허용하는 권한 부여 제약 조건이 포함되어 있습니다.

```
$  aws kms create-grant \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --grantee-principal arn:aws:iam::111122223333:role/keyUserRole \
    --operations Decrypt \
    --retiring-principal arn:aws:iam::111122223333:role/adminRole \
    --constraints EncryptionContextSubset={Department=IT}
```

코드가 `CreateGrant` 작업을 다시 시도하거나 [요청을 자동으로 다시 시도하는AWS SDK](https://docs.aws.amazon.com/general/latest/gr/api-retries.html)를 사용하는 경우 [이름](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html#KMS-CreateGrant-request-Name) 파라미터 옵션을 사용하여 중복 권한 부여의 생성을 방지합니다. 가 이름을 포함하여 기존 권한 부여와 동일한 속성의 권한 부여 `CreateGrant` 요청을 AWS KMS 받으면 요청을 재시도로 인식하고 새 권한 부여를 생성하지 않습니다. `Name` 값을 사용하여 AWS KMS 작업에서 권한 부여를 식별할 수 없습니다.

**중요**  
권한 부여 이름에 기밀 또는 민감한 정보를 포함하지 마십시오. CloudTrail 로그 및 기타 출력에 일반 텍스트로 표시될 수 있습니다.

```
$ aws kms create-grant \
    --name IT-1234abcd-keyUserRole-decrypt \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --grantee-principal arn:aws:iam::111122223333:role/keyUserRole \
    --operations Decrypt \
    --retiring-principal arn:aws:iam::111122223333:role/adminRole \
    --constraints EncryptionContextSubset={Department=IT}
```

여러 프로그래밍 언어로 권한 부여를 생성하는 방법을 보여주는 코드 예제는 [AWS SDK 또는 CLI와 `CreateGrant` 함께 사용](example_kms_CreateGrant_section.md) 단원을 참조하세요.

### 권한 부여 제약 사용
<a name="grant-constraints"></a>

[권한 부여 제약](https://docs.aws.amazon.com/kms/latest/APIReference/API_GrantConstraints.html)은 권한 부여를 통해 피부여자 보안 주체에게 부여하는 권한에 대한 조건을 설정합니다. 권한 부여 제약 조건은 [키 정책](key-policies.md) 또는 [IAM 정책](iam-policies.md)에서 [조건 키](policy-conditions.md)를 대신합니다. 각 권한 부여 제약 조건 값은 암호화 컨텍스트 페어를 8개까지 포함할 수 있습니다. 각 권한 부여 제약 조건의 암호화 컨텍스트 값은 384자를 초과할 수 없습니다.

**중요**  
이 필드에 기밀 또는 민감한 정보를 포함하지 마십시오. 이 필드는 CloudTrail 로그 및 기타 출력에 일반 텍스트로 표시될 수 있습니다.

AWS KMS 는 두 가지 권한 부여 제약 조건인 `EncryptionContextEquals` 및를 지원하며`EncryptionContextSubset`, 둘 다 암호화 작업에 대한 요청에서 암호화 [컨텍스트](encrypt_context.md)에 대한 요구 사항을 설정합니다.

암호화 컨텍스트 권한 부여 제약 조건은 암호화 컨텍스트 파라미터가 있는 [권한 부여 작업](grants.md#terms-grant-operations)과 함께 사용하도록 설계되었습니다.
+ 암호화 컨텍스트 제약 조건은 대칭 암호화 KMS 키에 대한 권한 부여에서만 유효합니다. 다른 KMS 키를 사용한 암호화 작업은 암호화 컨텍스트를 지원하지 않습니다.
+ 암호화 컨텍스트 제약 조건은 `DescribeKey` 및 `RetireGrant` 작업에 대해 무시됩니다. `DescribeKey` 및 `RetireGrant`에는 암호화 컨텍스트 파라미터가 없지만 암호화 컨텍스트 제약 조건이 있는 권한 부여에 이러한 작업을 포함할 수 있습니다.
+ `CreateGrant` 작업에 대한 권한 부여에서 암호화 컨텍스트 제약 조건을 사용할 수 있습니다. 암호화 컨텍스트 제약 조건에서는 `CreateGrant` 권한으로 생성된 모든 권한 부여에 동등하게 엄격하거나 더 엄격한 암호화 컨텍스트 제약 조건이 있어야 합니다.

AWS KMS 는 다음과 같은 암호화 컨텍스트 권한 부여 제약 조건을 지원합니다.

**EncryptionContextEquals**  
`EncryptionContextEquals`를 사용하여 허용된 요청에 대한 정확한 암호화 컨텍스트를 지정합니다.  
`EncryptionContextEquals`는 요청의 암호화 컨텍스트 페어가 권한 부여 제약 조건의 암호화 컨텍스트 페어에 대해 정확히 대소문자가 일치해야 합니다. 쌍은 순서에 관계없이 나타날 수 있지만 각 쌍의 키와 값은 다를 수 없습니다.  
예를 들어, `EncryptionContextEquals` 권한 부여 제약 조건에 `"Department": "IT"` 암호화 컨텍스트 페어가 필요한 경우 권한 부여는 요청의 암호화 컨텍스트가 정확히 `"Department": "IT"`인 경우에만 지정된 유형의 요청을 허용합니다.

**EncryptionContextSubset**  
`EncryptionContextSubset`을 사용하여 요청에 특정 암호화 컨텍스트 페어가 포함되도록 요구합니다.  
`EncryptionContextSubset`는 요청에 권한 부여 제약 조건의 모든 암호화 컨텍스트 페어(정확한 대소문자 구분 일치)을 포함해야 하지만 요청에 추가 암호화 컨텍스트 페어가 있을 수도 있습니다. 쌍은 순서에 관계없이 나타날 수 있지만 각 쌍의 키와 값은 다를 수 없습니다.  
예를 들어, `EncryptionContextSubset` 권한 부여 제약 조건에 `Department=IT` 암호화 컨텍스트 페어가 필요한 경우 권한 부여는 요청의 암호화 컨텍스트가 정확히 `"Department": "IT"`인 경우에 지정된 유형의 요청을 허용하거나 다른 암호화 컨텍스트 페어(예: `"Department": "IT","Purpose": "Test"`)와 함께 `"Department": "IT"`를 포함합니다.

대칭 암호화 KMS 키에 대한 권한 부여에서 암호화 컨텍스트 제약 조건을 지정하려면 [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) 작업의 `Constraints` 파라미터를 사용합니다. 이 명령이 생성하는 권한 부여는 [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 작업을 호출할 수 있는 `keyUserRole` 역할 권한을 맡을 권한이 있는 사용자에게 부여합니다. 그러나 이 권한은 `Decrypt` 요청의 암호화 컨텍스트가 `"Department": "IT"` 암호화 컨텍스트 페어인 경우에만 유효합니다.

```
$ aws kms create-grant \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --grantee-principal arn:aws:iam::111122223333:role/keyUserRole \
    --operations Decrypt \
    --retiring-principal arn:aws:iam::111122223333:role/adminRole \
    --constraints EncryptionContextEquals={Department=IT}
```

결과 권한 부여는 다음과 같습니다. `keyUserRole` 역할에 부여된 권한은 `Decrypt` 요청이 권한 부여 제약 조건에 지정된 동일한 암호화 컨텍스트 페어를 사용하는 경우에만 유효합니다. KMS 키에 대한 권한 부여를 확인하려면 [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html) 작업을 사용합니다.

```
$ aws kms list-grants --key-id 1234abcd-12ab-34cd-56ef-1234567890ab
{
    "Grants": [
        {
            "Name": "",
            "IssuingAccount": "arn:aws:iam::111122223333:root",
            "GrantId": "abcde1237f76e4ba7987489ac329fbfba6ad343d6f7075dbd1ef191f0120514a",
            "Operations": [
                "Decrypt"
            ],
            "GranteePrincipal": "arn:aws:iam::111122223333:role/keyUserRole",
            "Constraints": {
                "EncryptionContextEquals": {
                    "Department": "IT"
                }
            },
            "CreationDate": 1568565290.0,
            "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "RetiringPrincipal": "arn:aws:iam::111122223333:role/adminRole"
        }
    ]
}
```

`EncryptionContextEquals` 권한 부여 제약 조건을 충족하려면 `Decrypt` 작업에 대한 요청의 암호화 컨텍스트가 `"Department": "IT"` 페어여야 합니다. 피부여자 보안 주체의 다음과 같은 요청은 `EncryptionContextEquals` 권한 부여 제약 조건을 충족합니다.

```
$ aws kms decrypt \
    --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab\
    --ciphertext-blob fileb://encrypted_msg \
    --encryption-context Department=IT
```

권한 부여 제약 조건이 `EncryptionContextSubset`인 경우 요청의 암호화 컨텍스트 페어는 권한 부여 제약 조건의 암호화 컨텍스트 페어를 포함해야 하지만 요청은 다른 암호화 컨텍스트 페어도 포함할 수 있습니다. 다음 권한 부여 제약 조건에서는 요청의 암호화 컨텍스트 페어 중 하나가 `"Deparment": "IT"`여야 합니다.

```
"Constraints": {
   "EncryptionContextSubset": {
       "Department": "IT"
   }
}
```

피부여자 보안 주체의 다음 요청은 이 예에서 `EncryptionContextEqual` 및 `EncryptionContextSubset` 권한 부여 제약 조건을 모두 충족합니다.

```
$ aws kms decrypt \
    --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab \
    --ciphertext-blob fileb://encrypted_msg \
    --encryption-context Department=IT
```

그러나 피부여자 주체의 다음과 같은 요청은 `EncryptionContextSubset` 권한 부여 제약 조건을 만족하지만 `EncryptionContextEquals` 권한 부여 제약 조건에는 실패합니다.

```
$ aws kms decrypt \
    --key-id arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab \
    --ciphertext-blob fileb://encrypted_msg \
    --encryption-context Department=IT,Purpose=Test
```

AWS 서비스는에서 KMS 키를 사용할 수 있는 권한을 부여하는 권한 부여에 암호화 컨텍스트 제약 조건을 사용하는 경우가 많습니다 AWS 계정. 예를 들어 Amazon DynamoDB는 다음과 같은 권한 부여를 사용하여 계정에서 DynamoDB용 [AWS 관리형 키](concepts.md#aws-managed-key)를 사용할 수 있는 권한을 얻습니다. 이 권한 부여의 `EncryptionContextSubset` 권한 부여 제약 조건은 권한 부여에 지정된 권한이 요청의 암호화 컨텍스트가 `"subscriberID": "111122223333"` 및 `"tableName": "Services"` 쌍을 포함하는 경우에만 유효하게 만듭니다. 이 권한 부여 제약 조건은 이 권한 부여는 DynamoDB가 AWS 계정에서 특정 테이블에 대해서만 지정된 KMS 키를 사용할 수 있게 허용함을 의미입니다.

이 출력을 가져오려면 계정의 DynamoDB AWS 관리형 키 용에서 [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html) 작업을 실행합니다.

```
$ aws kms list-grants --key-id 0987dcba-09fe-87dc-65ba-ab0987654321

{
    "Grants": [
        {
            "Operations": [
                "Decrypt",
                "Encrypt",
                "GenerateDataKey",
                "ReEncryptFrom",
                "ReEncryptTo",
                "RetireGrant",
                "DescribeKey"
            ],
            "IssuingAccount": "arn:aws:iam::111122223333:root",
            "Constraints": {
                "EncryptionContextSubset": {
                    "aws:dynamodb:tableName": "Services",
                    "aws:dynamodb:subscriberId": "111122223333"
                }
            },
            "CreationDate": 1518567315.0,
            "KeyId": "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321",
            "GranteePrincipal": "dynamodb.us-west-2.amazonaws.com",
            "RetiringPrincipal": "dynamodb.us-west-2.amazonaws.com",
            "Name": "8276b9a6-6cf0-46f1-b2f0-7993a7f8c89a",
            "GrantId": "1667b97d27cf748cf05b487217dd4179526c949d14fb3903858e25193253fe59"
        }
    ]
}
```

## CreateGrant 권한 부여
<a name="grant-creategrant"></a>

권한 부여에는 `CreateGrant` 호출할 수 있는 권한이 포함될 수 있습니다. 그러나 [피부여자 보안 주체](grants.md#terms-grantee-principal)가 정책이 아닌 부여에서 `CreateGrant`를 호출할 수 있는 권한을 얻으면 해당 권한이 제한됩니다.
+ 피부여자 보안 주체는 상위 권한 부여의 일부 또는 모든 작업을 허용하는 부여만 생성할 수 있습니다.
+ 생성하는 권한 부여의 [권한 부여 제약 조건](#grant-constraints)은 최소한 상위 권한 부여의 제약 조건만큼 엄격해야 합니다.

[정책 조건](grant-authorization.md)에 따라 권한이 제한될 수 있지만 이러한 제한은 정책에서 `CreateGrant` 권한을 받는 보안 주체에게는 적용되지 않습니다.

예를 들면, `GenerateDataKey`, `Decrypt` 및 `CreateGrant` 작업을 호출할 수 있게 하는 권한 부여를 고려하십시오. `CreateGrant` 권한을 허용하는 권한을 *상위 권한 부여*라고 합니다.

```
# The original grant in a ListGrants response.
{
    "Grants": [
        {
            "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "CreationDate": 1572216195.0,
            "GrantId": "abcde1237f76e4ba7987489ac329fbfba6ad343d6f7075dbd1ef191f0120514a",
            "Operations": [
                "GenerateDataKey",
                "Decrypt",
                "CreateGrant
            ]
            "RetiringPrincipal": "arn:aws:iam::111122223333:role/adminRole",
            "Name": "",
            "IssuingAccount": "arn:aws:iam::111122223333:root",
            "GranteePrincipal": "arn:aws:iam::111122223333:role/keyUserRole",
            "Constraints": {
                "EncryptionContextSubset": {
                    "Department": "IT"
                }
            },
        }
    ]
}
```

피부여자 보안 주체인 exampleUser는 이 권한을 사용하여 `CreateGrant` 및 `Decrypt`와 같이 원래 권한 부여에 지정된 작업의 하위 집합을 포함하는 권한 부여를 생성할 수 있습니다. *하위 권한 부여*는 다른 다른 작업(예: `ScheduleKeyDeletion` 또는 `ReEncrypt`)을 포함할 수 없습니다.

또한, 하위 권한 부여에 대한 [권한 부여 제약 조건 ](https://docs.aws.amazon.com/kms/latest/APIReference/API_GrantConstraints.html)은 상위 권한 부여만큼 제한적이거나 더 제한적이어야 합니다. 예를 들어, 하위 권한 부여는 상위 권한 부여의 `EncryptionContextSubset` 제한 조건에 쌍을 추가 할 수 있지만 이를 제거 할 수는 없습니다. 하위 권한 부여는 `EncryptionContextSubset` 제약 조건을 `EncryptionContextEquals` 제약 조건으로 변경할 수 있지만 그 반대는 아닙니다.

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

예를 들어 피부여자 보안 주체는 상위 권한 부여에서 얻은 `CreateGrant` 권한을 사용하여 다음 하위 권한 부여를 생성할 수 있습니다. 하위 권한 부여의 작업은 상위 권한 부여 작업의 하위 집합이며 권한 부여 제약 조건은 더 제한적입니다.

```
# The child grant in a ListGrants response.
{
    "Grants": [
        {
            "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "CreationDate": 1572249600.0,
            "GrantId": "fedcba9999c1e2e9876abcde6e9d6c9b6a1987650000abcee009abcdef40183f",
            "Operations": [
                "CreateGrant"
                "Decrypt"
            ]
            "RetiringPrincipal": "arn:aws:iam::111122223333:user/exampleUser",
            "Name": "",
            "IssuingAccount": "arn:aws:iam::111122223333:root",
            "GranteePrincipal": "arn:aws:iam::111122223333:user/anotherUser",
            "Constraints": {
                "EncryptionContextEquals": {
                    "Department": "IT"
                }
            },
        }
    ]
}
```

하위 권한 부여 `anotherUser`의 피부여자 보안 주체는 `CreateGrant` 권한을 사용하여 권한 부여를 생성할 수 있습니다. 그러나, `anotherUser`가 생성하는 권한 부여는 상위 권한 부여 또는 하위 집합의 작업을 포함해야 하며 권한 부여 제약 조건은 동일하거나 더 엄격해야 합니다.

# 권한 부여 보기
<a name="grant-view"></a>

권한 부여를 보려면 [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html) 작업을 사용합니다. 권한 부여가 적용되는 KMS 키를 지정해야 합니다. 권한 부여 ID 또는 피부여자 보안 주체별로 권한 부여 목록을 필터링할 수도 있습니다. 더 많은 예시는 [AWS SDK 또는 CLI와 `ListGrants` 함께 사용](example_kms_ListGrants_section.md)를 참조합니다.

특정 [사용 중지 보안 주체](grants.md#terms-retiring-principal)가 있는 AWS 계정 및 리전의 모든 권한 부여를 보려면 [ListRetirableGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListRetirableGrants.html)를 사용합니다. 응답에는 각 권한 부여에 대한 세부 정보가 포함됩니다.

**참고**  
`ListGrants` 응답의 `GranteePrincipal` 필드에는 일반적으로 권한 부여의 피부여자 보안 주체가 포함됩니다. 그러나 권한 부여의 피부여자 보안 주체가 AWS 서비스인 경우 `GranteePrincipal` 필드에는 여러 피부여자 [보안 주체를 나타낼 수 있는 서비스](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services) 보안 주체가 포함됩니다.

예를 들어 다음 명령은 KMS 키에 대한 모든 권한 부여를 나열합니다.

```
$  aws kms list-grants --key-id 1234abcd-12ab-34cd-56ef-1234567890ab
{
    "Grants": [
        {
            "KeyId": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab",
            "CreationDate": 1572216195.0,
            "GrantId": "abcde1237f76e4ba7987489ac329fbfba6ad343d6f7075dbd1ef191f0120514a",
            "Constraints": {
                "EncryptionContextSubset": {
                    "Department": "IT"
                }
            },
            "RetiringPrincipal": "arn:aws:iam::111122223333:role/adminRole",
            "Name": "",
            "IssuingAccount": "arn:aws:iam::111122223333:root",
            "GranteePrincipal": "arn:aws:iam::111122223333:user/exampleUser",
            "Operations": [
                "Decrypt"
            ]
        }
    ]
}
```

# 권한 부여 토큰 사용
<a name="using-grant-token"></a>

 AWS KMS API는 [최종 일관성](grants.md#terms-eventual-consistency) 모델을 따릅니다. 권한 부여를 생성할 때 권한 부여가 즉시 유효하지 않을 수 있습니다. 변경 사항이 AWS KMS전체에 적용되기까지 잠깐의 지연이 있을 수 있습니다. 변경 사항이 시스템 전체에 전파되는 데에는 일반적으로 몇 초도 걸리지 않지만 경우에 따라 몇 분 정도 걸릴 수도 있습니다. 변경 사항이 시스템 전체에 완전히 전파되면 피부여자 보안 주체는 권한 부여 토큰이나 권한 부여에 대한 증거를 지정하지 않고 권한 부여의 권한을 사용할 수 있습니다. 그러나 너무 새 권한 부여로 인해 아직 모든 사람에게 알려지지 않은 경우 `AccessDeniedException` 오류와 함께 AWS KMS요청이 실패할 수 있습니다.

새 권한 부여에서 권한을 즉시 사용하려면 권한 부여에 대한 [권한 부여 토큰](grants.md#grant_token)을 사용하십시오. [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html) 작업으로 반환되는 권한 부여 토큰을 저장합니다. 그런 다음 AWS KMS 작업 요청에 권한 부여 토큰을 제출합니다. 권한 부여 토큰을 모든 AWS KMS [권한 부여 작업에](grants.md#terms-grant-operations) 제출하고 동일한 요청에서 여러 권한 부여 토큰을 제출할 수 있습니다.



다음 예에서는 `CreateGrant` 작업을 사용하여 [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html) 및 [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) 작업을 허용하는 권한 부여를 생성합니다. `CreateGrant`에서 반환되는 권한 부여 토큰을 `token` 변수에 저장합니다. 그런 다음 `GenerateDataKey` 작업에 대한 호출에서 `token` 변수의 권한 부여 토큰을 사용합니다.

```
# Create a grant; save the grant token 
$ token=$(aws kms create-grant \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    --grantee-principal arn:aws:iam::111122223333:user/appUser \
    --retiring-principal arn:aws:iam::111122223333:user/acctAdmin \
    --operations GenerateDataKey Decrypt \
    --query GrantToken \
    --output text)

# Use the grant token in a request
$ aws kms generate-data-key \
    --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
    –-key-spec AES_256 \
    --grant-tokens $token
```

권한이 있는 위탁자는 권한 부여가 AWS KMS를 통해 제공되기 전에도 권한 부여 토큰을 사용하여 새로운 권한 부여를 사용 중지할 수도 있습니다. (`RevokeGrant` 작업은 권한 부여 토큰을 허용하지 않습니다.) 자세한 내용은 [권한 부여 사용 중지 및 취소](grant-delete.md) 섹션을 참조하세요.

```
# Retire the grant
$ aws kms retire-grant --grant-token $token
```

# 권한 부여 사용 중지 및 취소
<a name="grant-delete"></a>

권한 부여를 삭제하려면 부여를 사용 중지하거나 취소합니다.

[RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html) 및 [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html) 작업은 서로 매우 유사합니다. 두 작업 모두 권한부여를 삭제하므로 권한 부여로 허용하는 권한이 제거됩니다. 이러한 작업의 주요 차이점은 권한이 부여되는 방식입니다.

**RevokeGrant**  
대부분의 AWS KMS 작업과 마찬가지로 `RevokeGrant` 작업에 대한 액세스는 [키 정책](key-policies.md) 및 [IAM 정책을](iam-policies.md) 통해 제어됩니다. [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html) API는 `kms:RevokeGrant` 권한이 있는 모든 보안 주체가 호출할 수 있습니다. 이 권한은 키 관리자에게 부여된 표준 권한에 포함됩니다. 일반적으로 관리자는 권한 부여로 허용되는 권한을 거부하기 위해 권한 부여를 취소합니다.

**RetireGrant**  
권한 부여는 누가 권한 부여를 사용 중지할 수 있는지 결정합니다. 이 설계를 통해 키 정책 또는 IAM 정책을 변경하지 않고 권한 부여의 수명 주기를 제어할 수 있습니다. 일반적으로 권한 사용을 마치면 권한 부여를 사용 중지합니다.  
권한 부여는 권한 부여에 지정된 선택적 [사용 중지 보안 주체](grants.md#terms-retiring-principal)에 의해 사용 중지될 수 있습니다. [피부여자 보안 주체](grants.md#terms-grantee-principal)도 권한 부여를 사용 중지할 수 있지만, 사용 중지 보안 주체이거나 권한 부여에 `RetireGrant` 작업이 포함된 경우에만 가능합니다. 백업으로서 권한 부여가 생성된 AWS 계정 는 권한 부여를 사용 중지할 수 있습니다.  
IAM 정책에서 사용할 수 있는 `kms:RetireGrant` 권한이 있지만 유틸리티가 제한되어 있습니다. 권한 부여에 지정된 보안 주체는 `kms:RetireGrant` 권한 없이 권한 부여를 취소할 수 있습니다. `kms:RetireGrant` 권한만으로는 보안 주체가 권한 부여를 사용 중지할 수 없습니다. `kms:RetireGrant` 권한은 [키 정책](key-policies.md) 또는 [리소스 제어 정책](resource-control-policies.md)에서 유효하지 않습니다.  
+ 권한 부여 사용 중지 권한을 거부하려면 IAM 정책에서 `kms:RetireGrant` 권한과 함께 `Deny` 작업을 사용할 수 있습니다.
+ KMS 키를 소유 AWS 계정 한는 계정의 IAM 보안 주체에게 `kms:RetireGrant` 권한을 위임할 수 있습니다.
+ 사용 중지된 보안 주체가 다른 경우 다른 계정의 AWS 계정관리자는 `kms:RetireGrant`를 사용하여 해당 계정의 IAM 보안 주체에게 권한 부여 사용 중지 권한을 위임할 수 있습니다.

 AWS KMS API는 [최종 일관성](grants.md#terms-eventual-consistency) 모델을 따릅니다. 권한 부여를 생성, 사용 중지 또는 철회할 때, 변경 사항이 AWS KMS전체에 적용되기까지 잠깐의 지연이 있을 수 있습니다. 변경 사항이 시스템 전체에 전파되는 데에는 일반적으로 몇 초도 걸리지 않지만 경우에 따라 몇 분 정도 걸릴 수도 있습니다. 새 권한 부여를 즉시 삭제해야 하는 경우 권한 부여 토큰을 AWS KMS사용하여 권한 부여를 사용 중지합니다. [권한 부여 토큰 사용](using-grant-token.md) 권한 부여 토큰을 사용하여 권한 부여를 취소할 수는 없습니다.