Chiffrement de votre catalogue de données
Le chiffrement AWS Glue Data Catalog renforce la sécurité de vos données sensibles. AWS Glue s’intègre à AWS Key Management Service (AWS KMS) pour chiffrer les métadonnées stockées dans le catalogue de données. Vous pouvez activer ou désactiver les paramètres de chiffrement pour les ressources du catalogue de données à l’aide de la console AWS Glue ou de l’AWS CLI.
Lorsque vous activez le chiffrement pour votre catalogue de données, tous les nouveaux objets que vous créez sont chiffrés. Lorsque vous désactivez le chiffrement, les nouveaux objets que vous créez ne sont pas chiffrés, mais les objets chiffrés existants restent chiffrés.
Vous pouvez chiffrer l’intégralité de votre catalogue de données à l’aide de clés de chiffrement gérées par AWS ou de clés de chiffrement gérées par le client. Pour plus d’informations sur les types de clés et les états, consultez la section Concepts AWS Key Management Service dans le Guide du développeur AWS Key Management Service.
Lorsque vous utilisez le catalogue de données chiffré avec un robot, vous devez conserver les paramètres de chiffrement. La suppression des paramètres de chiffrement après qu’un robot a traité un catalogue chiffré entraîne des erreurs. Si vous devez supprimer des paramètres de chiffrement, créez un autre robot au lieu de modifier celui qui existe déjà.
Clés gérées par AWS
Les clés gérées AWS sont des clés KMS de votre compte qui sont créées, gérées et utilisées en votre nom par un service AWS intégré à AWS KMS. Vous pouvez afficher les clés gérées par AWS dans votre compte, afficher leurs stratégies de clé et contrôler leur utilisation dans les journaux AWS CloudTrail. Toutefois, vous ne pouvez pas gérer ces clés ni modifier leurs autorisations.
Le chiffrement au repos s’intègre automatiquement avec AWS KMS pour la gestion des clés gérées par AWS pour AWS Glue qui sont utilisées pour chiffrer vos métadonnées. S’il n’existe pas de clé gérée par AWS lorsque vous activez le chiffrement des métadonnées, AWS KMS en crée une automatiquement pour vous.
Pour en savoir plus, consultez Clés gérées par AWS.
Clés gérées par le client
Les clés gérées par le client sont des clés KMS de votre Compte AWS que vous créez, possédez et gérez. Vous avez le contrôle total de ces clés KMS. Vous pouvez :
-
Établir et maintenir leurs stratégies de clé, leurs politiques IAM et leurs autorisations
-
Les activer et les désactiver
-
Effectuer une rotation de leur matériel de chiffrement
-
Ajouter des balises
-
Créer des alias qui y font référence
-
Les planifier en vue de leur suppression
Pour plus d’informations sur la gestion des autorisations d’une clé gérée par le client, consultez Clés gérées par le client.
AWS Glue ne prend en charge que les clés symétriques gérées par le client. La liste de clés KMS n’affiche que des clés symétriques. Toutefois, si vous sélectionnez Choisir un ARN de clé KMS, la console vous permet d’entrer un ARN pour n’importe quel type de clé. Assurez-vous de saisir uniquement les ARN pour les clés symétriques.
Pour créer une CMK symétrique, suivez les étapes de création de clés symétriques gérées par le client dans le Guide du développeur AWS Key Management Service.
Lorsque vous activez le chiffrement du catalogue de données au repos, les types de ressources suivants sont chiffrés à l’aide de clés KMS :
Contexte de chiffrement AWS Glue
Un contexte de chiffrement est un ensemble facultatif de paires clé-valeur qui contiennent des informations contextuelles supplémentaires sur les données. AWS KMS utilise le contexte de chiffrement en tant que données authentifiées supplémentaires pour prendre en charge le chiffrement authentifié. Lorsque vous incluez un contexte de chiffrement dans une demande de chiffrement de données, AWS KMS lie le contexte de chiffrement aux données chiffrées. Pour déchiffrer les données, vous devez inclure le même contexte de chiffrement dans la demande. AWS Glue utilise le même contexte de chiffrement dans toutes les opérations cryptographiques AWS KMS, où la clé est glue_catalog_id et la valeur est catalogId.
"encryptionContext": {
"glue_catalog_id": "111122223333"
}
Lorsque vous utilisez une clé gérée par AWS ou une clé symétrique gérée par le client pour chiffrer votre catalogue de données, vous pouvez également utiliser le contexte de chiffrement dans les enregistrements et les journaux d’audit pour identifier la manière dont la clé est utilisée. Le contexte de chiffrement apparaît également dans les journaux générés par AWS CloudTrail ou Amazon CloudWatch Logs.
Activation du chiffrement
Vous pouvez activer le chiffrement de vos objets AWS Glue Data Catalog dans les paramètres du catalogue de données dans la console AWS Glue ou en utilisant l’AWS CLI.
- Console
-
Pour activer le chiffrement à l’aide de la console
Connectez-vous à la AWS Management Console et ouvrez la console AWS Glue à l’adresse https://console.aws.amazon.com/glue/.
-
Dans le panneau de navigation, choisissez Catalogue de données.
-
Sur la page Paramètres du catalogue de données, cochez la case Chiffrement des métadonnées, puis choisissez une clé AWS KMS.
Lorsque vous activez le chiffrement, si vous ne spécifiez pas de clé gérée par le client, les paramètres de chiffrement utilisent une clé KMS gérée par AWS.
-
(Facultatif) Lorsque vous utilisez une clé gérée par le client pour chiffrer votre catalogue de données, celui-ci propose une option permettant d’enregistrer un rôle IAM pour chiffrer et déchiffrer les ressources. Vous devez accorder à votre rôle IAM des autorisations dont AWS Glue peut disposer en votre nom. Cela inclut les autorisations AWS KMS pour chiffrer et déchiffrer des données.
Lorsque vous créez une ressource dans le catalogue de données, AWS Glue endosse le rôle IAM fourni pour chiffrer les données. De même, lorsqu’un consommateur accède à la ressource, AWS Glue endosse le rôle IAM pour déchiffrer les données. Si vous enregistrez un rôle IAM avec les autorisations requises, le principal appelant n’a plus besoin d’autorisations pour accéder à la clé et déchiffrer les données.
Vous ne pouvez déléguer des opérations KMS à un rôle IAM que si vous utilisez une clé gérée par le client pour chiffrer les ressources du catalogue de données. La fonctionnalité de délégation de rôles KMS ne prend pas en charge l’utilisation de clés gérées par AWS pour chiffrer les ressources du catalogue de données pour le moment.
Lorsque vous activez un rôle IAM pour déléguer les opérations KMS, vous ne pouvez plus accéder aux ressources du catalogue de données précédemment chiffrées à l’aide d’une clé gérée par AWS.
-
Pour activer un rôle IAM qu’AWS Glue peut endosser pour chiffrer et déchiffrer les données en votre nom, sélectionnez l’option Déléguer les opérations KMS à un rôle IAM.
-
Ensuite, choisissez un rôle IAM.
Pour créer un rôle IAM, consultez Create an IAM role for AWS Glue.
Le rôle IAM qu’AWS Glue endosse pour accéder au catalogue de données doit être autorisé à chiffrer et à déchiffrer des métadonnées dans le catalogue de données. Vous pouvez créer un rôle IAM et y attacher les politiques en ligne suivantes :
-
Ajoutez la politique suivante pour inclure les autorisations AWS KMS permettant de chiffrer et de déchiffrer le catalogue de données.
JSON
- JSON
-
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:Decrypt",
"kms:Encrypt",
"kms:GenerateDataKey"
],
"Resource": "arn:aws:kms:us-east-1:111122223333:key/<key-id>"
}
]
}
-
Ensuite, ajoutez la politique d’approbation suivante au rôle afin que le service AWS Glue endosse le rôle IAM.
JSON
- JSON
-
{
"Version":"2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "glue.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
-
Ajoutez ensuite l’autorisation iam:PassRole au rôle IAM.
JSON
- JSON
-
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:PassRole"
],
"Resource": [
"arn:aws:iam::111122223333:role/<encryption-role-name>"
]
}
]
}
Lorsque vous activez le chiffrement, si vous n’avez pas spécifié de rôle IAM qu’AWS Glue endossera, le principal accédant au catalogue de données doit être autorisé à effectuer les opérations d’API suivantes :
-
kms:Decrypt
-
kms:Encrypt
-
kms:GenerateDataKey
- AWS CLI
-
Pour activer le chiffrement à l’aide du kit SDK ou de l’AWS CLI
-
Utilisez l’opération d’API PutDataCatalogEncryptionSettings. Si aucune clé n’est spécifiée, AWS Glue utilise une clé de chiffrement gérée par AWS pour le compte client afin de chiffrer le catalogue de données.
aws glue put-data-catalog-encryption-settings \
--data-catalog-encryption-settings '{
"EncryptionAtRest": {
"CatalogEncryptionMode": "SSE-KMS-WITH-SERVICE-ROLE",
"SseAwsKmsKeyId": "arn:aws:kms:<region>:<account-id>:key/<key-id>",
"CatalogEncryptionServiceRole":"arn:aws:iam::<account-id>:role/<encryption-role-name>"
}
}'
Une fois le chiffrement activé, tous les objets que vous créez dans les objets du catalogue de données sont chiffrés. Si vous désactivez ce paramètre, les objets que vous créez dans le catalogue de données ne sont plus chiffrés. Vous pouvez continuer à accéder aux objets chiffrés existants dans le catalogue de données avec les autorisations KMS requises.
La clé AWS KMS doit rester disponible dans le magasin de clés AWS KMS pour tous les objets qui sont chiffrés avec elle dans le catalogue de données. Si vous supprimez la clé, les objets ne peuvent plus être déchiffrés. Dans certains scénarios, vous pouvez opter pour cette solution pour empêcher l’accès aux métadonnées du catalogue de données.
|
Surveillance de vos clés KMS pour AWS Glue
Lorsque vous utilisez des clés KMS avec vos ressources du catalogue de données, vous pouvez utiliser AWS CloudTrail ou Amazon CloudWatch Logs pour suivre les demandes envoyées par AWS Glue à AWS KMS. AWS CloudTrail surveille et enregistre les opérations KMS qu’AWS Glue appelle pour accéder à des données chiffrées par vos clés KMS.
Voici des exemples d’événements AWS CloudTrail pour les opérations Decrypt et GenerateDataKey.
- Decrypt
-
{
"eventVersion": "1.08",
"userIdentity": {
"type": "AssumedRole",
"principalId": "AROAXPHTESTANDEXAMPLE:Sampleuser01",
"arn": "arn:aws:sts::111122223333:assumed-role/Admin/Sampleuser01",
"accountId": "111122223333",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"sessionContext": {
"sessionIssuer": {
"type": "Role",
"principalId": "AROAXPHTESTANDEXAMPLE",
"arn": "arn:aws:iam::111122223333:role/Admin",
"accountId": "111122223333",
"userName": "Admin"
},
"webIdFederationData": {},
"attributes": {
"creationDate": "2024-01-10T14:33:56Z",
"mfaAuthenticated": "false"
}
},
"invokedBy": "glue.amazonaws.com"
},
"eventTime": "2024-01-10T15:18:11Z",
"eventSource": "kms.amazonaws.com",
"eventName": "Decrypt",
"awsRegion": "eu-west-2",
"sourceIPAddress": "glue.amazonaws.com",
"userAgent": "glue.amazonaws.com",
"requestParameters": {
"encryptionContext": {
"glue_catalog_id": "111122223333"
},
"encryptionAlgorithm": "SYMMETRIC_DEFAULT"
},
"responseElements": null,
"requestID": "43b019aa-34b8-4798-9b98-ee968b2d63df",
"eventID": "d7614763-d3fe-4f84-a1e1-3ca4d2a5bbd5",
"readOnly": true,
"resources": [
{
"accountId": "111122223333",
"type": "AWS::KMS::Key",
"ARN": "arn:aws:kms:<region>:111122223333:key/<key-id>"
}
],
"eventType": "AwsApiCall",
"managementEvent": true,
"recipientAccountId": "111122223333",
"eventCategory": "Management",
"sessionCredentialFromConsole": "true"
}
- GenerateDataKey
-
{
"eventVersion": "1.08",
"userIdentity": {
"type": "AssumedRole",
"principalId": "AROAXPHTESTANDEXAMPLE:V_00_GLUE_KMS_GENERATE_DATA_KEY_111122223333",
"arn": "arn:aws:sts::111122223333:assumed-role/Admin/V_00_GLUE_KMS_GENERATE_DATA_KEY_111122223333",
"accountId": "111122223333",
"accessKeyId": "AKIAIOSFODNN7EXAMPLE",
"sessionContext": {
"sessionIssuer": {
"type": "Role",
"principalId": "AROAXPHTESTANDEXAMPLE",
"arn": "arn:aws:iam::111122223333:role/Admin",
"accountId": "AKIAIOSFODNN7EXAMPLE",
"userName": "Admin"
},
"webIdFederationData": {},
"attributes": {
"creationDate": "2024-01-05T21:15:47Z",
"mfaAuthenticated": "false"
}
},
"invokedBy": "glue.amazonaws.com"
},
"eventTime": "2024-01-05T21:15:47Z",
"eventSource": "kms.amazonaws.com",
"eventName": "GenerateDataKey",
"awsRegion": "eu-west-2",
"sourceIPAddress": "glue.amazonaws.com",
"userAgent": "glue.amazonaws.com",
"requestParameters": {
"keyId": "arn:aws:kms:eu-west-2:AKIAIOSFODNN7EXAMPLE:key/AKIAIOSFODNN7EXAMPLE",
"encryptionContext": {
"glue_catalog_id": "111122223333"
},
"keySpec": "AES_256"
},
"responseElements": null,
"requestID": "64d1783a-4b62-44ba-b0ab-388b50188070",
"eventID": "1c73689b-2ef2-443b-aed7-8c126585ca5e",
"readOnly": true,
"resources": [
{
"accountId": "111122223333",
"type": "AWS::KMS::Key",
"ARN": "arn:aws:kms:eu-west-2:111122223333:key/AKIAIOSFODNN7EXAMPLE"
}
],
"eventType": "AwsApiCall",
"managementEvent": true,
"recipientAccountId": "111122223333",
"eventCategory": "Management"
}