Pular para o conteúdo principal

Configurar a criptografia para o S3 com o KMS

Este artigo aborda como configurar a criptografia no lado do servidor com um KMS key para gravar arquivos em caminhos s3a:// usando Unity Catalog ou um instance profile (configuração herdada). Para criptografar seu bucket de armazenamento workspace, consulte Chave de gerenciar o cliente para o armazenamento workspace.

Configurar a criptografia para o S3 usando o Unity Catalog

O senhor pode configurar a criptografia no lado do servidor para permitir que tabelas e volumes externos no Unity Catalog acessem dados no S3. A criptografia SSE não é compatível com tabelas externas compartilhadas usando o Delta Sharing.

Etapa 1: Atualize sua política KMS key em AWS

Para proteger os dados em S3, AWS suporta criptografia do lado do servidor (SSE) com Amazon S3 chave gerenciar (SSE-S3) ou AWS KMS chave (SSE-KMS). Se o senhor usar um AWS S3 gerenciar key, pule para a etapa 2.

  1. No AWS, acesse o serviço KMS.

  2. Clique no endereço key ao qual o senhor deseja adicionar permissão.

  3. Na seção key Policy , selecione Switch to policy view .

  4. Edite a seção da política key que permite que o S3 use o key, por exemplo:

    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. Clique em Salvar alterações .

Etapa 2: Configurar o acesso ao S3 usando o Unity Catalog

  1. Crie uma credencial de armazenamento para se conectar ao S3, usando as instruções em Criar uma credencial de armazenamento para se conectar ao AWS S3.

    Certifique-se de criar a política IAM no mesmo account que o bucket S3. Se você estiver usando o SSE-KMS, inclua o seguinte na política:

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

    Consulte a Etapa 1: Criar um IAM role.

  2. Crie um local externo para se conectar ao S3, usando as instruções em Criar um local externo para conectar o armazenamento em nuvem à Databricks.

  3. Configure a criptografia do lado do servidor em seu local externo, usando as instruções em Configurar um algoritmo de criptografia em um local externo.

Configurar a criptografia para S3 usando o perfil de instância (legado)

O senhor pode configurar a criptografia para S3 com KMS usando o perfil de instância. No entanto, como esse é um padrão herdado, a Databricks recomenda o uso do Unity Catalog para configurar o acesso ao S3 e aos volumes para interação direta com os arquivos. Consulte Conectar-se ao serviço e armazenamento de objetos na nuvem usando Unity Catalog.

Etapa 1: Configurar um instance profile

Em Databricks, crie um arquivo instance profile.

Etapa 2: Adicione o instance profile como um usuário key para o KMS key fornecido na configuração

  1. No AWS, acesse o serviço KMS.
  2. Clique no site key ao qual o senhor deseja adicionar permissão.
  3. Na seção Key Users (Usuários-chave), clique em Add (Adicionar ).
  4. Marque a caixa de seleção ao lado de IAM role.
  5. Clique em Adicionar .

Etapa 3: configurar propriedades de criptografia

Defina as propriedades globais de criptografia do KMS em uma configuraçãoSpark ou em um init script. Configure o spark.hadoop.fs.s3a.server-side-encryption.key key com seu próprio key ARN.

Add the following to your Spark configuration:

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

You can also configure per-bucket KMS encryption. For example, you can configure each bucket individually using the following keys:

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>

For more information, see Per-bucket configuration.