Partilhar via


Provedores de chave externa em clusters de Big Data do SQL Server

Importante

O complemento Clusters de Big Data do Microsoft SQL Server 2019 será desativado. O suporte para Clusters de Big Data do SQL Server 2019 será encerrado em 28 de fevereiro de 2025. Todos os usuários existentes do SQL Server 2019 com Software Assurance terão suporte total na plataforma e o software continuará a ser mantido por meio de atualizações cumulativas do SQL Server até esse momento. Para obter mais informações, confira a postagem no blog de anúncio e as opções de Big Data na plataforma do Microsoft SQL Server.

Este artigo fornece detalhes sobre como configurar provedores de chaves externas em Clusters de Big Data do SQL Server para gerenciamento de chaves.

Para saber mais sobre como as principais versões são usadas em Clusters de Big Data do SQL Server, consulte: Versões principais em clusters de Big Data do SQL Server.

Para obter informações sobre como configurar e usar a criptografia em repouso, consulte os seguintes guias:

Pré-requisitos

Criptografia de chave raiz usando provedores externos

Com a capacidade de trazer chaves externas em Clusters de Big Data do SQL Server, a chave de criptografia principal busca a chave pública usando o aplicativo que o cliente implanta. Quando as chaves HDFS são giradas e usadas, as chamadas para descriptografar as chaves HDFS são enviadas para o plano de controle e redirecionadas para o aplicativo usando o identificador de chave fornecido pelo cliente. Por SQL Server, as solicitações para criptografar são enviadas e atendidas pelo painel de controle, pois ele contém a chave pública. As solicitações para descriptografar a DEK (Chave de Criptografia de Dados) do SQL Server também são enviadas para o plano de controle e, em seguida, são redirecionadas para o aplicativo que faz interface com o provedor externo, como um HSM (Módulo de Segurança de Hardware).

O diagrama representa a situação após a instalação da Chave do Cliente.

O seguinte diagrama explica as interações ao configurar chaves externas no painel de controle:

O diagrama explica as interações ao configurar chaves externas no plano de controle.

Depois que a chave é instalada, a criptografia e a descriptografia de diferentes cargas são protegidas pela chave de criptografia principal. Essa proteção é semelhante às chaves gerenciadas pelo sistema, exceto que as chamadas de descriptografia roteadas para o plano de controle são roteadas para o aplicativo de plug-in KMS (serviço de gerenciamento de chaves). O aplicativo plug-in KMS roteia a solicitação para o local apropriado, como um HSM, Hashicorp Vault ou outro produto.

Configuração

O aplicativo de modelo fornecido é o plug-in usado para se conectar com o provedor de chaves externo. Esse aplicativo precisa ser personalizado e implantado em Clusters de Big Data para servir como um ponto de integração com o provedor de chaves externo escolhido.

No aplicativo de modelo, há exemplos de como integrar com implementações de provedor externo usando o protocolo PKCS11 padrão usando o SoftHSM. Também há exemplos usando o Azure Key Vault e o Hashicorp Vault. Os aplicativos modelo são oferecidos as-is como implementações de referência.

As seções a seguir fornecem as etapas necessárias para configurar um provedor de chaves externas para servir como a chave raiz de criptografia para bancos de dados do SQL Server e zonas de criptografia HDFS.

Criar uma chave RSA 2048 em seu provedor de chave externa

Crie um arquivo PEM com uma chave RSA de 2048 bits e carregue-o no repositório de valores de chave em seu provedor de chaves externo.

Por exemplo, o arquivo de chave pode ser adicionado ao repositório KV no Hashicorp Vault no caminho bdc-encryption-secret e o nome do segredo pode ser rsa2048.

