Cifrado de una base de datos mediante el cifrado de datos transparente en una instancia de SQL Managed Instance habilitada para Azure Arc

En este artículo se describe cómo habilitar el cifrado de datos transparente en una base de datos creada en una instancia de SQL Managed Instance habilitada para Azure Arc. En este artículo, el término instancia administrada hace referencia a una implementación de una instancia de SQL Managed Instance habilitada para Azure Arc.

Requisitos previos

Antes de continuar con este artículo, deberá tener habilitada una instancia de SQL Managed Instance para el recurso de Azure Arc creado y conectarse a ella.

Activación del cifrado de datos transparente en una base de datos en la instancia administrada

Al activar el cifrado de datos transparente en la instancia administrada se siguen los mismos pasos que para SQL Server en el entorno local. Siga los pasos descritos en la guía de cifrado de datos transparente de SQL Server.

Después de crear las credenciales necesarias, haga una copia de seguridad de todas las credenciales creadas recientemente.

Copia de seguridad de una credencial de cifrado de datos transparente

Al hacer una copia de seguridad de las credenciales de la instancia administrada, las credenciales se almacenan en el contenedor. Para almacenar las credenciales en un volumen persistente, especifique la ruta de acceso de montaje en el contenedor. Por ejemplo, var/opt/mssql/data. En el ejemplo siguiente se hace una copia de seguridad de un certificado de la instancia administrada:

Nota:

Si el comando kubectl cp se ejecuta desde Windows, puede producir un error al usar rutas de acceso de Windows absolutas. Use rutas de acceso relativas o los comandos especificados a continuación.

  1. Realice una copia de seguridad del certificado del contenedor en /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>');
    

    Ejemplo:

    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 el certificado desde el contenedor al sistema de archivos.

kubectl exec -n <namespace> -c arc-sqlmi <pod-name> -- cat <pod-certificate-path> > <local-certificate-path>

Ejemplo:

kubectl exec -n arc-ns -c arc-sqlmi sql-0 -- cat /var/opt/mssql/data/servercert.crt > $HOME\sqlcerts\servercert.crt
  1. Copie la clave privada desde el contenedor al sistema de archivos.
 kubectl exec -n <namespace> -c arc-sqlmi <pod-name> -- cat <pod-private-key-path> > <local-private-key-path>

Ejemplo:

kubectl exec -n arc-ns -c arc-sqlmi sql-0 -- cat /var/opt/mssql/data/servercert.key > $HOME\sqlcerts\servercert.key
  1. Elimine el certificado y la clave privada del contenedor.

    kubectl exec -it --namespace <namespace> --container arc-sqlmi <pod-name> -- bash -c "rm <certificate-path> <private-key-path>
    

    Ejemplo:

    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"
    

Restauración de una credencial de cifrado de datos transparente en una instancia administrada

De forma similar a la anterior, para restaurar las credenciales, cópielas en el contenedor y ejecute después el comando T-SQL correspondiente.

Nota:

Si el comando kubectl cp se ejecuta desde Windows, puede producir un error al usar rutas de acceso de Windows absolutas. Use rutas de acceso relativas o los comandos especificados a continuación.

  1. Copie el certificado desde el sistema de archivos al contenedor.
type <local-certificate-path> | kubectl exec -i -n <namespace> -c arc-sqlmi <pod-name> -- tee <pod-certificate-path>

Ejemplo:

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 la clave privada desde sistema de archivos al contenedor.
type <local-private-key-path> | kubectl exec -i -n <namespace> -c arc-sqlmi <pod-name> -- tee <pod-private-key-path>

Ejemplo:

type $HOME\sqlcerts\servercert.key | kubectl exec -i -n arc-ns -c arc-sqlmi sql-0 -- tee /var/opt/mssql/data/servercert.key
  1. Cree el certificado mediante rutas de acceso de archivo desde /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>' );
    

    Ejemplo:

    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. Elimine el certificado y la clave privada del contenedor.

    kubectl exec -it --namespace <namespace> --container arc-sqlmi <pod-name> -- bash -c "rm <certificate-path> <private-key-path>
    

    Ejemplo:

    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"
    

Cifrado de datos transparente