

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Subventions en AWS KMS
<a name="grants"></a>

Un *octroi* est un instrument de politique qui permet aux [principaux AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/intro-structure.html#intro-structure-principal) d'utiliser des clés KMS dans les opérations de chiffrement. Il peut également leur permettre d'afficher une clé KMS (`DescribeKey`), mais aussi de créer et de gérer des octrois. Lorsque vous autorisez l'accès à une clé KMS, les octrois sont pris en compte avec des [politiques de clé](key-policies.md) et des [politiques IAM](iam-policies.md). Les octrois sont souvent utilisés pour des autorisations temporaires, car vous pouvez en créer un, utiliser ses autorisations et les supprimer sans modifier vos politiques de clé ou IAM.

Les subventions sont couramment utilisées par AWS les services qui s'intègrent AWS KMS pour crypter vos données au repos. Le service crée un octroi au nom d'un utilisateur du compte, utilise ses autorisations et retire l'octroi dès que sa tâche est terminée. Pour plus de détails sur la manière dont les AWS services utilisent les subventions, consultez la rubrique *Chiffrement au repos* du guide de l'utilisateur ou du guide du développeur du service.

Les octrois sont un mécanisme de contrôle d'accès très souple et utile. Lorsque vous créez un octroi pour une clé KMS, celui-ci permet au principal bénéficiaire d'appeler les opérations d'octroi spécifiées sur la clé KMS, à condition que toutes les conditions spécifiées dans l'octroi soient remplies. 
+ Chaque octroi permet d'accéder à exactement une clé KMS. Vous pouvez créer un octroi pour une clé KMS dans un autre Compte AWS.
+ Un octroi peut autoriser l'accès à une clé KMS, mais pas le lui refuser.
+ Chaque octroi a un [principal bénéficiaire](#terms-grantee-principal). Le principal du bénéficiaire peut représenter une ou plusieurs identités au même Compte AWS titre que la clé KMS ou dans un compte différent.
+ Un octroi peut uniquement permettre des [opérations d'octroi](#terms-grant-operations). Les opérations d'octroi doivent être prises en charge par la clé KMS de l'octroi. Si vous spécifiez une opération non prise en charge, la [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)demande échoue avec une `ValidationError` exception.
+ Le principal bénéficiaire peut utiliser les autorisations que l'octroi lui donne sans spécifier l'octroi, comme il le ferait si les autorisations provenaient d'une politique de clé ou d'une politique IAM. Cependant, étant donné que l' AWS KMS API suit un modèle de [cohérence final](#terms-eventual-consistency), lorsque vous créez, retirez ou révoquez une subvention, il peut y avoir un bref délai avant que la modification ne soit disponible dans AWS KMS son intégralité. Pour utiliser immédiatement les autorisations dans un octroi, [utilisez un jeton d'octroi](using-grant-token.md).
+ Un principal autorisé peut supprimer l'octroi (le [retirer](#terms-retire-grant) ou le [révoquer](#terms-revoke-grant)). La suppression d'un octroi élimine toutes les autorisations qu'il accorde. Vous n'avez pas besoin de déterminer les politiques à ajouter ou à supprimer pour annuler l'octroi. 
+ AWS KMS limite le nombre d'autorisations sur chaque clé KMS. Pour en savoir plus, consultez [Octrois par clé KMS : 50 000](resource-limits.md#grants-per-key).

Soyez prudent lorsque vous créez des octrois et lorsque vous autorisez d'autres personnes à en créer. L'autorisation de créer des subventions a des implications en matière de sécurité, tout comme l'PutKeyPolicyautorisation de définir des politiques en termes de [kilomètres](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html).
+ Les utilisateurs autorisés à créer des autorisations pour une clé KMS (`kms:CreateGrant`) peuvent utiliser une autorisation pour autoriser les utilisateurs et les rôles, y compris les AWS services, à utiliser la clé KMS. Les principes peuvent être des identités propres Compte AWS ou des identités appartenant à un autre compte ou à une autre organisation.
+ Les subventions ne peuvent autoriser qu'un sous-ensemble d' AWS KMS opérations. Vous pouvez utiliser des octrois pour autoriser les principaux à afficher la clé KMS, à l'utiliser dans les opérations de chiffrement, mais aussi à créer et à retirer des octrois. Pour plus d'informations, veuillez consulter .[Opérations d'octroi](#terms-grant-operations). Vous pouvez également utiliser des [contraintes d'octroi](create-grant-overview.md#grant-constraints) pour limiter les autorisations dans un octroi pour une clé de chiffrement symétrique.
+ Les principaux peuvent obtenir l'autorisation de créer des octrois à partir d'une politique de clé ou d'une politique IAM. Les directeurs qui obtiennent `kms:CreateGrant` l'autorisation d'une politique peut créer des subventions pour tout [opération d'octroi](#terms-grant-operations) sur la clé KMS. Ces mandants ne sont pas tenus d'avoir l'autorisation qu'ils accordent sur la clé. Lorsque vous accordez l'autorisation `kms:CreateGrant` dans une politique, vous pouvez utiliser des [conditions de politique](grant-authorization.md) pour limiter cette autorisation.
+ Les principaux peuvent également obtenir l'autorisation de créer des octrois à partir d'un octroi. Ces principaux peuvent uniquement déléguer les autorisations qui leur ont été accordées, même s'ils disposent d'autres autorisations en vertu d'une politique. Pour en savoir plus, consultez [Octroi CreateGrant d'autorisation](create-grant-overview.md#grant-creategrant).

## Concepts d'octroi
<a name="grant-concepts"></a>

Pour utiliser efficacement les octrois, vous devez comprendre les termes et les concepts utilisés par AWS KMS . 

**Contrainte d'octroi**  <a name="terms-grant-constraint"></a>
Condition qui limite les autorisations dans l'octroi. Actuellement, AWS KMS prend en charge les contraintes d'octroi basées sur le [contexte de chiffrement](encrypt_context.md) dans la demande d'opération cryptographique. Pour en savoir plus, consultez [Utilisation des contraintes d'octroi](create-grant-overview.md#grant-constraints).

**ID d'octroi**  <a name="terms-grant-id"></a>
Identifiant unique d'un octroi pour une clé KMS. Vous pouvez utiliser un identifiant de subvention, ainsi qu'un [identifiant clé](concepts.md#key-id), pour identifier une autorisation dans une [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html)demande [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)ou.

**Opérations d'octroi**  <a name="terms-grant-operations"></a>
Les AWS KMS opérations que vous pouvez autoriser dans le cadre d'une subvention. Si vous spécifiez d'autres opérations, la [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)demande échoue avec une `ValidationError` exception. Ce sont aussi les opérations qui acceptent un [jeton d'octroi](#grant_token). Pour de plus amples informations sur ces autorisations, veuillez consulter la [AWS KMS autorisations](kms-api-permissions-reference.md).  
Ces opérations d'octroi représentent effectivement l'autorisation d'utiliser l'opération. Par conséquent, pour l'opération `ReEncrypt`, vous pouvez spécifier `ReEncryptFrom`, `ReEncryptTo` ou les deux `ReEncrypt*`.  
Les opérations d'octroi sont les suivantes :  
+ Opérations cryptographiques
  + [Decrypt (Déchiffrer)](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html)
  + [DeriveSharedSecret](https://docs.aws.amazon.com/kms/latest/APIReference/API_DeriveSharedSecret.html)
  + [Encrypt (Chiffrer)](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 (Signer)](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html)
  + [Verify (Vérifier)](https://docs.aws.amazon.com/kms/latest/APIReference/API_Verify.html)
  + [VerifyMac](https://docs.aws.amazon.com/kms/latest/APIReference/API_VerifyMac.html)
+ Autres opérations
  + [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)
Les opérations d'octroi que vous autorisez doivent être prises en charge par la clé KMS de l'octroi. Si vous spécifiez une opération non prise en charge, la [CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)demande échoue avec une `ValidationError` exception. Par exemple, les octrois pour les clés KMS de chiffrement symétrique ne peuvent pas autoriser les opérations [Sign (Signer)](https://docs.aws.amazon.com/kms/latest/APIReference/API_Sign.html), [Verify (Vérifier)](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) ou [https://docs.aws.amazon.com/kms/latest/APIReference/API_VerifyMac.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_VerifyMac.html). Les octrois pour les clés KMS asymétriques ne peuvent autoriser aucune opération générant des clés de données ou des paires de clés de données.

**Jeton d'octroi**  <a name="grant_token"></a>
L' AWS KMS API suit un modèle de [cohérence éventuel](#terms-eventual-consistency). Lorsque vous créez un octroi, il se peut qu'il y ait un bref délai avant que le changement ne soit disponible via AWS KMS. La propagation de la modification dans l'ensemble du système prend généralement moins de quelques secondes, mais dans certains cas, cela peut prendre plusieurs minutes. Si vous essayez d'utiliser un octroi avant d'être propagé complètement sur le système, vous pouvez obtenir un message d'accès refusé. Un jeton d'octroi vous permet de faire référence à l'octroi et d'utiliser les autorisations d'octroi immédiatement.   
Un *jeton d'octroi* est une chaîne unique, non secrète, de longueur variable et codée en base64 qui représente un octroi. Vous pouvez utiliser le jeton d'octroi pour identifier l'octroi dans n'importe quelle [opération d'octroi](#terms-grant-operations). Cependant, comme la valeur du jeton est un résumé de hachage, elle ne révèle aucun détail sur l'octroi.  
Un jeton d'octroi est conçu pour être utilisé uniquement jusqu'à ce qu'il se propage complètement sur AWS KMS. Après cela, le [principal bénéficiaire](#terms-grantee-principal) peut utiliser l'autorisation dans l'octroi sans fournir de jeton d'octroi ou toute autre preuve de l'octroi. Vous pouvez utiliser un jeton de subvention à tout moment, mais une fois que l'autorisation est finalement cohérente, c'est AWS KMS l'autorisation qui détermine les autorisations, et non le jeton de subvention.  
Par exemple, la commande suivante appelle l'[GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)opération. Elle utilise un jeton d'octroi pour représenter l'octroi qui donne à l'appelant (le principal bénéficiaire) l'autorisation d'appeler `GenerateDataKey` sur la clé KMS spécifiée.  

```
$ aws kms generate-data-key \
        --key-id 1234abcd-12ab-34cd-56ef-1234567890ab \
        --key-spec AES_256 \
        --grant-token $token
```
Vous pouvez également utiliser le jeton d'octroi pour identifier un octroi dans les opérations qui gèrent les octrois. Par exemple, le [directeur sortant](#terms-retiring-principal) peut utiliser un jeton de subvention lors d'un appel à l'[RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)opération.   

```
$ aws kms retire-grant \
        --grant-token $token
```
`CreateGrant` est la seule opération qui renvoie un jeton d'octroi. Vous ne pouvez pas obtenir de jeton d'autorisation à partir d'une autre AWS KMS opération ou du [CloudTrail journal des événements](ct-creategrant.md) associés à l' CreateGrant opération. Les [ListRetirableGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListRetirableGrants.html)opérations [ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)et renvoient l'[ID de subvention](#terms-grant-id), mais pas un jeton de subvention.  
Pour en savoir plus, consultez [Utilisation d'un jeton d'octroi](using-grant-token.md).

**Principal bénéficiaire**  <a name="terms-grantee-principal"></a>
Identité qui obtient les autorisations spécifiées dans l'octroi. Chaque octroi n'a qu'un seul principal bénéficiaire, mais ce dernier peut représenter plusieurs identités.   
Le principal bénéficiaire peut être n'importe quel AWS principal, y compris un Compte AWS (root), un [utilisateur IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html), un rôle [IAM, un rôle](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) ou un utilisateur [fédéré, ou un utilisateur ayant un rôle](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) assumé. Le principal bénéficiaire peut se trouver dans le même compte que la clé KMS ou un autre compte. Toutefois, le principal bénéficiaire ne peut pas être un [principal de service](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services), un [groupe IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) ou une [organisation AWS](https://docs.aws.amazon.com/organizations/latest/userguide/).  
Les bonnes pratiques IAM déconseillent d'avoir recours à des utilisateurs IAM dotés d'informations d'identification à long terme. Dans la mesure du possible, utilisez des rôles IAM, qui fournissent des informations d'identification temporaires. Pour plus d'informations, consultez [Security best practices in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) (Bonnes pratiques de sécurité dans IAM) dans le *Guide de l'utilisateur IAM*.

**Retirer (un octroi)**  <a name="terms-retire-grant"></a>
Résilie un octroi. Vous retirez un octroi lorsque vous avez terminé d'utiliser les autorisations.  
La révocation et le retrait d'un octroi suppriment l'octroi. Toutefois, le retrait est effectué par un principal spécifié dans l'octroi. La révocation est généralement effectuée par un administrateur de clé. Pour en savoir plus, consultez [Retrait et révocation d'octrois](grant-delete.md).

**Principal de retrait**  <a name="terms-retiring-principal"></a>
Un principal qui peut [retirer un octroi](#terms-retire-grant). Vous pouvez spécifier un principal de retrait dans un octroi, mais ce n'est pas obligatoire. Le mandant sortant peut être n'importe quel AWS mandant, y compris les utilisateurs IAM Comptes AWS, les rôles IAM, les utilisateurs fédérés et les utilisateurs des rôles assumés. Le principal de retrait peut se trouver dans le même compte que la clé KMS ou un autre compte.  
Les bonnes pratiques IAM déconseillent d'avoir recours à des utilisateurs IAM dotés d'informations d'identification à long terme. Dans la mesure du possible, utilisez des rôles IAM, qui fournissent des informations d'identification temporaires. Pour plus d'informations, consultez [Security best practices in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) (Bonnes pratiques de sécurité dans IAM) dans le *Guide de l'utilisateur IAM*.
Outre le remboursement du capital spécifié dans la subvention, une subvention peut être retirée par le fournisseur Compte AWS dans lequel la subvention a été créée. Si l'octroi autorise l'opération `RetireGrant`, le [principal bénéficiaire](#terms-grantee-principal) peut retirer l'octroi. En outre, le Compte AWS directeur sortant peut déléguer l'autorisation de retirer une subvention à un directeur IAM du même nom. Compte AWS Compte AWS Pour en savoir plus, consultez [Retrait et révocation d'octrois](grant-delete.md).

**Révoquer (un octroi)**  <a name="terms-revoke-grant"></a>
Résilie un octroi. Vous révoquez un octroi pour refuser activement les autorisations que l'octroi autorise.   
La révocation et le retrait d'un octroi suppriment l'octroi. Toutefois, le retrait est effectué par un principal spécifié dans l'octroi. La révocation est généralement effectuée par un administrateur de clé. Pour en savoir plus, consultez [Retrait et révocation d'octrois](grant-delete.md).

**Cohérence éventuelle (pour les octrois)**  <a name="terms-eventual-consistency"></a>
L' AWS KMS API suit un modèle de [cohérence éventuel](https://en.wikipedia.org/wiki/Eventual_consistency). Lorsque vous créez, retirez ou révoquez un octroi, il se peut qu'il y ait un bref délai avant que le changement ne soit disponible via AWS KMS. La propagation de la modification dans l'ensemble du système prend généralement moins de quelques secondes, mais dans certains cas, cela peut prendre plusieurs minutes.  
Vous pouvez prendre connaissance de ce bref délai si vous obtenez des erreurs inattendues. Par exemple, si vous essayez de gérer une nouvelle subvention ou d'utiliser les autorisations d'une nouvelle autorisation avant que l'autorisation ne soit connue dans son intégralité AWS KMS, vous risquez de recevoir un message d'erreur de refus d'accès. Si vous retirez ou révoquez un octroi, le principal bénéficiaire peut toujours utiliser ses autorisations pendant une courte période jusqu'à ce que l'octroi soit complètement supprimé. La stratégie classique consiste à réessayer la demande, et certaines AWS SDKs incluent une logique d'annulation automatique et de nouvelle tentative.  
AWS KMS possède des fonctionnalités pour atténuer ce bref délai.   
+ Pour utiliser immédiatement les autorisations dans un nouvel octroi, utilisez un [jeton d'octroi](using-grant-token.md). Vous pouvez utiliser un jeton d'octroi pour faire référence à un octroi dans n'importe quelle [opération d'octroi](#terms-grant-operations). Pour obtenir des instructions, veuillez consulter [Utilisation d'un jeton d'octroi](using-grant-token.md). 
+ L'[CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)opération possède un `Name` paramètre qui empêche les nouvelles tentatives de créer des autorisations dupliquées.
Les jetons d'octroi remplacent la validité de l'octroi jusqu'à ce que tous les points de terminaison du service aient été mis à jour avec le nouvel état de l'octroi. Dans la plupart des cas, une cohérence éventuelle sera obtenue dans les cinq minutes.
Pour plus d'informations, consultez la rubrique relative à la [cohérence à terme AWS KMS](accessing-kms.md#programming-eventual-consistency).

# Bonnes pratiques en matière de AWS KMS subventions
<a name="grant-best-practices"></a>

AWS KMS recommande les meilleures pratiques suivantes lors de la création, de l'utilisation et de la gestion des subventions.
+ Limitez les autorisations de l'octroi aux autorisations requises par le principal bénéficiaire. Utilisez le principe d'[accès le moins privilégié](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege).
+ Utilisez un principal bénéficiaire spécifique, tel qu'un rôle IAM, et donnez au principal l'autorisation d'utiliser uniquement les opérations API dont il a besoin. 
+ Utilisez le contexte de chiffrement de [contraintes d'octroi](grants.md#terms-grant-constraint) pour garantir que les appelants utilisent la clé KMS aux fins prévues. Pour en savoir plus sur l'utilisation du contexte de chiffrement dans une demande de sécurisation de vos données, consultez [Comment protéger l'intégrité de vos données chiffrées en utilisant AWS Key Management Service et EncryptionContext](https://aws.amazon.com/blogs/security/how-to-protect-the-integrity-of-your-encrypted-data-by-using-aws-key-management-service-and-encryptioncontext/) dans le *blog sur la AWS sécurité*.
**Astuce**  
Utilisez la contrainte de [EncryptionContextEqual](create-grant-overview.md#grant-constraints)subvention dans la mesure du possible. La contrainte de [EncryptionContextSubset](create-grant-overview.md#grant-constraints)subvention est plus difficile à utiliser correctement. Si vous devez l'utiliser, lisez attentivement la documentation et testez la contrainte d'octroi pour vous assurer qu'elle fonctionne comme prévu.
+ Supprimer les octrois en double. Les octrois en double ont les mêmes ARN de clé, actions d'API, principal bénéficiaire, contexte de chiffrement et nom. Si vous retirez ou révoquez l'octroi initial, mais que vous laissez les doublons, les doublons restants constituent une escalade involontaire de privilèges. Pour éviter de dupliquer les octrois lors de la relance d'une demande `CreateGrant`, utilisez le paramètre [`Name`](create-grant-overview.md#grant-create). Pour détecter les autorisations dupliquées, utilisez l'[ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)opération. Si vous créez accidentellement un octroi en double, retirez-le ou révoquez-le dès que possible. 
**Note**  
Les octrois pour les [clés gérées par AWS](concepts.md#aws-managed-key) peuvent ressembler à des doublons, mais ont des principaux bénéficiaires différents.  
Le champ `GranteePrincipal` de la réponse `ListGrants` contient habituellement le bénéficiaire principal. Toutefois, lorsque le principal bénéficiaire de la subvention est un AWS service, le `GranteePrincipal` champ contient le [principal du service](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services), qui peut représenter plusieurs principaux bénéficiaires différents.
+ N'oubliez pas que les octrois n'expirent pas automatiquement. [Retirez ou révoquez l'octroi](grant-delete.md) dès que l'autorisation n'est plus nécessaire. Les octrois qui ne sont pas supprimés peuvent créer un risque de sécurité pour les ressources chiffrées.

# Contrôle de l'accès aux octrois
<a name="grant-authorization"></a>

Vous pouvez contrôler l'accès aux opérations qui créent et gèrent des octrois dans les politiques de clés, les politiques IAM et les octrois. Les principaux qui obtiennent l'autorisation `CreateGrant` d'un octroi ont des [autorisations d'octroi plus limitées](create-grant-overview.md#grant-creategrant). 


| Opération API | politique de clé ou politique IAM | Grant (Octroi) | 
| --- | --- | --- | 
| CreateGrant | ✓ | ✓ | 
| ListGrants | ✓ | - | 
| ListRetirableGrants | ✓ | - | 
| Retirer des octrois | (Limité. Voir [Retrait et révocation d'octrois](grant-delete.md)) | ✓ | 
| RevokeGrant | ✓ | - | 

Lorsque vous utilisez une politique clé ou une politique IAM pour contrôler l'accès aux opérations qui créent et gèrent des autorisations, vous pouvez utiliser une ou plusieurs des conditions de politique suivantes pour limiter l'autorisation. AWS KMS prend en charge toutes les clés de condition relatives aux subventions suivantes. Pour plus d'informations et d'exemples, veuillez consulter [AWS KMS clés de condition](conditions-kms.md).

[km : GrantConstraintType](conditions-kms.md#conditions-kms-grant-constraint-type)  
Permet aux principaux de créer un octroi uniquement lorsque l'octroi inclut la [contrainte d'octroi](create-grant-overview.md#grant-constraints)spécifiée.

[km : GrantIsFor AWSResource](conditions-kms.md#conditions-kms-grant-is-for-aws-resource)  
Permet aux principaux d'appeler `CreateGrant``ListGrants`, ou `RevokeGrant` uniquement lorsqu'[un AWS service intégré AWS KMS](https://aws.amazon.com/kms/features/#AWS_Service_Integration) envoie la demande au nom du principal.

[km : GrantOperations](conditions-kms.md#conditions-kms-grant-operations)  
Autorise les principaux à créer un octroi, mais limite l'octroi aux opérations spécifiées.

[km : GranteePrincipal](conditions-kms.md#conditions-kms-grantee-principal)  
Autorise les principaux à créer un octroi uniquement pour le [principal bénéficiaire](grants.md#terms-grantee-principal) spécifié.

[km : RetiringPrincipal](conditions-kms.md#conditions-kms-retiring-principal)  
Permet aux principaux de créer un octroi uniquement lorsque l'octroi spécifie un [principal de retrait](grants.md#terms-retiring-principal).

# Création d'octrois
<a name="create-grant-overview"></a>

Avant de créer un octroi, découvrez ses options de personnalisation. Vous pouvez utiliser des *contraintes d'octroi* pour limiter les autorisations dans l'octroi. En outre, renseignez-vous sur l'autorisation `CreateGrant` d'octroi. Les principaux qui obtiennent l'autorisation de créer des octrois à partir d'un octroi sont limités au niveau des octrois qu'ils peuvent créer.

**Topics**
+ [Création d'un octroi](#grant-create)
+ [Octroi CreateGrant d'autorisation](#grant-creategrant)

## Création d'un octroi
<a name="grant-create"></a>

Pour créer une subvention, appelez l'[CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)opération. Spécifiez une clé KMS, un [principal bénéficiaire](grants.md#terms-grantee-principal) et une liste des [opérations d'octroi](grants.md#terms-grant-operations) autorisées. Vous pouvez également désigner un [principal de retrait](grants.md#terms-retiring-principal) facultatif. Pour personnaliser l'octroi, utilisez des paramètres `Constraints` facultatifs pour définir les [contraintes d'octroi](https://docs.aws.amazon.com/kms/latest/APIReference/API_GrantConstraints.html).

Lorsque vous créez, retirez ou révoquez un octroi, il peut y avoir un bref délai, généralement de moins de cinq minutes, avant que la modification ne soit disponible sur AWS KMS. Pour plus d'informations, consultez la rubrique relative à la [cohérence à terme (pour les octrois)](grants.md#terms-eventual-consistency).

Par exemple, la commande `CreateGrant` suivante crée un octroi qui permet aux utilisateurs autorisés à assumer le rôle `keyUserRole` d'appeler l'opération [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) (Déchiffrer) sur la [clé KMS symétrique](symm-asymm-choose-key-spec.md#symmetric-cmks) spécifiée. L'autorisation utilise le paramètre `RetiringPrincipal` pour désigner un principal qui peut retirer l'autorisation. Elle inclut également une contrainte d'autorisation qui l'autorise uniquement lorsque le [contexte de chiffrement](encrypt_context.md) de la requête inclut `"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}
```

Si votre code relance l'opération `CreateGrant`, ou utilise un kit SDK [AWS qui relance automatiquement les demandes](https://docs.aws.amazon.com/general/latest/gr/api-retries.html), utilisez le paramètre [Name (Nom)](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html#KMS-CreateGrant-request-Name) facultatif pour empêcher la création d'octrois en double. S'il AWS KMS reçoit une `CreateGrant` demande de subvention ayant les mêmes propriétés qu'une subvention existante, y compris le nom, il reconnaît la demande comme une nouvelle tentative et ne crée pas de nouvelle autorisation. Vous pouvez utiliser la valeur `Name` pour identifier l'octroi dans n'importe quelle opération AWS KMS .

**Important**  
N'incluez pas d'informations confidentielles ou sensibles dans le nom de l’octroi. Il peut apparaître en texte brut dans CloudTrail les journaux et autres sorties.

```
$ 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}
```

Pour des exemples de code qui montrent comment créer des subventions dans plusieurs langages de programmation, voir[Utilisation `CreateGrant` avec un AWS SDK ou une CLI](example_kms_CreateGrant_section.md).

### Utilisation des contraintes d'octroi
<a name="grant-constraints"></a>

Les [contraintes d'octroi](https://docs.aws.amazon.com/kms/latest/APIReference/API_GrantConstraints.html) définissent les conditions des autorisations que l'octroi donne au principal bénéficiaire. Les contraintes d'octroi prennent la place de [clés de condition](policy-conditions.md) dans une [politique de clé](key-policies.md) ou une [politique IAM](iam-policies.md). Chaque valeur de contrainte d'octroi peut inclure jusqu'à 8 paires de contextes de chiffrement. La valeur de contexte de chiffrement dans chaque contrainte d'octroi ne peut pas dépasser 384 caractères.

**Important**  
N'incluez pas d'informations confidentielles ou sensibles dans ce champ. Ce champ peut être affiché en texte brut dans les CloudTrail journaux et autres sorties.

AWS KMS prend en charge deux contraintes `EncryptionContextEquals` d'autorisation`EncryptionContextSubset`, qui établissent toutes deux des exigences relatives au [contexte de chiffrement](encrypt_context.md) dans une demande d'opération cryptographique. 

Les contraintes d'octroi du contexte de chiffrement sont conçues pour être utilisées avec des [opérations d'octroi](grants.md#terms-grant-operations) qui ont un paramètre de contexte de chiffrement. 
+ Les contraintes de contexte de chiffrement ne sont valides que dans un octroi pour une clé KMS de chiffrement symétrique. Les opérations de chiffrement avec d'autres clés KMS ne prennent pas en charge un contexte de chiffrement.
+ La contrainte de contexte de chiffrement est ignorée pour les opérations `DescribeKey` et `RetireGrant`. `DescribeKey` et `RetireGrant` n'ont pas de paramètre de contexte de chiffrement, mais vous pouvez inclure ces opérations dans un octroi qui a une contrainte de contexte de chiffrement.
+ Vous pouvez utiliser une contrainte de contexte de chiffrement dans un octroi pour l'opération `CreateGrant`. La contrainte de contexte de chiffrement nécessite que tous les octrois créés avec l'autorisation `CreateGrant` aient une contrainte de contexte de chiffrement tout aussi stricte ou plus stricte.

AWS KMS prend en charge les contraintes d'octroi de contexte de chiffrement suivantes.

**EncryptionContextEquals**  
Utilisez `EncryptionContextEquals` pour spécifier le contexte de chiffrement exact pour les demandes autorisées.   
`EncryptionContextEquals` exige que les paires de contexte de chiffrement de la requête correspondent exactement, y compris au niveau des minuscules/majuscules, aux paires de contexte de chiffrement de la contrainte d'octroi. Les paires peuvent apparaître dans n'importe quel ordre, mais les clés et valeurs dans chaque paire ne peuvent pas varier.   
Par exemple, si l'a contrainte d'octroi `EncryptionContextEquals` exige la paire de contextes de chiffrement `"Department": "IT"`, l'octroi autorise les demandes du type spécifié uniquement lorsque le contexte de chiffrement de la requête est exactement `"Department": "IT"`.

**EncryptionContextSubset**  
Utilisez `EncryptionContextSubset` pour exiger que les demandes incluent des paires de contexte de chiffrement particulières.  
`EncryptionContextSubset` exige que la demande inclue toutes les paires de contexte de chiffrement de la contrainte d'octroi (une correspondance exacte sensible à la casse), mais la demande peut avoir des paires de contexte de chiffrement supplémentaires. Les paires peuvent apparaître dans n'importe quel ordre, mais les clés et valeurs dans chaque paire ne peuvent pas varier.   
Par exemple, si l'a contrainte d'octroi `EncryptionContextSubset` exige la paire de contextes de chiffrement `Department=IT`, l'octroi autorise les demandes du type spécifié uniquement lorsque le contexte de chiffrement de la requête est `"Department": "IT"` ou inclut `"Department": "IT"`, ainsi que d'autres paires de contexte de chiffrement, telles que `"Department": "IT","Purpose": "Test"`.

Pour spécifier une contrainte de contexte de chiffrement dans une autorisation pour une clé KMS de chiffrement symétrique, utilisez le `Constraints` paramètre dans l'[CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)opération. L'octroi créé par cette commande accorde aux utilisateurs qui sont autorisés à assumer le rôle `keyUserRole` l'autorisation d'appeler l'opération [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html) (Déchiffrer). Toutefois, cette autorisation est effective uniquement lorsque le contexte de chiffrement de la demande `Decrypt` est une paire de contextes de chiffrement `"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}
```

L'octroi obtenu ressemble à ce qui suit. Notez que l'autorisation accordée au rôle `keyUserRole` n'est effective que lorsque la demande `Decrypt` utilise la même paire de contextes de chiffrement que celle spécifiée dans la contrainte d'octroi. Pour trouver les autorisations sur une clé KMS, utilisez l'[ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)opération.

```
$ 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"
        }
    ]
}
```

Pour satisfaire la contrainte d'octroi `EncryptionContextEquals`, le contexte de chiffrement dans la demande pour l'opération `Decrypt` doit être une paire `"Department": "IT"`. Une demande telle que la suivante émanant du principal bénéficiaire satisferait à la contrainte d'octroi `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
```

Lorsque la contrainte d'octroi est `EncryptionContextSubset`, les paires de contexte de chiffrement de la demande doivent inclure les paires de contexte de chiffrement dans la contrainte d'octroi, mais la demande peut également inclure d'autres paires de contexte de chiffrement. La contrainte d'octroi suivante nécessite que l'une des paires de contexte de chiffrement dans la demande soit `"Deparment": "IT"`.

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

La demande suivante émanant du principal bénéficiaire satisferait à la fois aux contraintes d'octroi `EncryptionContextEqual` et `EncryptionContextSubset` dans cet exemple.

```
$ 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
```

Toutefois, une demande comme celle qui suit émanant du principal bénéficiaire satisferait à la contrainte d'octroi `EncryptionContextSubset`, mais pas à la contrainte d'octroi `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 les services utilisent souvent des contraintes de contexte de chiffrement dans les autorisations qui leur donnent l'autorisation d'utiliser des clés KMS dans votre Compte AWS. Par exemple, Amazon DynamoDB utilise un octroi comme le suivant pour obtenir l'autorisation d'utiliser la [Clé gérée par AWS](concepts.md#aws-managed-key) pour DynamoDB dans votre compte. La contrainte d'octroi `EncryptionContextSubset` de cet octroi rend les autorisations de l'octroi effectives uniquement lorsque le contexte de chiffrement de la demande inclut les paires`"subscriberID": "111122223333"` et `"tableName": "Services"`. Cette contrainte d'octroi signifie que l'octroi autorise DynamoDB à utiliser la clé KMS spécifiée uniquement pour une table particulière de votre Compte AWS.

Pour obtenir ce résultat, exécutez l'[ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)opération sur DynamoDB de votre compte. Clé gérée par AWS 

```
$ 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"
        }
    ]
}
```

## Octroi CreateGrant d'autorisation
<a name="grant-creategrant"></a>

Un octroi peut inclure l'autorisation d'appeler l'opération `CreateGrant`. Toutefois, quand un [principal bénéficiaire](grants.md#terms-grantee-principal) obtient l'autorisation d'appeler `CreateGrant` à partir d'un octroi, plutôt que d'une politique, cette autorisation est limitée. 
+ Le principal bénéficiaire peut uniquement créer des octrois qui permettent une partie ou la totalité des opérations de l'octroi parent.
+ Les [contraintes d'octroi](#grant-constraints) dans les octrois qu'elles créent doivent être au moins aussi strictes que celles de l'octroi parent.

Ces limites ne s'appliquent pas aux principaux qui obtiennent l'autorisation `CreateGrant` à partir d'une politique, bien que leurs autorisations puissent être limitées par des [conditions de politique](grant-authorization.md).

Par exemple, imaginons un octroi qui autorise le principal bénéficiaire à appeler les opérations `GenerateDataKey`, `Decrypt` et `CreateGrant`. Nous appelons un octroi qui autorise l'autorisation `CreateGrant` d'un *octroi parent*.

```
# 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"
                }
            },
        }
    ]
}
```

Le principal bénéficiaire, exampleUser, peut utiliser cette autorisation pour créer un octroi qui inclut n'importe quel sous-ensemble des opérations spécifiées dans l'octroi parent, par exemple `CreateGrant` et `Decrypt`. L'*octroi enfant* ne peut pas inclure d'autres opérations, comme `ScheduleKeyDeletion` ou `ReEncrypt`.

De plus, les [contraintes d'octroi](https://docs.aws.amazon.com/kms/latest/APIReference/API_GrantConstraints.html) des octrois enfants doivent être aussi restrictives, voire plus, que celles de l'octroi parent. Par exemple, l'octroi enfant peut ajouter des paires dans une contrainte `EncryptionContextSubset` de l'octroi parent, mais ne peut pas les supprimer. L'octroi enfant peut modifier une contrainte `EncryptionContextSubset` en contrainte `EncryptionContextEquals`, mais pas l'inverse.

Les bonnes pratiques IAM déconseillent d'avoir recours à des utilisateurs IAM dotés d'informations d'identification à long terme. Dans la mesure du possible, utilisez des rôles IAM, qui fournissent des informations d'identification temporaires. Pour plus d'informations, consultez [Security best practices in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html) (Bonnes pratiques de sécurité dans IAM) dans le *Guide de l'utilisateur IAM*.

Par exemple, le principal bénéficiaire peut utiliser l'autorisation `CreateGrant` qu'il a obtenue de l'octroi parent pour créer l'octroi enfant suivant. Les opérations de l'octroi enfant sont un sous-ensemble des opérations de l'octroi parent et les contraintes d'octroi sont plus restrictives.

```
# 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"
                }
            },
        }
    ]
}
```

Le principal bénéficiaire de l'octroi enfant ,`anotherUser`, peut utiliser son autorisation `CreateGrant` pour créer des octrois. Cependant, les octrois que `anotherUser` crée doit inclure les opérations dans leur octroi parent ou un sous-ensemble, et les contraintes d'octroi doivent être les mêmes ou plus strictes. 

# Affichage d'octrois
<a name="grant-view"></a>

Pour consulter la subvention, utilisez l'[ListGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListGrants.html)opération. Vous devez spécifier la clé KMS à laquelle les octrois s'appliquent. Vous pouvez également filtrer la liste des octrois par ID d'octroi ou principal bénéficiaire. Pour obtenir plus d'exemples, consultez [Utilisation `ListGrants` avec un AWS SDK ou une CLI](example_kms_ListGrants_section.md).

Pour consulter toutes les subventions accordées dans la région Compte AWS et dont le [capital est retraité en](grants.md#terms-retiring-principal) particulier, utilisez [ListRetirableGrants](https://docs.aws.amazon.com/kms/latest/APIReference/API_ListRetirableGrants.html). Les réponses comprennent des détails sur chaque octroi.

**Note**  
Le champ `GranteePrincipal` de la réponse `ListGrants` contient habituellement le bénéficiaire principal. Toutefois, lorsque le principal bénéficiaire de la subvention est un AWS service, le `GranteePrincipal` champ contient le [principal du service](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html#principal-services), qui peut représenter plusieurs principaux bénéficiaires différents.

Par exemple, la commande suivante répertorie tous les octrois d'une clé 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"
            ]
        }
    ]
}
```

# Utilisation d'un jeton d'octroi
<a name="using-grant-token"></a>

L' AWS KMS API suit un modèle de [cohérence éventuel](grants.md#terms-eventual-consistency). Lorsque vous créez un octroi, il se peut qu'il ne soit pas effectif immédiatement. Il se peut qu'il y ait un bref délai avant que le changement ne soit disponible via AWS KMS. La propagation de la modification dans l'ensemble du système prend généralement moins de quelques secondes, mais dans certains cas, cela peut prendre plusieurs minutes. Une fois que la modification a été entièrement appliquée à l’ensemble du système, le principal bénéficiaire peut utiliser les autorisations dans l'octroi sans spécifier le jeton d'octroi ou une preuve de l'octroi. Toutefois, si une subvention est si récente qu'elle n'est pas encore connue de tous AWS KMS, la demande peut échouer avec une `AccessDeniedException` erreur.

Pour utiliser immédiatement les autorisations dans un nouvel octroi, utilisez le [jeton d'octroi](grants.md#grant_token) pour l'octroi. Enregistrez le jeton de subvention renvoyé par l'[CreateGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_CreateGrant.html)opération. Soumettez ensuite le jeton de subvention dans la demande AWS KMS d'opération. Vous pouvez soumettre un jeton de subvention à n'importe quelle [opération de AWS KMS subvention](grants.md#terms-grant-operations) et vous pouvez soumettre plusieurs jetons de subvention dans la même demande.



L'exemple suivant utilise l'`CreateGrant`opération pour créer une autorisation autorisant les opérations [GenerateDataKey](https://docs.aws.amazon.com/kms/latest/APIReference/API_GenerateDataKey.html)et [Decrypt](https://docs.aws.amazon.com/kms/latest/APIReference/API_Decrypt.html). Elle enregistre le jeton d'octroi que `CreateGrant` renvoie dans la variable `token`. Ensuite, dans un appel à l'opération `GenerateDataKey`, elle utilise le jeton d'octroi dans la variable `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
```

Les directeurs autorisés peuvent également utiliser un jeton de subvention pour retirer une nouvelle subvention avant même que la subvention ne soit disponible dans AWS KMS son intégralité. (L'opération `RevokeGrant` n'accepte pas de jeton d'octroi.) Pour en savoir plus, consultez [Retrait et révocation d'octrois](grant-delete.md).

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

# Retrait et révocation d'octrois
<a name="grant-delete"></a>

Pour supprimer un octroi, la retirer ou la révoquer.

Les [RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html)opérations [RetireGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RetireGrant.html)et sont très similaires les unes aux autres. Les deux opérations suppriment un octroi, ce qui élimine les autorisations qu'il accorde. La principale différence entre ces opérations est la façon dont elles sont autorisées.

**RevokeGrant**  
Comme pour la plupart AWS KMS des opérations, l'accès à l'`RevokeGrant`opération est contrôlé par le biais de [politiques clés](key-policies.md) et de [politiques IAM](iam-policies.md). L'[RevokeGrant](https://docs.aws.amazon.com/kms/latest/APIReference/API_RevokeGrant.html)API peut être appelée par n'importe quel principal `kms:RevokeGrant` autorisé. Cette autorisation est incluse dans les autorisations standard accordées aux administrateurs de clé. En règle générale, les administrateurs révoquent un octroi pour refuser les autorisations qu'il accorde.

**RetireGrant**  
L'octroi détermine qui peut la retirer. Cette conception vous permet de contrôler le cycle de vie d'un octroi sans modifier les politiques clé ou les politiques IAM. Généralement, vous retirez un octroi lorsque vous avez terminé d'utiliser ses autorisations.  
Un octroi peut être retiré par un [principal de retrait](grants.md#terms-retiring-principal) spécifié dans l'octroi. Le [principal bénéficiaire](grants.md#terms-grantee-principal) peut également retirer l'octroi, mais seulement s'il est également un principal de retrait ou si l'octroi comprend l'opération `RetireGrant`. À titre de sauvegarde, le Compte AWS système dans lequel la subvention a été créée peut annuler la subvention.  
Il existe une autorisation `kms:RetireGrant` qui peut être utilisée dans les politiques IAM, mais dont l'utilité est limitée. Les principaux spécifiés dans l'octroi peuvent retirer un octroi sans l'autorisation `kms:RetireGrant`. L'autorisation `kms:RetireGrant` à elle seule ne permet pas aux principaux de retirer un octroi. L'`kms:RetireGrant`autorisation n'est pas effective dans le cadre d'une [politique clé](key-policies.md) ou d'une [politique de contrôle des ressources](resource-control-policies.md).  
+ Pour refuser l'autorisation de retirer une subvention, vous pouvez utiliser une `Deny` action dont l'`kms:RetireGrant`autorisation figure dans vos politiques IAM.
+ Le Compte AWS propriétaire de la clé KMS peut déléguer l'`kms:RetireGrant`autorisation à un principal IAM du compte. 
+ Si le mandant sortant est différent Compte AWS, les administrateurs de l'autre compte peuvent `kms:RetireGrant` déléguer l'autorisation de retirer la subvention à un directeur IAM de ce compte.

L' AWS KMS API suit un modèle de [cohérence éventuel](grants.md#terms-eventual-consistency). Lorsque vous créez, retirez ou révoquez un octroi, il se peut qu'il y ait un bref délai avant que le changement ne soit disponible via AWS KMS. La propagation de la modification dans l'ensemble du système prend généralement moins de quelques secondes, mais dans certains cas, cela peut prendre plusieurs minutes. Si vous devez supprimer une nouvelle subvention immédiatement, avant qu'elle ne soit entièrement disponible AWS KMS, [utilisez un jeton de subvention](using-grant-token.md) pour annuler la subvention. Vous ne pouvez pas utiliser un jeton d'octroi pour révoquer un octroi.