Aller au contenu principal

Configurer le chiffrement pour S3 avec KMS

Cette page explique comment configurer le chiffrement côté serveur avec une clé KMS pour l'écriture de fichiers dans les chemins d'accès s3a:// à l'aide d'Unity Catalog ou d'un profil d'instance (configuration héritée). Pour chiffrer votre compartiment de stockage de Workspace, consultez Clés gérées par le client pour le stockage du Workspace.

Configurer le chiffrement pour S3 à l'aide de Unity Catalog

AWS prend en charge les politiques de compartiment S3 qui exigent que les en-têtes de chiffrement soient définis par le client. Si votre compartiment S3 nécessite des en-têtes de chiffrement sur les requêtes, vous devez configurer un algorithme de chiffrement sur l'emplacement externe dans Unity Catalog. Ce paramètre configure l'en-tête correct lors de l'accès aux données dans votre compartiment S3. Le chiffrement SSE n'est pas pris en charge avec les tables externes partagées à l'aide d'OpenSharing.

Étape 1 : Mettre à jour votre politique de clé KMS dans AWS

Pour protéger les données dans S3, AWS prend en charge le chiffrement côté serveur (SSE) avec les clés gérées Amazon S3 (SSE-S3) ou les clés AWS KMS (SSE-KMS). Si vous utilisez une clé gérée AWS S3, passez à l'étape 2.

  1. Dans AWS, rendez-vous au service KMS.

  2. Cliquez sur la clé à laquelle vous voulez ajouter une autorisation.

  3. Dans la section Stratégie de clé , sélectionnez Passer à la vue de la stratégie .

  4. Modifiez la section de politique de clé qui permet à S3 d'utiliser la clé, par exemple :

    JSON
    {
    "Sid": "Allow access through S3 for all principals in the account that are authorized to use S3",
    "Effect": "Allow",
    "Principal": {
    "AWS": "*"
    },
    "Action": [
    "kms:Encrypt",
    "kms:Decrypt",
    "kms:ReEncrypt*",
    "kms:GenerateDataKey*",
    "kms:DescribeKey"
    ],
    "Resource": "*",
    "Condition": {
    "StringEquals": {
    "kms:CallerAccount": "<AWS ACCOUNT ID>",
    "kms:ViaService": "s3.<REGION>.amazonaws.com"
    }
    }
    },
  5. Cliquez sur Enregistrer les modifications .

Étape 2 : Configurer l’accès à S3 à l’aide d’Unity Catalog

  1. Créez un identifiant de stockage pour vous connecter à S3, en utilisant les instructions de Créer un identifiant de stockage qui accède à un compartiment AWS S3.

    Assurez-vous de créer la stratégie IAM dans le même compte que le compartiment S3. Si vous utilisez SSE-KMS, incluez les éléments suivants dans la stratégie :

    JSON
      {
    "Action": [
    "kms:Decrypt",
    "kms:Encrypt",
    "kms:GenerateDataKey*"
    ],
    "Resource": [
    "arn:aws:kms:<KMS-KEY>"
    ],
    "Effect": "Allow"
    },

    Voir Étape 1 : Créer un rôle IAM.

  2. Créer un emplacement externe pour se connecter à S3 à l'aide de Catalog Explorer ou de SQL.

  3. Configurez le chiffrement côté serveur sur votre emplacement externe, en suivant les instructions de Configuration d'un algorithme de chiffrement sur un emplacement externe (AWS S3 uniquement).

Configurez le chiffrement pour S3 à l'aide de profils d'instance (hérité)

Vous pouvez configurer le chiffrement pour S3 avec KMS à l'aide de profils d'instance. Cependant, comme il s'agit d'un modèle hérité, Databricks recommande d'utiliser Unity Catalog pour configurer l'accès à S3 et aux volumes pour une interaction directe avec les fichiers. Consultez Connectez-vous au stockage d'objets cloud à l'aide de Unity Catalog.

Étape 1 : configurer un profil d’instance

Dans Databricks, créez un profil d'instance.

Étape 2 : Ajoutez le profil d'instance en tant qu'utilisateur clé pour la clé KMS fournie dans la configuration

  1. Dans AWS, rendez-vous au service KMS.
  2. Cliquez sur la clé à laquelle vous souhaitez ajouter une permission.
  3. Dans la section Utilisateurs clés, cliquez sur Ajouter .
  4. Sélectionnez la case à cocher à côté du rôle IAM.
  5. Cliquez sur **Ajouter**.

Étape 3 : configurez les propriétés de chiffrement

Configurez les propriétés de chiffrement KMS globales dans une configuration Spark ou un script init. Configurez la clé spark.hadoop.fs.s3a.server-side-encryption.key avec votre propre ARN de clé.

Ajoutez les éléments suivants à votre configuration Spark :

ini
spark.hadoop.fs.s3a.server-side-encryption.key arn:aws:kms:<region>:<aws-account-id>:key/<bbbbbbbb-ddd-ffff-aaa-bdddddddddd>
spark.hadoop.fs.s3a.server-side-encryption-algorithm SSE-KMS

Vous pouvez également configurer le chiffrement KMS par compartiment. Par exemple, vous pouvez configurer chaque compartiment individuellement à l'aide des clés suivantes :

ini
# Set up authentication and endpoint for a specific bucket
spark.hadoop.fs.s3a.bucket.<bucket-name>.aws.credentials.provider <aws-credentials-provider-class>
spark.hadoop.fs.s3a.bucket.<bucket-name>.endpoint <aws-endpoint>

# Configure a different KMS encryption key for a specific bucket
spark.hadoop.fs.s3a.bucket.<bucket-name>.server-side-encryption.key <aws-kms-encryption-key>

Pour plus d'informations, consultez Configuration par compartiment.