Compartilhar via


Criptografar um banco de dados com Transparent Data Encryption na Instância Gerenciada de SQL habilitada pelo Azure Arc

Este artigo descreve como habilitar o Transparent Data Encryption em um banco de dados criado em um Instância Gerenciada de SQL habilitada pelo Azure Arc. Neste artigo, o termo instância gerenciada refere-se a uma implantação da Instância Gerenciada de SQL habilitada pelo Azure Arc.

Pré-requisitos

Antes de prosseguir com este artigo, é necessário ter uma Instância Gerenciada de SQL habilitada por um recurso do Azure Arc criado e conectado a ela.

Ative a Transparent Data Encryption em um banco de dados na instância gerenciada

Ativar a Transparent Data Encryption na instância gerenciada segue as mesmas etapas que o SQL Server local. Siga as etapas descritas no Guia de criptografia transparente de dados do SQL Server.

Após você criar as credenciais necessárias, faça backup de qualquer credencial criada recentemente.

Fazer backup de uma credencial de Transparent Data Encryption

Quando você faz backup de credenciais da instância gerenciada, as credenciais são armazenadas no contêiner. Para armazenar credenciais em um volume persistente, especifique o caminho de montagem no contêiner. Por exemplo, var/opt/mssql/data. O seguinte exemplo faz backup de um certificado na instância gerenciada:

Observação

Se o comando kubectl cp for executado no Windows, o comando poderá falhar ao usar caminhos absolutos do Windows. Use caminhos relativos ou os comandos especificados abaixo.

  1. Faça backup do certificado no 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>');
    
  2. 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
  1. 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
  1. 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 Transparent Data Encryption para uma instância gerenciada

Semelhante ao caso acima, restaure as credenciais copiando-as para o contêiner e executando em seguida o T-SQL correspondente.

Observação

Se o comando kubectl cp for executado no Windows, o comando poderá falhar ao usar caminhos absolutos do Windows. Use caminhos relativos ou os comandos especificados abaixo.

  1. 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
  1. Copie a chave privada do 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
  1. 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>' );
    
  2. 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"
    

Transparent Data Encryption