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 stratégie de clé de la clé KMS et dans une stratégie 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 mandataire dans un autre compte l'autorisation kms:ListKeys dans une stratégie IAM, ou l'autorisation kms:ScheduleKeyDeletion sur une clé KMS dans une stratégie 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 AWS KMSAutorisations 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 mandataires à 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 stratégies pour protéger les ressources de votre compte, veuillez consulter Bonnes pratiques pour les stratégies 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 stratégies différents :

  • La stratégie 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 stratégie de clé se trouve dans le compte qui possède la clé KMS.

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

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

Pour modifier la stratégie de clé, vous pouvez utiliser la Policy View (Vue de stratégie) dans la AWS Management Console ou les opérations CreateKey ou PutKeyPolicy. Pour obtenir de l'aide concernant la définition de la stratégie 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 stratégies IAM, veuillez consulter Utilisation des stratégies IAM avec AWS KMS.

Pour obtenir un exemple qui montre comment la stratégie de clé et les stratégies 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.

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

La stratégie 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 stratégie de clé est toujours définie dans le compte propriétaire de la clé KMS. Contrairement aux stratégies IAM, les stratégies de clé ne spécifient pas de ressource. La ressource est la clé KMS associée à la stratégie de clé.

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

Lorsque vous spécifiez un compte externe dans une stratégie de clé, les administrateurs IAM du compte externe peuvent utiliser des stratégies 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 stratégie de clé que les utilisateurs et les rôles peuvent effectuer.

Les autorisations accordées au compte externe et à ses mandataires ne sont efficaces que si le compte externe est activé dans la région qui héberge la clé KMS et sa stratégie 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 symétrique dans le compte 111122223333. Pour ce faire, ajoutez une instruction de stratégie comme celle de l'exemple suivant à la stratégie de clé pour la clé KMS dans le compte 111122223333. Cette instruction de stratégie accorde au compte externe, 444455556666, l'autorisation d'utiliser la clé KMS dans les opérations de chiffrement pour les clés KMS 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 stratégie 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 stratégies IAM appropriées à leurs identités. Les stratégies 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 stratégie de clé. Elles peuvent également autoriser tout ou partie des actions spécifiées dans la stratégie de clé.

La spécification d'identités dans une stratégie de clé restreint les autorisations que les administrateurs IAM du compte externe peuvent fournir. Toutefois, cela rend la gestion des stratégies 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 stratégie de clé dans le compte propriétaire de la clé KMS et créer des stratégies IAM dans le compte de l'identité.

Pour spécifier des utilisateurs ou des rôles externes spécifiques dans une stratégie 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 stratégie de clé suivant autorise ExampleRole et ExampleUser dans le compte 444455556666 à utiliser une clé KMS dans le compte 111122223333. Cette instruction de stratégie 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 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 mandataire sur un astérisque (*) dans une instruction de stratégie de clé qui autorise des autorisations, sauf si vous utilisez des conditions pour limiter la stratégie de clé. Un astérisque autorise chaque identité dans chaque Compte AWS à utiliser la clé KMS, sauf si une autre déclaration de stratégie 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 AWS KMSAutorisations .

Vous pouvez accorder au compte externe l'autorisation d'utiliser la clé KMS dans les opérations de chiffrement 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 stratégies de clé, modifiez le document de stratégie 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 stratégie de clé, vous pouvez utiliser la Policy View (Vue de stratégie) dans la AWS Management Console ou les opérations CreateKey ou PutKeyPolicy.

Étape 2 : ajouter des stratégies IAM dans le compte externe

La stratégie 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 stratégies IAM qui délèguent ces autorisations ou utilisé des octrois pour gérer l'accès à la clé KMS. Les stratégies IAM sont définies dans le compte externe.

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

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

L'exemple de stratégie IAM suivant autorise le mandataire à 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 stratégie 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 stratégie :

  • Contrairement aux stratégies de clé, les instructions de stratégie IAM ne contiennent pas l'élément Principal. Dans les stratégies IAM, le mandataire est l'identité à laquelle la stratégie est attachée.

  • L'élément Resource de la stratégie IAM identifie la clé KMS que le mandataire 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 stratégie de clé ou à la stratégie 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 stratégies 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 stratégie 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 stratégies 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 stratégie de clé. Vous pouvez modifier la stratégie 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 stratégie 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 stratégie pour ces identités à la stratégie 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 stratégie de clé pour une clé KMS.

Lorsque vous entrez l'ID de compte d'un compte externe, AWS KMS ajoute deux instructions à la stratégie de clé. Cette action affecte uniquement la stratégie 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 stratégies IAM pour leur accorder tout ou une partie de ces autorisations.

La première instruction de stratégie 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 stratégie 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 stratégie 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 stratégie. Vous pouvez également utiliser des conditions globales et de stratégie 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 stratégie 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 stratégies 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 stratégie de clé ou la stratégie 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.