Personalizar e implantar o aplicativo de integração em clusters de Big Data

  1. No computador local, navegue até a pasta que contém kms_plugin_app, os modelos de aplicativos AppDeploy para Clusters de Big Data.

  2. Personalize o aplicativo escolhendo um dos modelos e ajustando-o ao seu cenário:

    • O custom_softhsm.py de arquivo contém uma implementação de referência usando o SoftHSM
    • O custom_akv.py de arquivo contém um exemplo do Azure Key Vault
    • O custom_hcv.py de arquivo contém um exemplo do HashiCorp Vault

    Cuidado

    Não altere os contratos de função ou assinaturas, que são os pontos de integração. Altere apenas as implementações de função, se necessário.

  3. Nomeie o arquivo que você está criando do modelo acima adequadamente. Por exemplo, salve custom_softhsm.py como my_custom_integration_v1.py e execute suas personalizações. Essa abordagem é importante para a próxima etapa.

  4. app.py é o ponto de entrada que carregará o aplicativo. Neste arquivo, você precisa alterar a linha 11 para apontar para o nome do arquivo personalizado sem a extensão .py da etapa anterior. De acordo com o exemplo acima, altere:

    ...
    import utils
    from json_objects import EncryptDecryptRequest
    import custom_softhsm as custom
    
    def handler(operation, payload, pin, key_attributes, version):
    ...
    

    para o seguinte valor:

    ...
    import utils
    from json_objects import EncryptDecryptRequest
    import my_custom_integration_v1 as custom
    
    def handler(operation, payload, pin, key_attributes, version):
    ...
    
  5. Na pasta que tem o spec.yaml, implante o aplicativo em Clusters de Big Data usando este comando:

    azdata app create -s
    
  6. Aguarde a conclusão da implantação do aplicativo e o status pronto pode ser verificado usando este comando:

    azdata app list
    

Configurar clusters de Big Data para usar o provedor de chave externa

  1. Defina a AZDATA_EXTERNAL_KEY_PIN variável de ambiente para fornecer o token que permite o acesso ao provedor de chave externa:

    export AZDATA_EXTERNAL_KEY_PIN=<your PIN/token here>
    

    Observação

    O processo de implantação do aplicativo de integração usa o token para acessar seu provedor de chaves externo. No entanto, a AZDATA_EXTERNAL_KEY_PIN variável é salva criptografada no plano de controle dos clusters de Big Data para que possa ser interpretada pelo aplicativo. Um mecanismo de autenticação diferente também pode ser usado, mas o aplicativo precisa ser alterado. Verifique o aplicativo Python custom*.py para conferir a lógica completa de integração que está sendo usada.

  2. Configure a chave em Clusters de Big Data usando a estrutura de comando a seguir azdata . Altere os parâmetros necessários para sua implementação específica. O exemplo a seguir usa uma estrutura do HashiCorp Vault, conforme fornecido pelo custom2.py.

    azdata bdc kms update --app-name <YOUR-APP-NAME> --app-version <YOUR-APP-VERSION> \
    --key-attributes keypath=<YOUR-KEY-PATH>,vaulturl=http://<YOUR-IP>:<YOUR-PORT>,keyname=<YOUR-KEY-NAME> \
    --provider External
    

    O valor do parâmetro --provider External configura o KMS de Clusters de Big Data para usar o aplicativo de integração como endpoint para operações de chaves criptográficas.

  3. Verifique a chave de criptografia raiz como a gerenciada externamente usando o comando a seguir.

    azdata bdc kms show
    

Criptografar seus bancos de dados e zonas de criptografia com as novas chaves

Após a configuração, os bancos de dados do SQL Server e as zonas de criptografia DO HDFS ainda são criptografados pela hierarquia de chaves anterior. Você precisa criptografar explicitamente usando as chaves gerenciadas externamente.

No SQL Server, uma nova chave assimétrica com base na chave gerenciada externamente é instalada. Use isso para criptografar seus bancos de dados.

A chave assimétrica pode ser vista usando a consulta T-SQL a seguir, com a exibição do catálogo do sistema sys.asymmetric_keys.

USE master;
select * from sys.asymmetric_keys;

A chave assimétrica aparece com a convenção de nomenclatura tde_asymmetric_key_<version>. O administrador do SQL Server pode alterar o protetor da DEK para a chave assimétrica usando ALTER DATABASE ENCRYPTION KEY. Por exemplo, use o seguinte comando T-SQL:

USE db1;
ALTER DATABASE ENCRYPTION KEY ENCRYPTION BY SERVER ASYMMETRIC KEY tde_asymmetric_key_0;
  1. Execute o seguinte comando para verificar a chave de criptografia atual:

    azdata bdc hdfs key describe
    
  2. Obtenha informações sobre a versão da chave que protege a chave da zona de criptografia:

    azdata bdc hdfs key describe --name <key name>
    
  3. Role sua chave para a nova chave gerenciada externa:

    azdata bdc hdfs key roll --name <new key name>
    
  4. Inicie a criptografia usando este comando:

    azdata bdc hdfs encryption-zone reencrypt –-path <your EZ path> --action start
    
  5. Verifique a hierarquia de chaves usando os seguintes comandos:

    azdata bdc kms show
    azdata bdc hdfs key describe
    

Próximas etapas