View a markdown version of this page

Chiffrement au format REST pour AWS HealthLake - AWS HealthLake

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.

Chiffrement au format REST pour AWS HealthLake

HealthLake fournit un chiffrement par défaut pour protéger les données sensibles des clients au repos à l'aide d'une clé AWS Key Management Service (AWS KMS) appartenant à un service. Customer-managed Les clés KMS sont également prises en charge et sont requises pour importer et exporter des fichiers depuis un magasin de données. Pour en savoir plus sur Customer-managed KMS Key, consultez Amazon Key Management Service. Les clients peuvent choisir une clé KMS appartenant à AWS ou une clé Customer-managed KMS lors de la création d'un magasin de données. La configuration de chiffrement ne peut pas être modifiée après la création d'un magasin de données. Si un magasin de données utilise une clé KMS appartenant à AWS, elle sera désignée comme telle AWS_OWNED_KMS_KEY et vous ne verrez pas la clé spécifique utilisée pour le chiffrement au repos.

Clé KMS appartenant à AWS

HealthLake utilise ces clés par défaut pour crypter automatiquement les informations potentiellement sensibles telles que les données personnelles identifiables ou les informations médicales privées (PHI) au repos. Les clés KMS appartenant à AWS ne sont pas stockées dans votre compte. Elles font partie d'un ensemble de clés KMS détenues et gérées par AWS pour être utilisées dans plusieurs comptes AWS. Les services AWS peuvent utiliser les clés KMS appartenant à AWS pour protéger vos données. Vous ne pouvez pas afficher, gérer, utiliser les clés KMS appartenant à AWS, ni auditer leur utilisation. Cependant, vous n'avez pas besoin d'effectuer de travaux ni de modifier de programme pour protéger les clés qui chiffrent vos données.

Aucun frais mensuel ni aucun frais d'utilisation ne vous sont facturés si vous utilisez des clés KMS appartenant à AWS, et elles ne sont pas prises en compte dans les quotas AWS KMS pour votre compte. Pour plus d'informations, consultez la section Clés détenues par AWS.

Clés KMS gérées par le client

HealthLake prend en charge l'utilisation d'une clé KMS symétrique gérée par le client que vous créez, possédez et gérez pour ajouter une deuxième couche de cryptage par rapport au cryptage existant appartenant à AWS. Étant donné que vous avez le contrôle total de cette couche de chiffrement, vous pouvez effectuer les tâches suivantes :

  • Établissement et mise à jour de politiques clés, de politiques IAM et de subventions

  • Rotation des matériaux de chiffrement de clé

  • Activation et désactivation des stratégies de clé

  • Ajout de balises

  • Création d’alias de clé

  • Planification des clés pour la suppression

Vous pouvez également l' CloudTrail utiliser pour suivre les demandes HealthLake envoyées à AWS KMS en votre nom. Des AWS KMS frais supplémentaires s'appliquent. Pour plus d'informations, consultez la section Clés appartenant au client.

Création d’une clé gérée par le client

Vous pouvez créer une clé symétrique gérée par le client à l'aide de l'AWS Management Console ou des AWS KMS API.

Suivez les étapes de création d'une clé symétrique gérée par le client dans le guide du développeur AWS Key Management Service.

Les stratégies de clés contrôlent l’accès à votre clé gérée par le client. Chaque clé gérée par le client doit avoir exactement une stratégie de clé, qui contient des instructions qui déterminent les personnes pouvant utiliser la clé et comment elles peuvent l’utiliser. Lorsque vous créez votre clé gérée par le client, vous pouvez spécifier une stratégie de clé. Pour plus d'informations, consultez la section Gestion de l'accès aux clés gérées par le client dans le manuel AWS Key Management Service Developer Guide.

Pour utiliser votre clé gérée par le client avec vos HealthLake ressources, kms : CreateGrant les opérations doivent être autorisées dans la politique de clé. Cela ajoute une autorisation à une clé gérée par le client qui contrôle l'accès à une clé KMS spécifiée, ce qui permet à un utilisateur d'accéder aux opérations kms:grant requises. HealthLake Consultez la section Utilisation des subventions pour plus d'informations.

Pour utiliser votre clé KMS gérée par le client avec vos HealthLake ressources, les opérations d'API suivantes doivent être autorisées dans la politique de clé :

  • kms : CreateGrant ajoute des autorisations à une clé KMS gérée par le client spécifique qui permet d'accéder aux opérations d'octroi.

  • kms : DescribeKey fournit les détails de la clé gérée par le client nécessaires pour valider la clé. Cela est obligatoire pour toutes les opérations.

  • kms : GenerateDataKey permet d'accéder aux ressources de chiffrement au repos pour toutes les opérations d'écriture.

  • KMS:Decrypt permet d'accéder aux opérations de lecture ou de recherche de ressources chiffrées.

