Transparante gegevensversleuteling inschakelen voor SQL Managed Instance ingeschakeld door Azure Arc (preview)
In dit artikel wordt beschreven hoe u TDE -at-rest (Transparent Data Encryption) inschakelt en uitschakelt op een met SQL beheerd exemplaar dat is ingeschakeld door Azure Arc. In dit artikel verwijst de term beheerd exemplaar naar een implementatie van SQL Managed Instance die is ingeschakeld door Azure Arc en het in- of uitschakelen van TDE is van toepassing op alle databases die worden uitgevoerd op een beheerd exemplaar.
Raadpleeg Transparante gegevensversleuteling voor meer informatie over TDE.
Als u de TDE-functie inschakelt, doet u het volgende:
- Alle bestaande databases worden nu automatisch versleuteld.
- Alle zojuist gemaakte databases worden automatisch versleuteld.
Notitie
Omdat het om een preview-functie gaat, is de technologie die in dit artikel wordt behandeld onderhevig aan de Aanvullende gebruiksvoorwaarden voor Microsoft Azure Previews.
De meest recente updates zijn beschikbaar in de releaseopmerkingen.
Vereisten
Voordat u verdergaat met dit artikel, moet u een met SQL beheerd exemplaar hebben ingeschakeld door azure Arc-resource die is gemaakt en er verbinding mee maken.
- Een met SQL beheerd exemplaar maken dat is ingeschakeld door Azure Arc
- Verbinding maken met SQL Managed Instance ingeschakeld door Azure Arc
Beperkingen
De volgende beperkingen gelden wanneer u automatische TDE inschakelt:
- Alleen de laag Algemeen gebruik wordt ondersteund.
- Failovergroepen worden niet ondersteund.
Een beheerd exemplaar maken waarvoor TDE is ingeschakeld (Azure CLI)
In het volgende voorbeeld wordt een met SQL beheerd exemplaar gemaakt dat is ingeschakeld door Azure Arc met één replica, TDE ingeschakeld:
az sql mi-arc create --name sqlmi-tde --k8s-namespace arc --tde-mode ServiceManaged --use-k8s
TDE inschakelen op het beheerde exemplaar
Wanneer TDE is ingeschakeld voor SQL Managed Instance met Arc, voert de gegevensservice automatisch de volgende taken uit:
- Hiermee voegt u de door de service beheerde hoofdsleutel voor de
master
database toe. - Voegt de door de service beheerde certificaatbeveiliging toe.
- Voegt de bijbehorende DEK (Database Encryption Keys) toe aan alle databases in het beheerde exemplaar.
- Hiermee schakelt u versleuteling in voor alle databases in het beheerde exemplaar.
U kunt SQL Managed Instance instellen die is ingeschakeld door Azure Arc TDE in een van de volgende twee modi:
- Door de service beheerd
- Door de klant beheerd
In de door de service beheerde modus vereist TDE dat het beheerde exemplaar een door de service beheerde hoofdsleutel van de database en het door de service beheerde servercertificaat gebruikt. Deze referenties worden automatisch gemaakt wanneer door de service beheerde TDE is ingeschakeld.
In de door de klant beheerde modus maakt TDE gebruik van een door de service beheerde databasehoofdsleutel en worden sleutels gebruikt die u voor het servercertificaat opgeeft. De door de klant beheerde modus configureren:
- Maak een certificaat.
- Sla het certificaat op als een geheim in dezelfde Kubernetes-naamruimte als het exemplaar.
Inschakelen
In de volgende sectie wordt uitgelegd hoe u TDE inschakelt in de door de service beheerde modus.
Voer de volgende opdracht uit om TDE in te schakelen in de beheerde modus van de service:
az sql mi-arc update --tde-mode ServiceManaged
TDE uitschakelen op het beheerde exemplaar
Wanneer TDE is uitgeschakeld voor SQL Managed Instance met Arc, voert de gegevensservice automatisch de volgende taken uit:
- Hiermee schakelt u versleuteling uit voor alle databases in het beheerde exemplaar.
- Hiermee verwijdert u de bijbehorende DEK's voor alle databases in het beheerde exemplaar.
- Hiermee wordt de door de service beheerde certificaatbeveiliging weggekapt.
- Hiermee wordt de hoofdsleutel van de door de service beheerde database in de
master
database verwijderd.
TDE uitschakelen:
az sql mi-arc update --tde-mode Disabled
Een back-up maken van een TDE-referentie
Wanneer u een back-up maakt van referenties van het beheerde exemplaar, worden de referenties opgeslagen in de container. Als u referenties wilt opslaan op een permanent volume, geeft u het koppelpad op in de container. Bijvoorbeeld: var/opt/mssql/data
. In het volgende voorbeeld wordt een back-up van een certificaat van het beheerde exemplaar uitgevoerd:
Notitie
Als de kubectl cp
opdracht wordt uitgevoerd vanuit Windows, kan de opdracht mislukken wanneer absolute Windows-paden worden gebruikt. Gebruik relatieve paden of de onderstaande opdrachten.
Maak een back-up van het certificaat van de container naar
/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>');
Voorbeeld:
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>');
Kopieer het certificaat van de container naar uw bestandssysteem.
Kopieer de persoonlijke sleutel van de container naar uw bestandssysteem.
Verwijder het certificaat en de persoonlijke sleutel uit de container.
kubectl exec -it --namespace <namespace> --container arc-sqlmi <pod-name> -- bash -c "rm <certificate-path> <private-key-path>
Voorbeeld:
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"
Een TDE-referentie herstellen naar een beheerd exemplaar
Net als hierboven kunt u de referenties herstellen, kopieert u deze naar de container en voert u daarna de bijbehorende T-SQL uit.
Notitie
Als de kubectl cp
opdracht wordt uitgevoerd vanuit Windows, kan de opdracht mislukken wanneer absolute Windows-paden worden gebruikt. Gebruik relatieve paden of de onderstaande opdrachten.
Als u databaseback-ups wilt herstellen die zijn gemaakt voordat u TDE inschakelt, moet u TDE uitschakelen op het beheerde SQL-exemplaar, de back-up van de database herstellen en TDE opnieuw inschakelen.
Kopieer het certificaat van uw bestandssysteem naar de container.
Kopieer de persoonlijke sleutel van uw bestandssysteem naar de container.
Maak het certificaat met bestandspaden van
/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>' );
Voorbeeld:
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>' );
Verwijder het certificaat en de persoonlijke sleutel uit de container.
kubectl exec -it --namespace <namespace> --container arc-sqlmi <pod-name> -- bash -c "rm <certificate-path> <private-key-path>
Voorbeeld:
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"