Connexion à AWS KMS via un point de terminaison d'un VPC - 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.

Connexion à AWS KMS via un point de terminaison d'un VPC

Vous pouvez vous connecter directement à AWS KMS via un point de terminaison d'interface privé dans votre cloud privé virtuel (VPC). Lorsque vous utilisez un point de terminaison d'un VPC d'interface, la communication entre votre VPC et AWS KMS est gérée au sein du réseau AWS.

AWS KMS prend en charge les points de terminaison Amazon Virtual Private Cloud (Amazon VPC) à technologie AWS PrivateLink. Chaque point de terminaison d'un VPC est représenté par une ou plusieurs interfaces réseau Elastic (ENI) avec des adresses IP privées dans vos sous-réseaux VPC.

Le point de terminaison de VPC d'interface connecte votre VPC directement à AWS KMS sans passerelle Internet, périphérique NAT, connexion VPN ni connexion AWS Direct Connect. Les instances de votre VPC ne requièrent pas d'adresses IP publiques pour communiquer avec AWS KMS.

Régions

AWS KMS prend en charge les points de terminaison d'un VPC et les politiques relatives aux points de terminaison d'un VPC dans toutes les Régions AWS dans lesquelles AWS KMS est pris en charge.

Considérations relatives aux points de terminaison de VPC AWS KMS

Avant de configurer un point de terminaison d'un VPC d'interface pour AWS KMS, veuillez consulter la rubrique Propriétés et limites des points de terminaison d'interface dans le Guide de l'utilisateur AWS PrivateLink.

La prise en charge AWS KMS d'un point de terminaison de VPC inclut les éléments suivants.

Création d'un point de terminaison de VPC pour AWS KMS

Vous pouvez créer un point de terminaison d'un VPC pour AWS KMS à l'aide de la console Amazon VPC ou de l'API Amazon VPC. Pour de plus amples informations, veuillez consulter Créer un point de terminaison d'interface dans le Guide AWS PrivateLink.

Pour faciliter l'utilisation du point de terminaison de VPC, vous pouvez activer un nom DNS privé pour votre point de terminaison d'un VPC. Si vous sélectionnez l'option Enable DNS Name (Activer le nom DNS), le nom d'hôte DNS AWS KMS standard est résolu vers votre point de terminaison d'un VPC. Par exemple, https://kms.us-west-2.amazonaws.com serait résolu vers un point de terminaison d'un VPC connecté au nom du service com.amazonaws.us-west-2.kms.

Cette option facilite l'utilisation du point de terminaison d'un VPC. L'AWS et les kits SDK AWS CLI utilisent le nom d'hôte DNS AWS KMS standard par défaut. Vous n'avez donc pas besoin de spécifier l'URL du point de terminaison d'un VPC dans les applications et les commandes.

Pour de plus amples informations, veuillez consulter Accès à un service via un point de terminaison d'interface dans le Guide AWS PrivateLink.

Connexion à un point de terminaison de VPC AWS KMS

Vous pouvez vous connecter à AWS KMS via le point de terminaison de VPC à l'aide de d'un kit SDK AWS, de l'AWS CLI ou de AWS Tools for PowerShell. Pour spécifier le point de terminaison VPC, utilisez son nom DNS.

Par exemple, cette commande list-keys utilise le paramètre endpoint-url pour indiquer le point de terminaison VPC. Pour utiliser une commande comme celle-ci, remplacez l'exemple d'ID de point de terminaison VPC par celui de votre compte.

$ aws kms list-keys --endpoint-url https://vpce-1234abcdf5678c90a-09p7654s-us-east-1a.ec2.us-east-1.vpce.amazonaws.com

Si vous avez activé les noms d'hôte privés lorsque vous avez créé votre point de terminaison VPC, vous n'avez pas besoin de spécifier l'URL de point de terminaison VPC dans vos commandes de CLI ou dans la configuration de l'application. Le nom d'hôte DNS AWS KMS standard est résolu vers votre point de terminaison d'un VPC. L'AWS CLI et les kits SDK utilisent ce nom d'hôte par défaut. Vous pouvez donc commencer à utiliser le point de terminaison d'un VPC pour vous connecter à un point de terminaison régional AWS KMS sans rien changer dans vos scripts et applications.

Pour utiliser des noms d'hôte privés, les attributs enableDnsHostnames et enableDnsSupport de votre VPC doivent avoir la valeur true. Pour définir ces attributs, utilisez l'ModifyVpcAttributeopération. Pour plus d'informations, veuillez consulter Afficher et mettre à jour les attributs DNS pour votre VPC dans le Guide de l'utilisateur Amazon VPC.

Contrôle de l'accès à votre point de terminaison d'un VPC

