Autoriser des utilisateurs d'autres comptes à utiliser une clé KMS - AWS Key Management Service

Autoriser des utilisateurs d'autres comptes à utiliser une clé KMS

Vous pouvez autoriser des utilisateurs ou des rôles IAM dans un Compte AWS différent à utiliser une AWS KMS key (clé KMS) dans votre compte. L'accès inter-comptes nécessite une autorisation dans la politique de clé de la clé KMS et dans une politique IAM dans le compte de l'utilisateur externe.

L'autorisation inter-comptes n'est effective que pour les opérations suivantes :

Si vous accordez à un utilisateur d'un autre compte des autorisations pour d'autres opérations, ces autorisations n'ont aucun effet. Par exemple, si vous accordez à un principal dans un autre compte l'autorisation kms:ListKeys dans une politique IAM, ou l'autorisation kms:ScheduleKeyDeletion sur une clé KMS dans une politique de clé, les tentatives de l'utilisateur d'appeler ces opérations sur vos ressources échouent toujours.

Pour plus de détails sur l'utilisation des clés KMS dans différents comptes pour les opérations AWS KMS, veuillez consulter la colonne Cross-account use (Utilisation inter-comptes) dans le Autorisations AWS KMS et Utilisation de clés KMS dans d'autres comptes. Il existe aussi une section Cross-account use (Utilisation inter-comptes) dans chaque description d'API de la référence d'API AWS Key Management Service.

Avertissement

Soyez prudent lorsque vous autorisez les principaux à utiliser vos clés KMS. Dans la mesure du possible, suivez le principe du moindre privilège. Donnez uniquement aux utilisateurs l'accès aux clés KMS dont ils ont besoin pour les opérations dont ils ont besoin.

Par ailleurs, soyez prudent en ce qui concerne l'utilisation d'une clé KMS inconnue, en particulier d'une clé KMS dans un compte différent. Les utilisateurs malveillants peuvent vous autoriser à utiliser leur clé KMS pour obtenir des informations sur vous ou votre compte.

Pour plus d'informations sur l'utilisation des politiques pour protéger les ressources de votre compte, veuillez consulter Bonnes pratiques pour les politiques IAM.

Pour accorder l'autorisation d'utiliser une clé KMS aux utilisateurs et aux rôles d'un autre compte, vous devez utiliser deux types de politiques différents :

  • La politique de clé pour la clé KMS doit accorder au compte externe (ou aux utilisateurs et rôles du compte externe) l'autorisation d'utiliser la clé KMS. La politique de clé se trouve dans le compte qui possède la clé KMS.

  • Les politiques IAM du compte externe doivent déléguer les autorisations de politique de clé à leurs utilisateurs et rôles. Ces politiques sont définies dans le compte externe et accordent des autorisations aux utilisateurs et rôles de ce compte.

La politique de clé détermine qui peut avoir accès à la clé KMS. La politique IAM détermine qui a accès à la clé KMS. Ni la politique de clé ni la politique IAM à elles seules ne suffisent. Vous devez modifier les deux.

Pour modifier la politique de clé, vous pouvez utiliser la Policy View (Vue de politique) dans la AWS Management Console ou les opérations CreateKey ou PutKeyPolicy. Pour obtenir de l'aide concernant la définition de la politique de clé lors de la création d'une clé KMS, veuillez consulter Création de clés KMS que d'autres comptes peuvent utiliser.

Pour obtenir de l'aide concernant la modification des politiques IAM, veuillez consulter Utilisation des politiques IAM avec AWS KMS.

Pour obtenir un exemple qui montre comment la politique de clé et les politiques IAM fonctionnent ensemble pour autoriser l'utilisation d'une clé KMS dans un autre compte, veuillez consulter Exemple 2 : l'utilisateur endosse un rôle avec l'autorisation d'utiliser une clé KMS dans un autre Compte AWS.

Vous pouvez afficher les opérations AWS KMS inter-comptes résultantes sur la clé KMS dans vos journaux AWS CloudTrail. Les opérations qui utilisent des clés KMS dans d'autres comptes sont journalisées à la fois dans le compte de l'appelant et dans le compte propriétaire de la clé KMS.

Note

Les exemples de cette rubrique montrent comment utiliser ensemble une politique de clé et une politique IAM pour fournir et limiter l'accès à une clé KMS. Ces exemples génériques ne sont pas destinés à représenter les autorisations que n'importe quel Service AWSparticulier exige sur une clé KMS. Pour de plus amples informations sur les autorisations qu'exige un Service AWS, veuillez consulter la rubrique de chiffrement dans la documentation du service.

