Provedores de chaves externas 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, confira: Versões principais em Clusters de Big Data do SQL Server.
Para obter informações sobre como configurar e usar a criptografia em repouso, confira os seguintes guias:
- Guia de configuração e conceitos de criptografia em repouso
- Guia de uso de zonas de criptografia do HDFS nos Clusters de Big Data do SQL Server
- Guia de uso da TDE (Transparent Data Encryption) em repouso dos Clusters de Big Data do SQL Server
Pré-requisitos
- Notas sobre a versão de Clusters de Big Data do SQL Server 2019. A versão CU11+ é requerida.
- Ferramentas de Big Data, incluindo o azdata 20.3.5+.
- Usuário de Clusters de Big Data do SQL Server com privilégios administrativos do Kubernetes, um membro da função clusterAdmins. Para obter mais informações, confira Gerenciar o acesso ao cluster de Big Data no modo de Active Directory.
- Aplicativo de modelo de provedor externo. Confira Criptografia BDC em repouso do SQL Server.
Criptografia de chave raiz usando provedores externos
Com a capacidade de trazer chaves externas para Clusters de Big Data do SQL Server, a chave de criptografia principal busca a chave pública usando o aplicativo implantado pelo cliente. Quando as chaves do HDFS são giradas e usadas, as chamadas para descriptografar as chaves do HDFS são enviadas para o painel 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 painel de controle e redirecionadas para o aplicativo compatível com o provedor externo, como um HSM (módulo de segurança de hardware).
O seguinte diagrama explica as interações ao configurar chaves externas no painel de controle:
Depois que a chave é instalada, a criptografia e a descriptografia de conteúdos diferentes são protegidas pela chave de criptografia principal. Essa proteção é semelhante às chaves gerenciadas pelo sistema, exceto pelo fato de que as chamadas de descriptografia roteadas para o painel de controle são então roteadas para o aplicativo de plug-in KMS (Serviço de Gerenciamento de Chaves). O aplicativo de plug-in KMS roteia a solicitação para a localização apropriada, como um HSM, Hashicorp Vault ou outro produto.
Configuração
O aplicativo de modelo fornecido é o plug-in usado para obter compatibilidade com o provedor de chaves externas. Esse aplicativo precisa ser personalizado e implantado no Clusters de Big Data para servir como um ponto de integração com o provedor de chaves externas escolhido.
No aplicativo de modelo, há exemplos de como integrar com implementações de provedor externo usando o protocolo PKCS11 padrão com o SoftHSM. Também há exemplos usando Azure Key Vault e o Hashicorp Vault. Os aplicativos de modelo são fornecidos no estado em que se encontram, como uma implementação 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 da criptografia para bancos de dados do SQL Server e zonas de criptografia do HDFS.
Criar uma chave RSA 2048 em seu provedor de chaves externas
Crie um arquivo PEM com a chave RSA de 2048 bits e carregue-o no armazenamento de valores de chave em seu provedor de chaves externas.
Por exemplo, o arquivo de chave pode ser adicionado ao armazenamento do cofre de chaves no Hashicorp Vault no caminho bdc-encryption-secret e o nome do segredo pode ser rsa2048.
Personalizar e implantar o aplicativo de integração no Clusters de Big Data
No computador local, navegue até a pasta que contém kms_plugin_app, os aplicativos de modelo AppDeploy dos Clusters de Big Data.
Personalize o aplicativo escolhendo um dos modelos e ajustando-o para seu cenário:
- O arquivo custom_softhsm.py contém uma implementação de referência usando SoftHSM
- O arquivo custom_akv.py contém um exemplo do Azure Key Vault
- O arquivo custom_hcv.py contém um exemplo de HashiCorp Vault
Cuidado
Não altere as assinaturas nem os contratos de função, que são os pontos de integração. Altere somente as implementações de função, se necessário.
Nomeie o arquivo que você está criando a partir do modelo acima. 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.
app.py é o ponto de entrada que carregará o aplicativo. Nesse arquivo, é necessário alterar a linha 11 para apontar para o nome de 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): ...
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): ...
Na pasta que tem o spec.yaml, implante o aplicativo para Clusters de Big Data usando este comando:
azdata app create -s
Aguarde a conclusão da implantação do aplicativo. O status Pronto pode ser verificado usando este comando:
azdata app list
Configurar Clusters de Big Data para usar o provedor de chave externa
Defina a variável de ambiente
AZDATA_EXTERNAL_KEY_PIN
para fornecer o token que permite o acesso ao provedor de chaves externas: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 chave externa. No entanto, a variável
AZDATA_EXTERNAL_KEY_PIN
é salva criptografada no painel 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 ver a lógica de integração completa que está sendo usada.Configure a chave em Clusters de Big Data usando a estrutura de comando
azdata
a seguir. Altere os parâmetros necessários para sua implementação específica. O exemplo a seguir usa uma estrutura do HashiCorp Vault, conforme fornecido por 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 Clusters de Big Data KMS para usar o aplicativo de integração como ponto de extremidade em operações de chave.Verifique a chave de criptografia raiz como aquela 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, bancos de dados do SQL Server e zonas de criptografia do HDFS ainda são criptografados pela hierarquia de chaves anterior. Você precisa criptografar explicitamente usando as chaves gerenciadas externamente.
Nesse SQL Server, uma nova chave assimétrica com base na chave gerenciada externamente é instalada. Use-a 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;
Execute o seguinte comando para verificar a chave de criptografia atual:
azdata bdc hdfs key describe
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>
Reverta sua chave para a nova chave gerenciada externa:
azdata bdc hdfs key roll --name <new key name>
Inicie a criptografia usando este comando:
azdata bdc hdfs encryption-zone reencrypt –-path <your EZ path> --action start
Verifique a hierarquia de chaves usando os seguintes comandos:
azdata bdc kms show azdata bdc hdfs key describe