Como criptografar seu Data Catalog - AWS Glue

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Como criptografar seu Data Catalog

A criptografia do AWS Glue Data Catalog fornece segurança aprimorada para seus dados confidenciais. O AWS Glue se integra ao AWS Key Management Service (AWS KMS) para criptografar metadados armazenados no Catálogo de Dados. Você pode habilitar ou desabilitar as configurações de criptografia para recursos no Catálogo de Dados usando o console do AWS Glue ou a AWS CLI.

Quando você habilita a criptografia para seu Catálogo de Dados, todos os novos objetos que você criar serão criptografados. Quando você desabilita a criptografia, os novos objetos criados não serão criptografados, mas os objetos criptografados existentes permanecerão criptografados.

Você pode criptografar todo o seu Catálogo de Dados usando chaves de criptografia gerenciadas pela AWS ou chaves de criptografia gerenciadas pelo cliente. Para obter mais informações sobre os principais tipos e estados, consulte Conceitos do AWS Key Management Service no Guia do desenvolvedor do AWS Key Management Service.

Chaves gerenciadas pela AWS

Chaves gerenciadas pelo AWS são chaves do KMS em sua conta que são criadas, gerenciadas e usadas em seu nome por um serviço da AWS integrado ao AWS KMS. É possível visualizar as chaves gerenciadas pela AWS na conta, visualize suas políticas de chaves e audite seu uso nos logs do AWS CloudTrail. No entanto, não é possível gerenciar essas chaves nem alterar suas permissões.

A criptografia em repouso se integra automaticamente com o AWS KMS para gerenciar as chaves gerenciadas pela AWS para o AWS Glue que são usadas para criptografar seus metadados. Se uma chave gerenciada pela AWS não existir quando a criptografia de metadados for habilitada, o AWS KMS criará automaticamente uma nova chave para você.

Para obter mais informações, consulte Chaves gerenciadas pela AWS.

Chaves gerenciadas pelo cliente

Chaves gerenciadas pelo cliente são chaves do KMS em sua Conta da AWS que você cria, detém e gerencia. Você tem controle total sobre essas chaves KMS. É possível:

  • Estabelecer e manter suas políticas de chaves, políticas do IAM e concessões

  • Habilitá-las e desabilitá-las

  • Alternar o material criptográfico

  • Adicionar tags

  • Criar aliases que se referem a elas

  • Agendá-las para exclusão

Para obter mais informações sobre como gerenciar as permissões de uma chave gerenciada pelo cliente, consulte Chaves gerenciadas pelo cliente.

Importante

O AWS Glue oferece suporte somente a chaves gerenciadas pelo cliente simétricas. A lista de chaves do KMS exibe apenas chaves simétricas. No entanto, se você selecionar Escolher um ARN de chave do KMS, o console permitirá que você insira um ARN para qualquer tipo de chave. Certifique-se de inserir apenas ARNs para chaves simétricas.

Para criar uma chave simétrica gerenciada pelo cliente, siga as etapas para criar chaves gerenciadas pelo cliente simétricas e o Guia do desenvolvedor do AWS Key Management Service.

Quando você habilita a criptografia do Catálogo de Dados em repouso, os seguintes tipos de recursos são criptografados usando chaves do KMS:

  • Bancos de dados

  • Tabelas

  • Partições

  • Versões de tabela

  • Estatísticas de colunas

  • Funções definidas pelo usuário

  • Visualizações do Catálogo de Dados

Contexto de criptografia do AWS Glue

Um contexto de criptografia é um conjunto opcional de pares de chave-valor que pode conter mais informações contextuais sobre os dados. O AWS KMS usa o contexto de criptografia como dados autenticados adicionais para comportar criptografia autenticada. Quando você inclui um contexto de criptografia em uma solicitação para criptografar dados, o AWS KMS vincula de forma criptográfica o contexto de criptografia aos dados criptografados. Para descriptografar dados, é necessário incluir o mesmo contexto de criptografia na solicitação. O AWS Glue usa o mesmo contexto de criptografia em todas as operações criptográficas do AWS KMS, onde a chave é glue_catalog_id e o valor é catalogId.

"encryptionContext": { "glue_catalog_id": "111122223333" }

Ao usar uma chave gerenciada pela AWS ou uma chave simétrica gerenciada pelo cliente para criptografar seu Catálogo de Dados, você também pode utilizar o contexto de criptografia em registros de auditoria e logs para identificar como a chave está sendo utilizada. O contexto de criptografia também aparece nos logs gerados pelo AWS CloudTrail ou logs do Amazon CloudWatch.

Habilitar a criptografia

Você pode habilitar a criptografia para seus objetos do AWS Glue Data Catalog nas Configurações do Catálogo de Dados no console do AWS Glue ou usando a AWS CLI.