Étape 1 : ajouter une déclaration de politique de clé dans le compte local

La politique de clé pour une clé KMS constitue l'élément principal qui détermine qui peut accéder à la clé KMS et quelles sont les opérations pouvant être effectuées. La politique de clé est toujours définie dans le compte propriétaire de la clé KMS. Contrairement aux politiques IAM, les politiques de clé ne spécifient pas de ressource. La ressource est la clé KMS associée à la politique de clé.

Pour accorder à un compte externe l'autorisation d'utiliser la clé KMS, ajoutez une instruction à la politique de clé qui spécifie le compte externe. Dans l'élément Principal de la politique de clé, entrez l'Amazon Resource Name (ARN) du compte externe.

Note

La politique de clé pour la clé KMS doit accorder au compte externe (ou aux utilisateurs et rôles du compte externe) l'autorisation d'utiliser la clé KMS.

Lorsque vous spécifiez un compte externe dans une politique de clé, les administrateurs IAM du compte externe peuvent utiliser des politiques IAM pour déléguer ces autorisations à tous les utilisateurs et rôles du compte externe. Ils peuvent également décider quelles sont les actions spécifiées dans la politique de clé que les utilisateurs et les rôles peuvent effectuer.

Les autorisations accordées au compte externe et à ses principaux ne sont efficaces que si le compte externe est activé dans la région qui héberge la clé KMS et sa politique de clé. Pour plus d'informations sur les régions qui ne sont pas activées par défaut (« Régions d'adhésion »), veuillez consulter Gestion d'Régions AWS dans Référence générale AWS.

Par exemple, supposons que vous vouliez autoriser le compte 444455556666 à utiliser une clé KMS de chiffrement symétrique dans le compte 111122223333. Pour ce faire, ajoutez une instruction de politique comme celle de l'exemple suivant à la politique de clé pour la clé KMS dans le compte 111122223333. Cette instruction de politique accorde au compte externe, 444455556666, l'autorisation d'utiliser la clé KMS dans les opérations de chiffrement pour les clés KMS de chiffrement symétriques.

{ "Sid": "Allow an external account to use this KMS key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::444455556666:root" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }

Au lieu d'accorder l'autorisation au compte externe, vous pouvez spécifier des utilisateurs et des rôles externes spécifiques dans la politique de clé. Toutefois, ces utilisateurs et rôles ne peuvent pas utiliser la clé KMS tant que les administrateurs IAM du compte externe n'ont pas attaché les politiques IAM appropriées à leurs identités. Les politiques IAM peuvent accorder une autorisation à tous les utilisateurs et rôles externes, ou à une partie d'entre eux seulement, qui sont spécifiés dans la politique de clé. Elles peuvent également autoriser tout ou partie des actions spécifiées dans la politique de clé.

La spécification d'identités dans une politique de clé restreint les autorisations que les administrateurs IAM du compte externe peuvent fournir. Toutefois, cela rend la gestion des politiques avec deux comptes plus complexe. Par exemple, supposons que vous ayez besoin d'ajouter un utilisateur ou un rôle. Vous devez ajouter cette identité à la politique de clé dans le compte propriétaire de la clé KMS et créer des politiques IAM dans le compte de l'identité.

Pour spécifier des utilisateurs ou des rôles externes spécifiques dans une politique de clé, dans l'élément Principal, entrez l'Amazon Resource Name (ARN) d'un utilisateur ou d'un rôle dans le compte externe.

Ainsi, l'exemple d'instruction de politique de clé suivant autorise ExampleRole et ExampleUser dans le compte 444455556666 à utiliser une clé KMS dans le compte 111122223333. Cette instruction de politique de clé accorde au compte externe, 444455556666, l'autorisation d'utiliser la clé KMS dans les opérations de chiffrement pour les clés KMS de chiffrement symétriques.