Pour contrôler l'accès à votre point de terminaison d'un VPC pour AWS KMS, attachez une politique de point de terminaison d'un VPC à votre point de terminaison d'un VPC. La politique de point de terminaison détermine si les principaux peuvent utiliser le point de terminaison d'un VPC pour appeler des opérations AWS KMS sur des ressources AWS KMS.

Vous pouvez créer une politique de point de terminaison VPC lorsque vous créez votre point de terminaison, et vous pouvez modifier la politique de point de terminaison d'un VPC à tout moment. Utilisez la console de gestion du VPC CreateVpcEndpointou les ModifyVpcEndpointopérations. Vous pouvez également créer et modifier une politique de point de terminaison d'un VPC en utilisant un modèle AWS CloudFormation. Pour obtenir de l'aide sur l'utilisation de la console de gestion de VPC, veuillez consulter Créer un point de terminaison d'interface et Modification d'un point de terminaison d'interface dans le AWS PrivateLinkGuide .

Note

AWS KMS prend en charge les politiques de point de terminaison d'un VPC à partir de juillet 2020. Les points de terminaison d'un VPC pour AWS KMS qui ont été créés avant cette date ont la politique de point de terminaison d'un VPC par défaut, mais vous pouvez la modifier à tout moment.

Pour obtenir de l'aide sur la rédaction et la mise en forme d'un document de politique JSON, veuillez consulter Référence de politique JSON IAM dans le Guide de l'utilisateur IAM.

À propos des politiques de point de terminaison d'un VPC

Pour une demande AWS KMS qui utilise un point de terminaison d'un VPC pour réussir, le principal nécessite des autorisations de deux sources :

  • Une politique de clé, une politique IAM ou un octroi doivent accorder au principal l'autorisation d'appeler l'opération sur la ressource (clé KMS ou alias).

  • Une politique de point de terminaison d'un VPC doit accorder au principal l'autorisation d'utiliser le point de terminaison pour effectuer la demande.

Par exemple, une politique de clé peut accorder à un principal l'autorisation d'appeler Decrypt sur une clé KMS particulière. Toutefois, la politique de point de terminaison d'un VPC peut ne pas permettre à ce principal d'appeler Decrypt sur cette clé KMS à l'aide du point de terminaison.

Ou, une stratégie de VPC de terminaison d'un point de terminaison d'un point de terminaison d'un point de terminaison d'un point de DisableKeyterminaison d'un point de terminaison d'un Mais si le principal ne dispose pas de ces autorisations provenant d'une politique de clé, d'une politique IAM ou d'un octroi, la demande échoue.

Politique de point de terminaison d'un VPC par défaut

Chaque point de terminaison d'un VPC dispose d'une politique de point de terminaison d'un VPC, mais vous n'êtes pas tenu de spécifier la politique. Si vous ne spécifiez pas de politique, la politique de point de terminaison par défaut autorise toutes les opérations effectuées par tous les principaux sur toutes les ressources du point de terminaison.

Cependant, pour les ressources AWS KMS, le principal doit également avoir l'autorisation d'appeler l'opération à partir d'une politique de clé, d'une politique IAM, ou d'un octroi. Par conséquent, en pratique, la politique par défaut indique que si un principal a l'autorisation d'appeler une opération sur une ressource, il peut également l'appeler à l'aide du point de terminaison.

{ "Statement": [ { "Action": "*", "Effect": "Allow", "Principal": "*", "Resource": "*" } ] }

Pour permettre aux principaux d'utiliser le point de terminaison d'un VPC uniquement pour un sous-ensemble de leurs opérations autorisées, créez ou mettre à jour la politique de point de terminaison d'un VPC.

Création d'une stratégie de point de terminaison de VPC

Une politique de point de terminaison d'un VPC détermine si un principal a l'autorisation d'utiliser le point de terminaison d'un VPC pour effectuer des opérations sur une ressource. Pour les ressources AWS KMS, le principal doit également avoir l'autorisation d'effectuer les opérations à partir d'une politique de clé, d'une politique IAM, ou d'un octroi.

Chaque instruction de politique de point de terminaison d'un VPC nécessite les éléments suivants :

  • Le principal qui peut exécuter des actions.

  • Les actions qui peuvent être effectuées.

  • Les ressources sur lesquelles les actions peuvent être exécutées.

L'instruction de politique ne spécifie pas le point de terminaison d'un VPC. Au lieu de cela, elle s'applique à tout point de terminaison d'un VPC auquel la politique est attachée. Pour plus d'informations, consultez Contrôle de l'accès aux services avec points de terminaison d'un VPC dans le Guide de l'utilisateur Amazon VPC.

