Criptografar um banco de dados com criptografia de dados transparente na Instância Gerenciada SQL habilitada pelo Azure Arc
Este artigo descreve como habilitar a criptografia de dados transparente em um banco de dados criado em uma Instância Gerenciada SQL habilitada pelo Azure Arc. Neste artigo, o termo instância gerenciada refere-se a uma implantação da Instância Gerenciada SQL habilitada pelo Azure Arc.
Pré-requisitos
Antes de prosseguir com este artigo, você deve ter uma Instância Gerenciada SQL habilitada pelo recurso Azure Arc criado e conectar-se a ela.
- Criar uma Instância Gerenciada SQL habilitada pelo Azure Arc
- Conectar-se à Instância Gerenciada SQL habilitada pelo Azure Arc
Ativar a criptografia de dados transparente em um banco de dados na instância gerenciada
A ativação da criptografia de dados transparente na instância gerenciada segue as mesmas etapas do SQL Server local. Siga as etapas descritas no guia de criptografia de dados transparente do SQL Server.
Depois de criar as credenciais necessárias, faça backup de todas as credenciais recém-criadas.
Fazer backup de uma credencial de criptografia de dados transparente
Quando você faz backup de credenciais da instância gerenciada, as credenciais são armazenadas dentro do contêiner. Para armazenar credenciais em um volume persistente, especifique o caminho de montagem no contêiner. Por exemplo, var/opt/mssql/data
. O exemplo a seguir faz backup de um certificado da instância gerenciada:
Nota
Se o comando for executado a kubectl cp
partir do Windows, o comando poderá falhar ao utilizar caminhos absolutos do Windows. Use caminhos relativos ou os comandos especificados abaixo.
Faça backup do certificado do contêiner para
/var/opt/mssql/data
.USE master; GO BACKUP CERTIFICATE <cert-name> TO FILE = '<cert-path>' WITH PRIVATE KEY ( FILE = '<private-key-path>', ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>');
Exemplo:
USE master; GO BACKUP CERTIFICATE MyServerCert TO FILE = '/var/opt/mssql/data/servercert.crt' WITH PRIVATE KEY ( FILE = '/var/opt/mssql/data/servercert.key', ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>');
Copie o certificado do contêiner para o sistema de arquivos.
kubectl exec -n <namespace> -c arc-sqlmi <pod-name> -- cat <pod-certificate-path> > <local-certificate-path>
Exemplo:
kubectl exec -n arc-ns -c arc-sqlmi sql-0 -- cat /var/opt/mssql/data/servercert.crt > $HOME\sqlcerts\servercert.crt
- Copie a chave privada do contêiner para o sistema de arquivos.
kubectl exec -n <namespace> -c arc-sqlmi <pod-name> -- cat <pod-private-key-path> > <local-private-key-path>
Exemplo:
kubectl exec -n arc-ns -c arc-sqlmi sql-0 -- cat /var/opt/mssql/data/servercert.key > $HOME\sqlcerts\servercert.key
Exclua o certificado e a chave privada do contêiner.
kubectl exec -it --namespace <namespace> --container arc-sqlmi <pod-name> -- bash -c "rm <certificate-path> <private-key-path>
Exemplo:
kubectl exec -it --namespace arc-ns --container arc-sqlmi sql-0 -- bash -c "rm /var/opt/mssql/data/servercert.crt /var/opt/mssql/data/servercert.key"
Restaurar uma credencial de criptografia de dados transparente para uma instância gerenciada
Semelhante ao acima, para restaurar as credenciais, copie-as para o contêiner e execute o T-SQL correspondente posteriormente.
Nota
Se o comando for executado a kubectl cp
partir do Windows, o comando poderá falhar ao utilizar caminhos absolutos do Windows. Use caminhos relativos ou os comandos especificados abaixo.
- Copie o certificado do sistema de arquivos para o contêiner.
type <local-certificate-path> | kubectl exec -i -n <namespace> -c arc-sqlmi <pod-name> -- tee <pod-certificate-path>
Exemplo:
type $HOME\sqlcerts\servercert.crt | kubectl exec -i -n arc-ns -c arc-sqlmi sql-0 -- tee /var/opt/mssql/data/servercert.crt
- Copie a chave privada do seu sistema de arquivos para o contêiner.
type <local-private-key-path> | kubectl exec -i -n <namespace> -c arc-sqlmi <pod-name> -- tee <pod-private-key-path>
Exemplo:
type $HOME\sqlcerts\servercert.key | kubectl exec -i -n arc-ns -c arc-sqlmi sql-0 -- tee /var/opt/mssql/data/servercert.key
Crie o certificado usando caminhos de arquivo de
/var/opt/mssql/data
.USE master; GO CREATE CERTIFICATE <certicate-name> FROM FILE = '<certificate-path>' WITH PRIVATE KEY ( FILE = '<private-key-path>', DECRYPTION BY PASSWORD = '<UseStrongPasswordHere>' );
Exemplo:
USE master; GO CREATE CERTIFICATE MyServerCertRestored FROM FILE = '/var/opt/mssql/data/servercert.crt' WITH PRIVATE KEY ( FILE = '/var/opt/mssql/data/servercert.key', DECRYPTION BY PASSWORD = '<UseStrongPasswordHere>' );
Exclua o certificado e a chave privada do contêiner.
kubectl exec -it --namespace <namespace> --container arc-sqlmi <pod-name> -- bash -c "rm <certificate-path> <private-key-path>
Exemplo:
kubectl exec -it --namespace arc-ns --container arc-sqlmi sql-0 -- bash -c "rm /var/opt/mssql/data/servercert.crt /var/opt/mssql/data/servercert.key"