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.
- Tworzenie wystąpienia zarządzanego SQL włączonego przez usługę Azure Arc
- Nawiązywanie połączenia z wystąpieniem zarządzanym SQL włączonym przez usługę Azure Arc
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.
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>');
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
- 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
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.
- 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
- 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
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>' );
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"