Voici un exemple de politique de point de terminaison d'un VPC pour AWS KMS. Lorsqu'elle est attachée à un point de terminaison d'un VPC, cette politique autorise ExampleUser à utiliser le point de terminaison d'un VPC pour appeler les opérations spécifiées sur les clés KMS spécifiées. Avant d'utiliser une politique comme celle-ci, remplacez le principal d'exemple et l'ARN de clé avec des valeurs valides de votre compte.

{ "Statement":[ { "Sid": "AllowDecryptAndView", "Principal": {"AWS": "arn:aws:iam::111122223333:user/ExampleUser"}, "Effect":"Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:ListAliases", "kms:ListKeys" ], "Resource": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab" } ] }

AWS CloudTrail journalise toutes les opérations qui utilisent le point de terminaison d'un VPC. Toutefois, vos CloudTrail journaux n'incluent pas les opérations demandées par les principaux dans d'autres comptes ou les opérations pour les clés KMS dans d'autres comptes.

En tant que tel, vous pouvez créer une politique de point de terminaison d'un VPC qui empêche les principaux des comptes externes d'utiliser le point de terminaison d'un VPC pour appeler des opérations AWS KMS sur toutes les clés du compte local.

L'exemple suivant repose sur la clé de condition awpoint de point de point dePrincipalAccount point de point de point de point de point de point de point de point de terminaison : point de point de point de point de point de point de point de point de point de point de point de point de point de point de point de terminaison Avant d'utiliser une politique comme celle-ci, remplacez l'ID de compte d'exemple par un ID valide.

{ "Statement": [ { "Sid": "AccessForASpecificAccount", "Principal": {"AWS": "*"}, "Action": "kms:*", "Effect": "Deny", "Resource": "arn:aws:kms:*:111122223333:key/*", "Condition": { "StringNotEquals": { "aws:PrincipalAccount": "111122223333" } } } ] }

Affichage d'une politique de point de terminaison d'un VPC

Pour consulter la politique de point de terminaison VPC pour un point de terminaison, utilisez la console de gestion du VPC ou l'DescribeVpcEndpointsopération.

La commande AWS CLI suivante obtient la politique pour le point de terminaison, avec l'ID de point de terminaison d'un VPC spécifié.

Avant d'utiliser cette commande, remplacez l'exemple d'ID de point de terminaison d'exemple par un ID valide provenant de votre compte.

$ aws ec2 describe-vpc-endpoints \ --query 'VpcEndpoints[?VpcEndpointId==`vpce-1234abcdf5678c90a`].[PolicyDocument]' --output text

Utilisation d'un point de terminaison VPC dans une déclaration de politique

Vous pouvez contrôler l'accès aux ressources et opérations AWS KMS lorsque la demande provient d'un VPC ou utilise un point de terminaison d'un VPC. Pour ce faire, utilisez l'une des clés de condition globales suivantes dans une politique de clé ou une politique IAM.

  • Utilisez la clé de condition aws:sourceVpce pour accorder ou restreindre l'accès en fonction du point de terminaison d'un VPC.

  • Utilisez la clé de condition aws:sourceVpc pour accorder ou restreindre l'accès en fonction du VPC qui héberge le point de terminaison privé.

Note

Soyez prudent lorsque vous créez des politiques de clé et des politiques IAM basées sur votre point de terminaison d'un VPC. Si une instruction de politique nécessite que les demandes proviennent d'un VPC ou d'un point de terminaison d'un VPC spécifique, les demandes en provenance de services AWS intégrés qui utilisent une ressource AWS KMS en votre nom risquent d'échouer. Pour obtenir de l'aide, veuillez consulter Utilisation de conditions de point de terminaison d'un VPC dans des politiques avec des autorisations AWS KMS.

Par ailleurs, la clé de condition aws:sourceIP n'est pas en vigueur lorsque la demande provient d'un point de terminaison d'un VPC Amazon. Pour restreindre les requêtes à un point de terminaison VPC, utilisez les clés de condition aws:sourceVpce ou aws:sourceVpc. Pour de plus amples informations, veuillez consulter Gestion des identités et des accès pour les points de terminaison d'un VPC et les services de points de terminaison d'un VPC dans le Guide AWS PrivateLink.

Vous pouvez utiliser ces clés de condition globales pour contrôler l'accès auxAWS KMS keys (clés KMS), aux alias et aux opérations de condition globales CreateKeyqui ne dépendent pas d'une ressource particulière.

Par exemple, l'exemple de politique de clé suivant autorise un utilisateur à effectuer des opérations de chiffrement à l'aide d'une clé KMS uniquement lorsque la demande provient du point de terminaison d'un VPC spécifié. Lorsqu'un utilisateur adresse une demande à AWS KMS, l'ID de point de terminaison de VPC dans la demande est comparé à la valeur de la clé de condition aws:sourceVpce dans la politique. S'il n'y a pas de concordance, la requête est refusée.

Pour utiliser une politique comme celle-ci, remplacez l'espace réservé d'ID Compte AWS et les ID de point de terminaison d'un VPC par des valeurs valides pour votre compte.

{ "Id": "example-key-1", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM policies", "Effect": "Allow", "Principal": {"AWS":["111122223333"]}, "Action": ["kms:*"], "Resource": "*" }, { "Sid": "Restrict usage to my VPC endpoint", "Effect": "Deny", "Principal": "*", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:sourceVpce": "vpce-1234abcdf5678c90a" } } } ] }

