Octrois dans AWS KMS - AWS Key Management Service

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.

Octrois dans AWS KMS

Un octroi est un instrument de politique qui permet aux principaux AWS 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é et des politiques IAM. 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 octrois sont couramment utilisés par des services AWS qui s'intègrent à AWS KMS pour chiffrer 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 d'informations sur la manière dont les services AWS utilisent les octrois, reportez-vous à la rubrique Comment les services AWS utilisent AWS KMS ou Chiffrement au repos dans le guide de l'utilisateur ou le guide du développeur du service.

Pour découvrir des exemples de code illustrant la façon d'utiliser les octrois dans plusieurs langages de programmation, veuillez consulter Utilisation d'octrois.

À propos des octrois

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. Le principal bénéficiaire peut représenter une ou plusieurs identités dans le même Compte AWS que la clé KMS ou dans un autre compte.

  • Un octroi peut uniquement permettre des opérations d'octroi. 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 CreateGrantdemande é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. Toutefois, étant donné que l'API AWS KMS suit un modèle de cohérence à terme, lorsque vous créez, retirez ou révoquez un octroi, il peut y avoir un bref délai avant que la modification ne soit disponible sur AWS KMS. Pour utiliser immédiatement les autorisations dans un octroi, utilisez un jeton d'octroi.

  • Un principal autorisé peut supprimer l'octroi (le retirer ou le révoquer). 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'octrois sur chaque clé KMS. Pour plus de détails, consultez Octrois par clé KMS : 50 000.

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.

  • Les utilisateurs autorisés à créer des octrois pour une clé KMS (kms:CreateGrant) peuvent utiliser un octroi pour autoriser les utilisateurs et les rôles, y compris les services AWS, à utiliser la clé KMS. Les principaux peuvent être des identités dans votre propre Compte AWS ou des identités dans un autre compte ou une autre organisation.

  • Les octrois ne peuvent autoriser qu'un sous-ensemble d'opérations AWS KMS. 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. Vous pouvez également utiliser des contraintes d'octroi 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 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 pour limiter cette autorisation.

  • Les principaux peuvent également obtenir l'autorisation de créer des octrois à partir d'un octroi. Ces principaux ne peuvent déléguer que les autorisations qui leur ont été accordées, même s'ils disposent d'autres autorisations provenant d'une politique. Pour plus de détails, consultez Octroi CreateGrant d'autorisation.

Pour obtenir de l'aide sur les concepts liés aux octrois, veuillez consulter la Terminologie relative à l'octroi.

Concepts d'octroi

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

Contrainte d'octroi

Condition qui limite les autorisations dans l'octroi. Actuellement, AWS KMS prend en charge les contraintes d'octroi basées sur le contexte de chiffrementdans la demande pour une opération cryptographique. Pour plus de détails, consultez Utilisation des contraintes d'octroi.

ID d'octroi

Identifiant unique d'un octroi pour une clé KMS. Vous pouvez utiliser un identifiant de subvention, ainsi qu'un identifiant clé, pour identifier une autorisation dans une RevokeGrantdemande RetireGrantou.

Opérations d'octroi

Les opérations AWS KMS que vous pouvez autoriser dans un octroi. Si vous spécifiez d'autres opérations, la CreateGrantdemande échoue avec une ValidationError exception. Ce sont aussi les opérations qui acceptent un jeton d'octroi. Pour de plus amples informations sur ces autorisations, veuillez consulter la AWS KMS autorisations.

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 :

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 CreateGrantdemande é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), Verify (Vérifier), GenerateMac ou VerifyMac. 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

L’API AWS KMS suit un modèle de cohérence à terme. 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. 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 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 d'octroi à tout moment, mais une fois que l'octroi a atteint une cohérence éventuelle, AWS KMS utilise l'octroi pour déterminer les autorisations, et non le jeton d'octroi.

Par exemple, la commande suivante appelle l'GenerateDataKeyopé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 peut utiliser un jeton de subvention lors d'un appel à l'RetireGrantopé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 associés à l' CreateGrant opération. Les ListRetirableGrantsopérations ListGrantset renvoient l'ID de subvention, mais pas un jeton de subvention.

Pour plus de détails, consultez Utilisation d'un jeton d'octroi.

Principal bénéficiaire

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 qui accorde les octrois peut être n'importe quel principal AWS, y compris un Compte AWS (racine), un utilisateur IAM, un rôle IAM, un utilisateur ou un rôle fédéré, mais aussi un utilisateur de rôle 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, un groupe IAM ou une organisation AWS.

Note

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 (Bonnes pratiques de sécurité dans IAM) dans le Guide de l'utilisateur IAM.

Retirer (un octroi)

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 plus de détails, consultez Retrait et révocation d'octrois.

Principal de retrait

Un principal qui peut retirer un octroi. Vous pouvez spécifier un principal de retrait dans un octroi, mais ce n'est pas obligatoire. Le principal de retrait peut être n'importe quel principal AWS, y compris des Comptes AWS, des utilisateurs IAM, des rôles IAM, des utilisateurs fédérés et les utilisateurs de rôle assumé. Le principal de retrait peut se trouver dans le même compte que la clé KMS ou un autre compte.

Note

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 (Bonnes pratiques de sécurité dans IAM) dans le Guide de l'utilisateur IAM.

En plus du principal de retrait spécifié dans l'octroi, un octroi peut être retiré par le Compte AWS dans lequel l'octroi a été créé. Si l'octroi autorise l'opération RetireGrant, le principal bénéficiaire peut retirer l'octroi. En outre, le Compte AWS ou un Compte AWS qui est le principal de retrait peut déléguer l'autorisation de retirer un octroi à un principal IAM dans le même Compte AWS. Pour plus de détails, consultez Retrait et révocation d'octrois.

Révoquer (un octroi)

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 plus de détails, consultez Retrait et révocation d'octrois.

Cohérence éventuelle (pour les octrois)

L’API AWS KMS suit un modèle de cohérence à terme. 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 un nouvel octroi ou si vous utilisez les autorisations dans un nouvel octroi avant que l'octroi ne soit connu dans AWS KMS, vous pouvez recevoir une erreur d'accès refusé. 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 typique consiste à réessayer la demande, et certains kits SDK AWS incluent une logique d'interruption et de relance automatique.

AWS KMS dispose de fonctions pour atténuer ce bref délai.

  • Pour utiliser immédiatement les autorisations dans un nouvel octroi, utilisez un jeton d'octroi. Vous pouvez utiliser un jeton d'octroi pour faire référence à un octroi dans n'importe quelle opération d'octroi. Pour obtenir des instructions, veuillez consulter Utilisation d'un jeton d'octroi.

  • L'CreateGrantopération possède un Name paramètre qui empêche les nouvelles tentatives de créer des autorisations dupliquées.

Note

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.

Bonnes pratiques relatives aux octrois AWS KMS

AWS KMS recommande les bonnes pratiques suivantes lorsqu'il s'agit de créer, d'utiliser et de gérer des octrois.

  • 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é.

  • 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 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 dans le blog sur la AWS sécurité.

    Astuce

    Utilisez la contrainte de EncryptionContextEqualsubvention dans la mesure du possible. La contrainte de EncryptionContextSubsetsubvention 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. Pour détecter les autorisations dupliquées, utilisez l'ListGrantsopé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 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 l'octroi est un service AWS, le champ GranteePrincipal contient le principal de service, qui peut représenter plusieurs principaux bénéficiaires.

  • N'oubliez pas que les octrois n'expirent pas automatiquement. Retirez ou révoquez l'octroi 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.