View a markdown version of this page

Utilisation AWS KMS avec l'API Amazon Redshift Data - Amazon Redshift

Amazon Redshift ne prendra plus en charge l'utilisation des UDF Python après le 30 juin 2026. Nous allons commencer à l'appliquer par étapes. Pour plus d'informations sur les détails de la fin de vie de Python et des options de migration, consultez le billet de blog publié le 30 juin 2025.

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.

Utilisation AWS KMS avec l'API Amazon Redshift Data

Lorsque vous chiffrez votre cluster Amazon Redshift ou votre groupe de travail Redshift Serverless avec une clé gérée par le client, l'API Amazon Redshift Data utilise cette même clé gérée par le client pour stocker et chiffrer vos requêtes et vos résultats.

L'API Data chiffre vos données par défaut pour protéger les informations sensibles, telles que le texte et les résultats des requêtes. Il utilise des clés de AWS KMS chiffrement détenues par AWS pour cette protection.

Le chiffrement par défaut pour les données au repos réduit la charge opérationnelle et la complexité lorsque vous protégez des données sensibles. Cette approche vous permet de créer des applications sécurisées qui répondent à des exigences réglementaires et de conformité strictes en matière de chiffrement.

Utilisation des subventions dans AWS KMS

L'API Data nécessite une autorisation pour utiliser votre clé gérée par le client.

Lorsque vous appelez ExecuteStatement ou BatchExecuteStatement contre un cluster chiffré à l'aide d'une clé gérée par le client, Amazon Redshift crée une subvention en votre nom en envoyant une CreateGrant demande à AWS KMS. AWS KMS utilise des autorisations pour donner à l'API Data l'accès à une clé KMS de votre compte.

L'API Data nécessite l'autorisation d'utiliser votre clé gérée par le client pour les opérations suivantes :

  • Envoyez Encrypt des demandes AWS KMS à pour chiffrer les métadonnées des requêtes à l'aide de la clé gérée par votre client.

  • Envoyez GenerateDataKey des demandes AWS KMS à pour générer des clés de données chiffrées par la clé gérée par votre client.

  • Envoyez Decrypt des demandes AWS KMS à pour déchiffrer les clés de données cryptées afin qu'ils puissent crypter vos données.

Vous pouvez révoquer l'accès à l'autorisation ou supprimer l'accès Amazon Redshift à votre clé gérée par le client à tout moment. Dans ce cas, l'API Data ne peut plus accéder aux données chiffrées par la clé gérée par votre client, ce qui affecte les opérations qui dépendent de ces données. Par exemple, si vous essayez de récupérer les résultats d'une requête ou de suivre l'état d'une requête après avoir révoqué l'autorisation, l'API Data renvoie unAccessDeniedException.

Politiques clés pour votre clé gérée par le client

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 Clés gérées par le client dans le Guide du développeur AWS Key Management Service .

Pour utiliser les clés gérées par vos clients avec l'API Data, vous devez d'abord autoriser l'accès à Amazon Redshift. Les opérations d'API suivantes doivent être autorisées dans la politique clé :

  • kms:CreateGrant : ajoute une attribution à une clé gérée par le client. Les autorisations contrôlent l'accès à une AWS KMS clé spécifiée, ce qui permet d'accéder aux opérations d'autorisation requises par Amazon Redshift. Pour plus d'informations, consultez la section Utilisation des subventions dans AWS KMS.

Voici un exemple de politique clé :

"Statement":[ { "Sid":"Allow access to principals authorized to use Amazon Redshift", "Effect":"Allow", "Principal":{ "AWS":"*" }, "Action":[ "kms:DescribeKey", "kms:CreateGrant" ], "Resource":"*", "Condition":{ "StringEquals":{ "kms:ViaService":"redshift.amazonaws.com", "kms:CallerAccount":"111122223333" } } }, { "Sid":"AllowKeyAdministratorsAccess", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::111122223333:role/ExampleAdminRole" }, "Action":"kms:*", "Resource":"*" }, { "Sid":"AllowKeyUseForExampleRole", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::111122223333:role/ExampleUserRole" }, "Action":[ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource":"*" } ]

Contexte de chiffrement de l'API de données

Un contexte de chiffrement est un ensemble facultatif de paires clé-valeur qui contient des informations contextuelles supplémentaires sur les données. AWS KMS utilise le contexte de chiffrement comme 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.

L'API Data utilise les trois mêmes paires clé-valeur de contexte de chiffrement dans toutes les opérations AWS KMS cryptographiques pour les clusters provisionnés :

  • aws:redshift:arn— Le nom de ressource Amazon (ARN) du cluster

  • aws:redshift:createtime— L'horodatage auquel vous avez demandé la création du cluster

  • serviceNameRedshiftDataAPI

"EncryptionContextSubset": { "aws:redshift:arn": "arn:aws:redshift:us-east-1:123456789012:cluster:redshift-cluster", "aws:redshift:createtime": "20250815T0000Z", "serviceName": "RedshiftDataAPI", }

L'API Data utilise deux paires clé-valeur de contexte de chiffrement dans toutes les opérations AWS KMS cryptographiques pour les groupes de travail sans serveur :

  • aws:redshift-serverless:arn— Le nom de ressource Amazon (ARN) de l'espace de noms

  • serviceName— RedshiftData API

"EncryptionContextSubset": { "aws:redshift-serverless:arn": "arn:aws:redshift-serverless:us-east-1:123456789012:namespace:12345678-1234-1234-1234-123456789012", "serviceName": "RedshiftDataAPI" }

Pour plus d'informations sur le chiffrement, voir Introduction aux détails cryptographiques de AWS KMS. Pour plus d'informations sur Amazon Redshift et son AWS KMS intégration, consultez Comment Amazon Redshift l'utilise. AWS KMS