Włączanie przezroczystego szyfrowania danych w usłudze SQL Managed Instance włączonej przez usługę Azure Arc (wersja zapoznawcza)
W tym artykule opisano sposób włączania i wyłączania funkcji Transparent Data Encryption (TDE) magazynowanych 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 i włączenie/wyłączenie funkcji TDE będzie miało zastosowanie do wszystkich baz danych uruchomionych w wystąpieniu zarządzanym.
Aby uzyskać więcej informacji na temat funkcji TDE, zapoznaj się z tematem Transparent Data Encryption.
Włączenie funkcji TDE wykonuje następujące czynności:
- Wszystkie istniejące bazy danych będą teraz automatycznie szyfrowane.
- Wszystkie nowo utworzone bazy danych zostaną automatycznie zaszyfrowane.
Uwaga
Jako funkcja w wersji zapoznawczej technologia przedstawiona w tym artykule podlega dodatkowym warunkom użytkowania dla wersji zapoznawczych platformy Microsoft Azure.
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
Ograniczenia
Podczas włączania automatycznego szyfrowania TDE obowiązują następujące ograniczenia:
- Obsługiwana jest tylko warstwa ogólnego przeznaczenia.
- Grupy trybu failover nie są obsługiwane.
Tworzenie wystąpienia zarządzanego z włączoną funkcją TDE (interfejs wiersza polecenia platformy Azure)
Poniższy przykład tworzy wystąpienie zarządzane SQL włączone przez usługę Azure Arc z jedną repliką z włączoną funkcją TDE:
az sql mi-arc create --name sqlmi-tde --k8s-namespace arc --tde-mode ServiceManaged --use-k8s
Włączanie funkcji TDE w wystąpieniu zarządzanym
Po włączeniu funkcji TDE w wystąpieniu zarządzanym SQL z obsługą usługi Arc usługa danych automatycznie wykonuje następujące zadania:
- Dodaje klucz główny bazy danych zarządzanej przez usługę
master
w bazie danych. - Dodaje funkcję ochrony certyfikatu zarządzanego przez usługę.
- Dodaje skojarzone klucze szyfrowania bazy danych (DEK) we wszystkich bazach danych w wystąpieniu zarządzanym.
- Włącza szyfrowanie we wszystkich bazach danych w wystąpieniu zarządzanym.
Możesz ustawić usługę SQL Managed Instance włączoną przez funkcję TDE usługi Azure Arc w jednym z dwóch trybów:
- Zarządzane przez usługę
- Zarządzane przez klienta
W trybie zarządzanym przez usługę funkcja TDE wymaga, aby wystąpienie zarządzane używało klucza głównego bazy danych zarządzanej przez usługę, a także certyfikatu serwera zarządzanego przez usługę. Te poświadczenia są tworzone automatycznie po włączeniu funkcji TDE zarządzanej przez usługę.
W trybie zarządzanym przez klienta funkcja TDE używa klucza głównego bazy danych zarządzanej przez usługę i używa kluczy, które należy podać dla certyfikatu serwera. Aby skonfigurować tryb zarządzany przez klienta:
- Utwórz certyfikat.
- Zapisz certyfikat jako wpis tajny w tej samej przestrzeni nazw platformy Kubernetes co wystąpienie.
Włącz
W poniższej sekcji opisano sposób włączania funkcji TDE w trybie zarządzanym przez usługę.
Aby włączyć funkcję TDE w trybie zarządzanym usługi, uruchom następujące polecenie:
az sql mi-arc update --tde-mode ServiceManaged
Wyłączanie funkcji TDE w wystąpieniu zarządzanym
Gdy funkcja TDE jest wyłączona w wystąpieniu zarządzanym SQL z obsługą usługi Arc, usługa danych automatycznie wykonuje następujące zadania:
- Wyłącza szyfrowanie we wszystkich bazach danych w wystąpieniu zarządzanym.
- Pomiń skojarzone zestawy DEKs we wszystkich bazach danych w wystąpieniu zarządzanym.
- Pomiń ochronę certyfikatu zarządzanego przez usługę.
- Pomiń klucz główny bazy danych zarządzanej przez usługę
master
w bazie danych.
Aby wyłączyć funkcję TDE:
az sql mi-arc update --tde-mode Disabled
Tworzenie kopii zapasowej poświadczeń TDE
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.
Skopiuj klucz prywatny z kontenera do systemu plików.
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ń TDE 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.
Aby przywrócić kopie zapasowe bazy danych, które zostały wykonane przed włączeniem funkcji TDE, należy wyłączyć funkcję TDE w wystąpieniu zarządzanym SQL, przywrócić kopię zapasową bazy danych i ponownie włączyć funkcję TDE.
Skopiuj certyfikat z systemu plików do kontenera.
Skopiuj klucz prywatny z systemu plików do kontenera.
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"