Vous pouvez également utiliser la clé de condition aws:sourceVpc pour restreindre l'accès à vos clés KMS en fonction du VPC dans lequel réside le point de terminaison d'un VPC.

L'exemple de politique de clé suivant autorise des commandes qui gèrent la clé KMS uniquement lorsqu'ils proviennent de vpc-12345678. En outre, il autorise les commandes qui utilisent la clé KMS pour des opérations cryptographiques uniquement lorsqu'elles proviennent de vpc-2b2b2b2b. Vous pouvez utiliser politique comme celle-ci si une application est en cours d'exécution dans un VPC, mais que vous utilisez un second VPC isolé pour les fonctions de gestion.

Pour utiliser une politique comme celle-ci, remplacez l'espace réservé d'ID Compte AWS et les ID de point de terminaison d'un VPC par des valeurs valides pour votre compte.

{ "Id": "example-key-2", "Version": "2012-10-17", "Statement": [ { "Sid": "Allow administrative actions from vpc-12345678", "Effect": "Allow", "Principal": {"AWS": "111122223333"}, "Action": [ "kms:Create*","kms:Enable*","kms:Put*","kms:Update*", "kms:Revoke*","kms:Disable*","kms:Delete*", "kms:TagResource", "kms:UntagResource" ], "Resource": "*", "Condition": { "StringEquals": { "aws:sourceVpc": "vpc-12345678" } } }, { "Sid": "Allow key usage from vpc-2b2b2b2b", "Effect": "Allow", "Principal": {"AWS": "111122223333"}, "Action": [ "kms:Encrypt","kms:Decrypt","kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringEquals": { "aws:sourceVpc": "vpc-2b2b2b2b" } } }, { "Sid": "Allow read actions from everywhere", "Effect": "Allow", "Principal": {"AWS": "111122223333"}, "Action": [ "kms:Describe*","kms:List*","kms:Get*" ], "Resource": "*", } ] }

Journalisation de votre point de terminaison d'un VPC

AWS CloudTrail journalise toutes les opérations qui utilisent le point de terminaison d'un VPC. Lorsqu'une requête adressée à AWS KMS utilise un point de terminaison d'un VPC, l'ID de point de terminaison VPC apparaît dans l'entrée de journal AWS CloudTrail qui enregistre la requête. Vous pouvez utiliser l'ID de point de terminaison pour auditer l'utilisation de votre point de terminaison de VPC AWS KMS.

Toutefois, vos CloudTrail journaux n'incluent pas les opérations demandées par les principaux dans d'autres comptes ou les demandes pourAWS KMS opérations sur des clés KMS et des alias dans d'autres comptes. En outre, pour protéger votre VPC, les demandes qui sont refusées par une politique de point de terminaison d'un VPC, mais qui auraient été autorisées, ne sont pas enregistrés dans AWS CloudTrail.

Par exemple, cet exemple d'entrée de journal enregistre une requête GenerateDataKey qui utilise le point de terminaison d'un VPC. Le champ vpcEndpointId apparaît à la fin de l'entrée de journal.

{ "eventVersion":"1.05", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn:aws:iam::111122223333:user/Alice", "accessKeyId": "EXAMPLE_KEY_ID", "accountId": "111122223333", "userName": "Alice" }, "eventTime":"2018-01-16T05:46:57Z", "eventSource":"kms.amazonaws.com", "eventName":"GenerateDataKey", "awsRegion":"eu-west-1", "sourceIPAddress":"172.01.01.001", "userAgent":"aws-cli/1.14.23 Python/2.7.12 Linux/4.9.75-25.55.amzn1.x86_64 botocore/1.8.27", "requestParameters":{ "keyId":"1234abcd-12ab-34cd-56ef-1234567890ab", "numberOfBytes":128 }, "responseElements":null, "requestID":"a9fff0bf-fa80-11e7-a13c-afcabff2f04c", "eventID":"77274901-88bc-4e3f-9bb6-acf1c16f6a7c", "readOnly":true, "resources":[{ "ARN":"arn:aws:kms:eu-west-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "accountId":"111122223333", "type":"AWS::KMS::Key" }], "eventType":"AwsApiCall", "recipientAccountId":"111122223333", "vpcEndpointId": "vpce-1234abcdf5678c90a" }