Console
Para habilitar a criptografia usando o console
  1. Faça logon no AWS Management Console e abra o console do AWS Glue em https://console.aws.amazon.com/glue/.

  2. Escolha Catálogo de Dados no painel de navegação.

  3. Na página Configurações do Catálogo de Dados, marque a caixa de seleção Criptografia de metadados e escolha uma chave do AWS KMS.

    Quando você habilita a criptografia, se você não especificar uma chave gerenciada pelo cliente, as configurações de criptografia usarão uma chave do KMS gerenciada pela AWS.

  4. (Opcional) Quando você usa uma chave gerenciada pelo cliente para criptografar seu Catálogo de Dados, o Catálogo de Dados oferece a opção de registrar um perfil do IAM para criptografar e descriptografar recursos. É necessário conceder ao seu perfil do IAM permissões que o AWS Glue pode assumir em seu nome. Isso inclui permissões do AWS KMS para criptografar e descriptografar dados.

    Quando você cria um novo recurso no Catálogo de Dados, o AWS Glue assume o perfil do IAM fornecido para criptografar os dados. Da mesma forma, quando um consumidor acessa o recurso, o AWS Glue assume o perfil do IAM para descriptografar dados. Se você registrar um perfil do IAM com as permissões necessárias, o responsável pela chamada não precisará mais de permissões para acessar a chave e descriptografar os dados.

    Importante

    É possível delegar operações do KMS a um perfil do IAM somente quando uma chave gerenciada pelo cliente for usada para criptografar os recursos do Catálogo de Dados. No momento, o recurso de delegação de perfil do KMS não oferece suporte ao uso de chaves gerenciadas pela AWS para criptografar recursos do Catálogo de Dados.

    Atenção

    Ao habilitar um perfil do IAM para delegar operações do KMS, você não pode mais acessar os recursos do catálogo de dados que foram criptografados anteriormente com uma chave gerenciada pela AWS.

    1. Para habilitar um perfil do IAM que AWS Glue pode assumir para criptografar e descriptografar dados em seu nome, selecione a opção Delegar operações do KMS para um perfil do IAM.

    2. Em seguida, escolha um perfil do IAM.

      Para criar um perfil do IAM, consulte Criar um perfil do IAM para o AWS Glue.

      O perfil do IAM que o AWS Glue assume para acessar o Catálogo de Dados deve ter as permissões para criptografar e descriptografar metadados no Catálogo de Dados. Você pode criar um perfil do IAM e anexar as políticas em linha a seguir:

      • Adicione a política a seguir para incluir permissões do AWS KMS para criptografar e descriptografar o Catálogo de Dados.

        { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:<region>:<account-id>:key/<key-id>" } ] }
      • Em seguida, adicione a política de confiança a seguir ao perfil para que o serviço AWS Glue assuma o perfil do IAM.

        { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "glue.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
      • Em seguida, adicione a permissão iam:PassRole ao perfil do IAM.

        { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::<account-id>:role/<encryption-role-name>" ] } ] }

    Ao habilitar a criptografia, se você não tiver especificado um perfil do IAM para o AWS Glue assumir, a entidade principal que acessa o Catálogo de Dados deverá ter permissões para realizar as seguintes operações de API:

    • kms:Decrypt

    • kms:Encrypt

    • kms:GenerateDataKey

AWS CLI
Para habilitar a criptografia usando o SDK ou o AWS CLI
  • Use a PutDataCatalogEncryptionSettings operação de API. Se nenhuma chave for especificada, o AWS Glue usará a chave de criptografia gerenciada pela AWS para a conta do cliente para criptografar o Catálogo de Dados.

    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>" } }'

Quando você habilitar a criptografia, todos os objetos que você criar no Catálogo de Dados serão criptografados. Se você desmarcar essa configuração, os objetos que você criar no Catálogo de Dados não serão mais criptografados. Você pode continuar acessando os objetos criptografados existentes no Catálogo de Dados com as permissões do KMS necessárias.

Importante

A chave do AWS KMS deve permanecer disponível no armazenamento de chaves do AWS KMS para todos os objetos que são criptografados com ela no Data Catalog. Se você remover a chave, os objetos não poderão mais ser descriptografados. Isso pode ser desejável em alguns cenários para impedir o acesso aos metadados do Data Catalog.

Monitorar suas chaves do KMS para o AWS Glue

Ao usar chaves do KMS com os recursos do Catálogo de Dados, você pode usar o AWS CloudTrail ou os Logs do Amazon CloudWatch para rastrear solicitações enviadas pelo AWS Glue para o AWS KMS. O AWS CloudTrail monitora e registra as operações do KMS chamadas pelo AWS Glue para acessar dados criptografados por suas chaves do KMS.

Os exemplos a seguir são eventos do AWS CloudTrail para as operações Decrypt e 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" }