{ "Sid": "Allow an external account to use this KMS key", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::444455556666:role/ExampleRole", "arn:aws:iam::444455556666:user/ExampleUser" ] }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }
Note

Ne définissez pas le principal sur un astérisque (*) dans une instruction de politique de clé qui autorise des autorisations, sauf si vous utilisez des conditions pour limiter la politique de clé. Un astérisque autorise chaque identité dans chaque Compte AWS à utiliser la clé KMS, sauf si une autre instruction de politique la refuse explicitement. Les utilisateurs dans d'autres Comptes AWS ont juste besoin des autorisations IAM correspondantes dans leurs propres comptes pour utiliser la clé KMS.

Vous devez également décider quelles autorisations vous souhaitez accorder au compte externe. Pour obtenir la liste des autorisations sur les clés KMS, veuillez consulter Autorisations AWS KMS.

Vous pouvez accorder au compte externe l'autorisation d'utiliser la clé KMS dans les opérations cryptographiques et avec les services AWS intégrés à AWS KMS. Pour ce faire, utilisez la section Key Users (Utilisateurs de clés) de l'AWS Management Console. Pour plus de détails, veuillez consulter Création de clés KMS que d'autres comptes peuvent utiliser.

Pour spécifier d'autres autorisations dans les politiques de clé, modifiez le document de politique de clé. Par exemple, vous pouvez accorder aux utilisateurs l'autorisation de déchiffrer, mais pas de chiffrer, ou l'autorisation d'afficher la clé KMS sans l'utiliser. Pour modifier le document de politique de clé, vous pouvez utiliser la Policy View (Vue de politique) dans la AWS Management Console ou les opérations CreateKey ou PutKeyPolicy.

Étape 2 : ajouter des politiques IAM dans le compte externe

La politique de clé du compte propriétaire de la clé KMS définit la plage valide pour les autorisations. Cependant, les utilisateurs et les rôles du compte externe ne peuvent pas utiliser la clé KMS tant que vous n'avez pas attaché des politiques IAM qui délèguent ces autorisations ou utilisé des octrois pour gérer l'accès à la clé KMS. Les politiques IAM sont définies dans le compte externe.

Si la politique de clé accorde l'autorisation au compte externe, vous pouvez attacher des politiques IAM à n'importe quel utilisateur ou rôle du compte. Toutefois, si la politique de clé accorde l'autorisation à des utilisateurs ou des rôles spécifiés, la politique IAM peut uniquement accorder ces autorisations à tous les utilisateurs et rôles spécifiés ou à un sous-ensemble. Si une politique IAM accorde l'accès à la clé KMS à d'autres utilisateurs ou rôles externes, cela n'a aucun effet.

La politique de clé limite également les actions dans la politique IAM. La politique IAM peut déléguer tout ou une partie des actions spécifiées dans la politique de clé. Si la politique IAM répertorie les actions qui ne sont pas spécifiées dans la politique de clé, ces autorisations ne sont pas effectives.

L'exemple de politique IAM suivant autorise le principal à utiliser la clé KMS dans le compte 111122223333 pour les opérations de chiffrement. Pour accorder cette autorisation aux utilisateurs et rôles du compte 444455556666, attachez la politique aux utilisateurs ou rôles du compte 444455556666.

{ "Sid": "AllowUseOfKeyInAccount111122223333", "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" }

Notez les informations suivantes sur cette politique :

  • Contrairement aux politiques de clé, les instructions de politique IAM ne contiennent pas l'élément Principal. Dans les politiques IAM, le principal est l'identité à laquelle la politique est attachée.

  • L'élément Resource de la politique IAM identifie la clé KMS que le principal peut utiliser. Pour spécifier une clé KMS, ajoutez son ARN de clé à l'élément Resource.

  • Vous pouvez spécifier plusieurs clés KMS dans l'élément Resource. Si vous ne spécifiez pas de clés KMS particulières dans l'élément Resource, vous pouvez accorder par inadvertance l'accès à plus de clés KMS que prévu.

  • Pour autoriser l'utilisateur externe à utiliser la clé KMS avec des services AWS qui s'intègrent à AWS KMS, vous pouvez avoir besoin d'ajouter des autorisations à la politique de clé ou à la politique IAM. Pour plus de détails, veuillez consulter Autoriser l'utilisation de clés KMS externes avec les services AWS.

Pour plus d'informations sur l'utilisation des politiques IAM, veuillez consulter Politiques IAM.

Création de clés KMS que d'autres comptes peuvent utiliser

Lorsque vous utilisez l'opération CreateKey pour créer une clé KMS, vous pouvez utiliser son paramètre Policy pour spécifier une politique de clé qui accorde à un compte externe, ou à des utilisateurs et rôles externes, l'autorisation d'utiliser la clé KMS. Vous devez également ajouter des politiques IAM dans le compte externe qui délèguent ces autorisations aux utilisateurs et rôles du compte, même lorsque des utilisateurs et des rôles sont spécifiés dans la politique de clé. Vous pouvez modifier la politique de clé à tout moment en utilisant l'opération PutKeyPolicy .

Lorsque vous créez une clé KMS dans la AWS Management Console, vous créez également sa politique de clé. Lorsque vous sélectionnez des identités dans les sections Key Administrators (Administrateurs de clé) et Key Users (Utilisateurs de clé), AWS KMS ajoute des instructions de politique pour ces identités à la politique de clé de la clé KMS.

La section Key Users (Utilisateurs de clé) vous permet également d'ajouter des comptes externes en tant qu'utilisateurs de clé.


                Élément de console qui ajoute des comptes externes à la politique de clé pour une clé KMS.

Lorsque vous entrez l'ID de compte d'un compte externe, AWS KMS ajoute deux instructions à la politique de clé. Cette action affecte uniquement la politique de clé. Les utilisateurs et les rôles du compte externe ne peuvent pas utiliser la clé KMS tant que vous n'avez pas attaché de politiques IAM pour leur accorder tout ou une partie de ces autorisations.

La première instruction de politique de clé accorde au compte externe l'autorisation d'utiliser la clé KMS dans les opérations de chiffrement.

{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:root" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }

La deuxième instruction de politique de clé autorise le compte externe à créer, afficher et révoquer des octrois sur la clé KMS, mais uniquement lorsque la demande provient d'un service AWS intégré à AWS KMS. Ces autorisations permettent à d'autres services AWS qui chiffrent les données utilisateur d'utiliser la clé KMS.

Ces autorisations sont conçues pour les clés KMS qui chiffrent les données utilisateur dans les services AWS, tels que Amazon WorkMail. Ces services utilisent généralement des octrois pour obtenir les autorisations dont ils ont besoin pour utiliser la clé KMS au nom de l'utilisateur. Pour plus de détails, veuillez consulter Autoriser l'utilisation de clés KMS externes avec les services AWS.

{ "Sid": "Allow attachment of persistent resources", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::444455556666:root" }, "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": "*", "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } }

Si ces autorisations ne répondent pas à vos besoins, vous pouvez les modifier dans la vue de politique de la console ou en utilisant l'opération PutKeyPolicy. Vous pouvez spécifier des utilisateurs et des rôles externes particuliers au lieu d'accorder l'autorisation au compte externe. Vous pouvez modifier les actions spécifiées par la politique. Vous pouvez également utiliser des conditions globales et de politique AWS KMS pour affiner les autorisations.

Autoriser l'utilisation de clés KMS externes avec les services AWS

Vous pouvez autoriser un utilisateur d'un autre compte à utiliser votre clé KMS avec un service intégré à AWS KMS. Par exemple, un utilisateur d'un compte externe peut utiliser votre clé KMS pour chiffrer les objets dans un compartiment Amazon S3 ou chiffrer les secrets stockés dans AWS Secrets Manager.

La politique de clé doit accorder à l'utilisateur externe ou au compte de l'utilisateur externe l'autorisation d'utiliser la clé KMS. De plus, vous devez attacher des politiques IAM à l'identité qui autorise l'utilisateur à utiliser le service AWS. Le service peut également exiger que les utilisateurs disposent d'autorisations supplémentaires dans la politique de clé ou la politique IAM. Pour plus d'informations, consultez la documentation du service.

Utilisation de clés KMS dans d'autres comptes

Si vous avez l'autorisation d'utiliser une clé KMS dans un Compte AWS différent, vous pouvez utiliser la clé KMS dans la AWS Management Console, les kits SDK AWS, la AWS CLI et AWS Tools for PowerShell.

Pour identifier une clé KMS dans un compte différent dans une commande shell ou une demande d'API, utilisez les identificateurs de clé suivants.

Si vous saisissez uniquement un ID de clé ou un nom d'alias, AWS suppose que la clé KMS se trouve dans votre compte.

La console AWS KMS n'affiche pas les clés KMS dans d'autres comptes, même si vous avez l'autorisation de les utiliser. En outre, les listes de clés KMS affichées dans les consoles d'autres services AWS n'incluent pas de clés KMS dans d'autres comptes.

Pour spécifier une clé KMS dans un compte différent dans la console d'un service AWS, vous devez entrer l'ARN ou l'alias ARN de la clé KMS. L'identificateur de clé requis varie en fonction du service et peut différer entre la console de service et ses opérations d'API. Pour plus de détails, consultez la documentation du service.