Voici un exemple de déclaration de politique qui permet à un utilisateur de créer et d'interagir avec un magasin de AWS HealthLake données chiffré par cette clé :

"Statement": [ { "Sid": "Allow access to create data stores and do CRUD/search in AWS HealthLake", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:HealthLakeFullAccessRole" }, "Action": [ "kms:DescribeKey", "kms:CreateGrant", "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "healthlake.amazonaws.com", "kms:CallerAccount": "111122223333" } } } ]

Autorisations IAM requises pour utiliser une clé KMS gérée par le client

Lors de la création d'un magasin de données dont le AWS KMS chiffrement est activé à l'aide d'une clé KMS gérée par le client, des autorisations sont requises pour la politique de clé et la politique IAM pour l'utilisateur ou le rôle qui crée le magasin de HealthLake données.

Vous pouvez utiliser la clé de ViaService condition kms : pour limiter l'utilisation de la clé KMS aux seules requêtes provenant de HealthLake.

Pour plus d'informations sur les politiques clés, consultez la section Activation des politiques IAM dans le guide du développeur AWS Key Management Service.

L'utilisateur IAM, le rôle IAM ou le compte AWS qui crée vos référentiels doit disposer des autorisations kms :CreateGrant, kms : GenerateDataKey et kms : ainsi que DescribeKey des autorisations nécessaires. HealthLake

Comment HealthLake les subventions sont utilisées dans AWS KMS

HealthLake nécessite une autorisation pour utiliser votre clé KMS gérée par le client. Lorsque vous créez un magasin de données chiffré à l'aide d'une clé KMS gérée par le client, vous HealthLake créez une autorisation en votre nom en envoyant une CreateGrant demande à AWS KMS. Les subventions dans AWS KMS sont utilisées pour donner HealthLake accès à une clé KMS dans un compte client.

Les subventions HealthLake créées en votre nom ne doivent pas être révoquées ni retirées. Si vous révoquez ou retirez la licence qui HealthLake autorise l'utilisation des clés AWS KMS de votre compte, vous HealthLake ne pouvez pas accéder à ces données, chiffrer les nouvelles ressources FHIR transmises au magasin de données ou les déchiffrer lorsqu'elles sont extraites. Lorsque vous révoquez ou retirez une subvention HealthLake, le changement intervient immédiatement. Pour révoquer les droits d'accès, vous devez supprimer le magasin de données plutôt que de révoquer l'autorisation. Lorsqu'un magasin de données est supprimé, HealthLake les subventions sont supprimées en votre nom.

Surveillance de vos clés de chiffrement pour HealthLake

Vous pouvez l'utiliser CloudTrail pour suivre les demandes HealthLake envoyées à en votre AWS KMS nom lorsque vous utilisez une clé KMS gérée par le client. Les entrées du CloudTrail journal indiquent healthlake.amazonaws.com dans le champ UserAgent afin de distinguer clairement les demandes effectuées par. HealthLake

Les exemples suivants concernent CloudTrail des événements destinés à CreateGrant, GenerateDataKey, Decrypt et DescribeKey à surveiller les AWS KMS opérations appelées HealthLake pour accéder aux données chiffrées par la clé gérée par votre client.

Ce qui suit montre comment utiliser CreateGrant pour autoriser l'accès HealthLake à une clé KMS fournie par le client, HealthLake permettant d'utiliser cette clé KMS pour crypter toutes les données client au repos.

Les utilisateurs ne sont pas tenus de créer leurs propres subventions. HealthLake crée une subvention en votre nom en envoyant une CreateGrant demande à AWS KMS. Les subventions AWS KMS sont utilisées pour donner HealthLake accès à une AWS KMS clé d'un compte client.

{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "EXAMPLEROLE:Sampleuser01", "arn": "arn:aws:sts::111122223333:assumed-role/Sampleuser01, "accountId": "111122223333", "accessKeyId": "EXAMPLEKEYID", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "EXAMPLEROLE", "arn": "arn:aws:iam::111122223333:role/Sampleuser01", "accountId": "111122223333", "userName": "Sampleuser01" }, "webIdFederationData": {}, "attributes": { "creationDate": "2021-06-30T19:33:37Z", "mfaAuthenticated": "false" } }, "invokedBy": "healthlake.amazonaws.com" }, "eventTime": "2021-06-30T20:31:15Z", "eventSource": "kms.amazonaws.com", "eventName": "CreateGrant", "awsRegion": "us-east-1", "sourceIPAddress": "healthlake.amazonaws.com", "userAgent": "healthlake.amazonaws.com", "requestParameters": { "operations": [ "CreateGrant", "Decrypt", "DescribeKey", "Encrypt", "GenerateDataKey", "GenerateDataKeyWithoutPlaintext", "ReEncryptFrom", "ReEncryptTo", "RetireGrant" ], "granteePrincipal": "healthlake.us-east-1.amazonaws.com", "keyId": "arn:aws:kms:us-east-1:111122223333:key/EXAMPLE_KEY_ARN", "retiringPrincipal": "healthlake.us-east-1.amazonaws.com" }, "responseElements": { "grantId": "EXAMPLE_ID_01" }, "requestID": "EXAMPLE_ID_02", "eventID": "EXAMPLE_ID_03", "readOnly": false, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:111122223333:key/EXAMPLE_KEY_ARN" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }

