Udostępnij za pośrednictwem


Szyfrowanie bazy danych za pomocą przezroczystego szyfrowania danych w usłudze SQL Managed Instance włączonej przez usługę Azure Arc

W tym artykule opisano sposób włączania przezroczystego szyfrowania danych w bazie danych utworzonej w wystąpieniu zarządzanym SQL włączonym przez usługę Azure Arc. W tym artykule termin wystąpienie zarządzane odnosi się do wdrożenia wystąpienia zarządzanego SQL włączonego przez usługę Azure Arc.

Wymagania wstępne

Przed kontynuowaniem pracy z tym artykułem musisz mieć wystąpienie zarządzane SQL włączone przez utworzony zasób usługi Azure Arc i nawiązać z nim połączenie.

Włączanie przezroczystego szyfrowania danych w bazie danych w wystąpieniu zarządzanym

Włączenie przezroczystego szyfrowania danych w wystąpieniu zarządzanym odbywa się zgodnie z tymi samymi krokami co lokalny program SQL Server. Wykonaj kroki opisane w przewodniku transparent data encryption programu SQL Server.

Po utworzeniu niezbędnych poświadczeń utwórz kopię zapasową wszystkich nowo utworzonych poświadczeń.

Tworzenie kopii zapasowej poświadczeń przezroczystego szyfrowania danych

Po utworzeniu kopii zapasowej poświadczeń z wystąpienia zarządzanego poświadczenia są przechowywane w kontenerze. Aby przechowywać poświadczenia na woluminie trwałym, określ ścieżkę instalacji w kontenerze. Na przykład var/opt/mssql/data. Poniższy przykład wykonuje kopię zapasową certyfikatu z wystąpienia zarządzanego:

Uwaga

kubectl cp Jeśli polecenie jest uruchamiane z systemu Windows, polecenie może zakończyć się niepowodzeniem podczas korzystania z bezwzględnych ścieżek systemu Windows. Użyj ścieżek względnych lub poleceń określonych poniżej.

  1. Tworzenie kopii zapasowej certyfikatu z kontenera na /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>');
    

    Przykład:

    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. Skopiuj certyfikat z kontenera do systemu plików.

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

Przykład:

kubectl exec -n arc-ns -c arc-sqlmi sql-0 -- cat /var/opt/mssql/data/servercert.crt > $HOME\sqlcerts\servercert.crt
  1. Skopiuj klucz prywatny z kontenera do systemu plików.
 kubectl exec -n <namespace> -c arc-sqlmi <pod-name> -- cat <pod-private-key-path> > <local-private-key-path>

Przykład:

kubectl exec -n arc-ns -c arc-sqlmi sql-0 -- cat /var/opt/mssql/data/servercert.key > $HOME\sqlcerts\servercert.key
  1. Usuń certyfikat i klucz prywatny z kontenera.

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

    Przykład:

    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"
    

Przywracanie poświadczeń przezroczystego szyfrowania danych do wystąpienia zarządzanego

Podobnie jak powyżej, aby przywrócić poświadczenia, skopiuj je do kontenera i uruchom odpowiedni kod T-SQL później.

Uwaga

kubectl cp Jeśli polecenie jest uruchamiane z systemu Windows, polecenie może zakończyć się niepowodzeniem podczas korzystania z bezwzględnych ścieżek systemu Windows. Użyj ścieżek względnych lub poleceń określonych poniżej.

  1. Skopiuj certyfikat z systemu plików do kontenera.
type <local-certificate-path> | kubectl exec -i -n <namespace> -c arc-sqlmi <pod-name> -- tee <pod-certificate-path>

Przykład:

type $HOME\sqlcerts\servercert.crt | kubectl exec -i -n arc-ns -c arc-sqlmi sql-0 -- tee /var/opt/mssql/data/servercert.crt
  1. Skopiuj klucz prywatny z systemu plików do kontenera.
type <local-private-key-path> | kubectl exec -i -n <namespace> -c arc-sqlmi <pod-name> -- tee <pod-private-key-path>

Przykład:

type $HOME\sqlcerts\servercert.key | kubectl exec -i -n arc-ns -c arc-sqlmi sql-0 -- tee /var/opt/mssql/data/servercert.key
  1. Utwórz certyfikat przy użyciu ścieżek plików z pliku /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>' );
    

    Przykład:

    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. Usuń certyfikat i klucz prywatny z kontenera.

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

    Przykład:

    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"
    

Niewidoczne szyfrowanie danych