Octrois dans AWS KMS - AWS Key Management Service

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, il permet aux principaux bénéficiaires 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 doit avoir au moins un principal bénéficiaire. Le principal bénéficiaire peut être une identité dans un autre Compte AWS.

  • 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 demande CreateGrant échoue avec une exception ValidationError.

  • Les principaux bénéficiaires peuvent utiliser les autorisations que l'octroi leur donne sans spécifier l'octroi, comme ils le feraient si les autorisations provenaient d'une politique de clé ou d'une politique IAM. Toutefois, lorsque vous créez, retirez ou révoquez un octroi, il peut y avoir un bref délai, généralement inférieur à cinq minutes, avant que l'opération n'atteigne une cohérence éventuelle. 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 d'informations, 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 octrois a des implications en matière de sécurité, tout comme permettre à l'autorisation kms:PutKeyPolicy de définir des politiques.

  • 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 d'informations, consultez Octroi d'autorisation CreateGrant.

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 d'informations, consultez Utilisation des contraintes d'octroi.

ID d'octroi

Identifiant unique d'un octroi pour une clé KMS. Vous pouvez utiliser un ID d'octroi, ainsi qu'un identifiant de clé, pour identifier un octroi dans une demande RetireGrant ou RevokeGrant.

Opérations d'octroi

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

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 demande CreateGrant (Créer un octroi) échoue avec une exception ValidationError. 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

Lorsque vous créez un octroi, il peut y avoir un bref délai, généralement inférieur à cinq minutes, jusqu'à ce que le nouvel octroi soit disponible dans AWS KMS, c'est-à-dire, jusqu'à ce qu'il atteigne une cohérence éventuelle. Si vous essayez d'utiliser un octroi avant d'atteindre la cohérence éventuelle, vous pouvez obtenir une erreur 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 atteigne une cohérence éventuelle. 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'opération GenerateDataKey. 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 principal de retrait peut utiliser un jeton d'octroi dans un appel à l'opération RetireGrant (Retirer l’octroi).

$ aws kms retire-grant \ --grant-token $token

CreateGrant est la seule opération qui renvoie un jeton d'octroi. Vous ne pouvez pas obtenir un jeton d'octroi à partir d'une autre opération AWS KMS ou de l'événement du journal CloudTrail pour l'opération CreateGrant. Les opérations ListGrants et ListRetirableGrants renvoient les ID d'octroi, mais pas un jeton d'octroi.

Pour plus d'informations, consultez Utilisation d'un jeton d'octroi.

Principal bénéficiaire

Identité qui obtient les autorisations spécifiées dans l'octroi. Un octroi doit avoir au moins un principal bénéficiaire. 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.

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 d'informations, 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.

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

Cohérence éventuelle (pour les octrois)

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. Lorsque cet intervalle est terminé, nous considérons que l'opération a atteint une cohérence éventuelle.

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, consultez Utilisation d'un jeton d'octroi.

  • L'opération CreateGrant a un paramètre Name qui empêche les opérations de relance de créer des octrois en double.

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.

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 plus d'informations sur l'utilisation du contexte de chiffrement dans une demande pour sécuriser vos données, veuillez consulter Comment protéger l'intégrité de vos données chiffrées à l'aide deAWS Key Management Service et d'EncryptionContext dans le blog sur la sécurité AWS.

    Astuce

    Utilisez la contrainte d'octroi EncryptionContextEqual dès que possible. La contrainte d'octroi EncryptionContextSubset 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 octrois en double, utilisez l'opération ListGrants. 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.