Les exemples suivants montrent comment s' GenerateDataKey assurer que l'utilisateur dispose des autorisations nécessaires pour chiffrer les données avant de les stocker.

{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "EXAMPLEUSER", "arn": "arn:aws:sts::111122223333:assumed-role/Sampleuser01", "accountId": "111122223333", "accessKeyId": "EXAMPLEKEYID", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "EXAMPLEROLE", "arn": "arn:aws:iam::111122223333:role/Sampleuser01", "accountId": "111122223333", "userName": "Sampleuser01" }, "webIdFederationData": {}, "attributes": { "creationDate": "2021-06-30T21:17:06Z", "mfaAuthenticated": "false" } }, "invokedBy": "healthlake.amazonaws.com" }, "eventTime": "2021-06-30T21:17:37Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-east-1", "sourceIPAddress": "healthlake.amazonaws.com", "userAgent": "healthlake.amazonaws.com", "requestParameters": { "keySpec": "AES_256", "keyId": "arn:aws:kms:us-east-1:111122223333:key/EXAMPLE_KEY_ARN" }, "responseElements": null, "requestID": "EXAMPLE_ID_01", "eventID": "EXAMPLE_ID_02", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:111122223333:key/EXAMPLE_KEY_ARN" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }

L'exemple suivant montre comment HealthLake appelle l'opération de déchiffrement pour utiliser la clé de données chiffrée stockée afin d'accéder aux données chiffrées.

{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "EXAMPLEUSER", "arn": "arn:aws:sts::111122223333:assumed-role/Sampleuser01", "accountId": "111122223333", "accessKeyId": "EXAMPLEKEYID", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "EXAMPLEROLE", "arn": "arn:aws:iam::111122223333:role/Sampleuser01", "accountId": "111122223333", "userName": "Sampleuser01" }, "webIdFederationData": {}, "attributes": { "creationDate": "2021-06-30T21:17:06Z", "mfaAuthenticated": "false" } }, "invokedBy": "healthlake.amazonaws.com" }, "eventTime": "2021-06-30T21:21:59Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-east-1", "sourceIPAddress": "healthlake.amazonaws.com", "userAgent": "healthlake.amazonaws.com", "requestParameters": { "encryptionAlgorithm": "SYMMETRIC_DEFAULT", "keyId": "arn:aws:kms:us-east-1:111122223333:key/EXAMPLE_KEY_ARN" }, "responseElements": null, "requestID": "EXAMPLE_ID_01", "eventID": "EXAMPLE_ID_02", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:111122223333:key/EXAMPLE_KEY_ARN" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }

L'exemple suivant montre comment HealthLake utilise cette DescribeKey opération pour vérifier si la AWS KMS clé appartenant au AWS KMS client est utilisable et pour aider l'utilisateur à résoudre les problèmes si elle ne fonctionne pas.

{ "eventVersion": "1.08", "userIdentity": { "type": "AssumedRole", "principalId": "EXAMPLEUSER", "arn": "arn:aws:sts::111122223333:assumed-role/Sampleuser01", "accountId": "111122223333", "accessKeyId": "EXAMPLEKEYID", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "EXAMPLEROLE", "arn": "arn:aws:iam::111122223333:role/Sampleuser01", "accountId": "111122223333", "userName": "Sampleuser01" }, "webIdFederationData": {}, "attributes": { "creationDate": "2021-07-01T18:36:14Z", "mfaAuthenticated": "false" } }, "invokedBy": "healthlake.amazonaws.com" }, "eventTime": "2021-07-01T18:36:36Z", "eventSource": "kms.amazonaws.com", "eventName": "DescribeKey", "awsRegion": "us-east-1", "sourceIPAddress": "healthlake.amazonaws.com", "userAgent": "healthlake.amazonaws.com", "requestParameters": { "keyId": "arn:aws:kms:us-east-1:111122223333:key/EXAMPLE_KEY_ARN" }, "responseElements": null, "requestID": "EXAMPLE_ID_01", "eventID": "EXAMPLE_ID_02", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:111122223333:key/EXAMPLE_KEY_ARN" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }

En savoir plus

Les ressources suivantes fournissent plus d'informations sur le chiffrement des données au repos.

Pour plus d'informations sur les concepts de base d'AWS Key Management Service, consultez la AWS KMS documentation.

Pour plus d'informations sur les meilleures pratiques en matière de sécurité, AWS KMS consultez la documentation.