gebeurtenis
31 mrt, 23 - 2 apr, 23
De grootste SQL-, Fabric- en Power BI-leerevenement. 31 maart – 2 april. Gebruik code FABINSIDER om $ 400 te besparen.
Zorg dat u zich vandaag nog registreertDeze browser wordt niet meer ondersteund.
Upgrade naar Microsoft Edge om te profiteren van de nieuwste functies, beveiligingsupdates en technische ondersteuning.
Van toepassing op: SQL Server 2019 (15.x) en hoger - Alleen Windows
Azure SQL Database
Always Encrypted met beveiligde enclaves breidt de mogelijkheden voor vertrouwelijke computing uit van Always Encrypted- door in-place versleuteling en uitgebreidere vertrouwelijke query's in te schakelen. Always Encrypted met beveiligde enclaves is beschikbaar in SQL Server 2019 (15.x) en hoger, evenals in Azure SQL Database.
Geïntroduceerd in Azure SQL Database in 2015 en in SQL Server 2016 (13.x), Always Encrypted beschermt de vertrouwelijkheid van gevoelige gegevens tegen malware en onbevoegde onbevoegde gebruikers: Databasebeheerders (DBA's), computerbeheerders, computerbeheerders, cloudbeheerders, of iemand anders die legitieme toegang heeft tot serverexemplaren, hardware, enzovoort, maar geen toegang moet hebben tot bepaalde of alle werkelijke gegevens.
Zonder de verbeteringen die in dit artikel worden besproken, beveiligt Always Encrypted de gegevens door deze aan de clientzijde te versleutelen en nooit de gegevens of de bijbehorende cryptografische sleutels in tekst zonder opmaak in de database-engine te laten verschijnen. Als gevolg hiervan is de functionaliteit voor versleutelde kolommen in de database ernstig beperkt. De enige bewerkingen die de database-engine op versleutelde gegevens kan uitvoeren, zijn gelijkheidsvergelijkingen (alleen beschikbaar met deterministische versleuteling). Alle andere bewerkingen, waaronder cryptografische bewerkingen (initiële gegevensversleuteling of sleutelrotatie) en uitgebreidere query's (bijvoorbeeld patroonkoppeling) worden niet ondersteund in de database. Gebruikers moeten hun gegevens buiten de database verplaatsen om deze bewerkingen aan de clientzijde uit te voeren.
Always Encrypted met beveiligde enclaves pakt deze beperkingen aan door bepaalde berekeningen op gegevens in platte tekst binnen een beveiligde enclave aan de serverzijde toe te staan. Een beveiligde enclave is een beveiligd geheugengebied binnen het database-engineproces. De beveiligde enclave wordt weergegeven als een ondoorzichtig vak voor de rest van de database-engine en andere processen op de hostingmachine. Er is geen manier om gegevens of code binnen de enclave van buitenaf weer te geven, zelfs niet met een foutopsporingsprogramma. Deze eigenschappen maken de beveiligde enclave een vertrouwde uitvoeringsomgeving die veilig toegang hebben tot cryptografische sleutels en gevoelige gegevens in platte tekst, zonder afbreuk te doen aan de vertrouwelijkheid van gegevens.
Always Encrypted maakt gebruik van beveiligde enclaves, zoals geïllustreerd in het volgende diagram:
Bij het parseren van een Transact-SQL-instructie die door een toepassing is ingediend, bepaalt de database-engine of de instructie bewerkingen bevat op versleutelde gegevens waarvoor het gebruik van de beveiligde enclave is vereist. Voor dergelijke uitspraken:
Het clientstuurprogramma verzendt de kolomversleutelingssleutels die vereist zijn voor de bewerkingen naar de beveiligde enclave (via een beveiligd kanaal) en verzendt de instructie voor uitvoering.
Bij het verwerken van de instructie delegeert de Database Engine cryptografische bewerkingen of berekeningen op versleutelde kolommen naar de beveiligde enclave. Indien nodig ontsleutelt de enclave de gegevens en voert deze berekeningen uit op tekst zonder opmaak.
Tijdens de verwerking van de instructie worden zowel de gegevens als de kolom-encryptiesleutels niet weergegeven in platte tekst in de database-engine buiten de beveiligde enclave.
Als u Always Encrypted wilt gebruiken met beveiligde enclaves, moet een toepassing een clientstuurprogramma gebruiken dat ondersteuning biedt voor de functie. Configureer de toepassing en het clientstuurprogramma om enclaveberekeningen en enclave-attestation in te schakelen (zie de sectie Secure enclave attestation sectie hieronder). Zie Toepassingen ontwikkelen met Always Encryptedvoor meer informatie, waaronder de lijst met ondersteunde clientstuurprogramma's.
Always Encrypted ondersteunt de volgende enclavetechnologieën (of enclavetypen):
Het type enclave dat beschikbaar is voor uw database, is afhankelijk van het SQL-product dat als host fungeert (Azure SQL Database vs. SQL Server) en (in het geval van Azure SQL Database) de configuratie van uw database.
In SQL Server 2019 (15.x) en hoger ondersteunt Always Encrypted VBS-enclaves. (Intel SGX-enclaves worden niet ondersteund.)
In Azure SQL Database kan een database een Intel SGX-enclave of een VBS-enclave gebruiken, afhankelijk van de hardware waarop de database is geconfigureerd voor uitvoering:
Notitie
VBS-enclaves zijn momenteel beschikbaar in alle Azure SQL Database-regio's behalve: Jio India Central.
Zie de sectie Beveiligingsoverwegingen voor belangrijke informatie over de niveaubeveiliging die elk enclavetype biedt.
Enclave-attestation is een diepgaande verdedigingsmechanisme waarmee aanvallen kunnen worden gedetecteerd die betrekking hebben op manipulatie met de enclavecode of de omgeving ervan door kwaadwillende beheerders.
Met enclave-attestation kan een clienttoepassing een vertrouwensrelatie tot stand brengen met de beveiligde enclave voor de database, waarmee de toepassing is verbonden, voordat de app de enclave gebruikt voor het verwerken van gevoelige gegevens. De attestation-werkstroom controleert of de enclave een legitieme VBS- of Intel SGX-enclave is en de code die erin wordt uitgevoerd, is de legitieme door Microsoft ondertekende enclavebibliotheek voor Always Encrypted. Tijdens attestation communiceren zowel het clientstuurprogramma in de toepassing als de database-engine met een externe attestation-service met behulp van een door de client opgegeven eindpunt.
Always Encrypted kan een van de twee attestation-services gebruiken:
Als u Always Encrypted wilt inschakelen met beveiligde enclaves voor uw toepassing, moet u een attestation-protocol instellen in de configuratie van het clientstuurprogramma in uw toepassing. Een attestation-protocolwaarde bepaalt of 1) de client-app attestation zal gebruiken, en, zo ja, 2) specificeert het het type van de attestationservice dat zal worden gebruikt. In de onderstaande tabel worden de ondersteunde attestation-protocollen vastgelegd voor de geldige combinaties van SQL-producten en enclavetypen:
Hosting product | Enclave type | Ondersteunde attestation-protocollen |
---|---|---|
SQL Server 2019 (15.x) en hoger | VBS-enclaves | HGS, geen attestation |
Azure SQL Database | SGX-enclaves (DC-serie databases) | Microsoft Azure Attestatie |
Azure SQL Database | VBS-enclaves | Geen attestation |
Enkele belangrijke punten om onder de aandacht te brengen:
Zie voor meer informatie:
Always Encrypted met beveiligde enclaves introduceert het concept van enclave-ingeschakelde sleutels:
master
sleutel met de eigenschap ENCLAVE_COMPUTATIONS
die is opgegeven in de kolom master
sleutelmetagegevensobject in de database. De kolom master
sleutelmetagegevensobject moet ook een geldige handtekening van de metagegevenseigenschappen bevatten. Zie CREATE COLUMN MASTER KEY (Transact-SQL) voor meer informatiemaster
. Alleen enclave-versleutelingssleutels voor kolommen kunnen worden gebruikt voor berekeningen in de beveiligde enclave.Zie Sleutels beheren voor Always Encrypted met beveiligde enclavesvoor meer informatie.
Een enclave-ingeschakelde kolom is een databasekolom die is versleuteld met een enclave-ingeschakelde sleutel voor kolomversleuteling.
De twee belangrijkste voordelen van Always Encrypted met beveiligde enclaves zijn in-place versleuteling en uitgebreide vertrouwelijke query's.
Met in-place versleuteling kunt u cryptografische bewerkingen uitvoeren op databasekolommen in de beveiligde enclave, zonder de gegevens buiten de database te verplaatsen. In-place versleuteling verbetert de prestaties en de betrouwbaarheid van cryptografische bewerkingen. U kunt versleuteling in-place uitvoeren met de instructie ALTER TABLE (Transact-SQL).
De cryptografische bewerkingen die ter plaatse worden ondersteund, zijn:
In-place versleuteling is toegestaan met zowel deterministische als gerandomiseerde versleuteling, zolang de kolomversleutelingssleutels die betrokken zijn bij een cryptografische bewerking enclave-geactiveerd zijn.
Notitie
SQL Server 2022 (16.x) voegt extra ondersteuning toe voor vertrouwelijke query's met JOIN-, GROUP BY- en ORDER BY-bewerkingen voor versleutelde kolommen.
Vertrouwelijke query's zijn DML-query's waarbij bewerkingen worden uitgevoerd op enclavekolommen binnen de beveiligde enclave.
De bewerkingen die worden ondersteund in de beveiligde enclaves zijn:
Operatie | Azure SQL Database | SQL Server 2022 (16.x) | SQL Server 2019 (15.x) |
---|---|---|---|
vergelijkingsoperators | Ondersteund | Ondersteund | Ondersteund |
TUSSEN (Transact-SQL) | Ondersteund | Ondersteund | Ondersteund |
IN (Transact-SQL) | Ondersteund | Ondersteund | Ondersteund |
LIKE (Transact-SQL) | Ondersteund | Ondersteund | Ondersteund |
DISTINCT | Ondersteund | Ondersteund | Ondersteund |
voegt zich bij | Ondersteund | Ondersteund | Alleen geneste luskoppelingen worden ondersteund |
SELECT - ORDER BY-clausule (Transact-SQL) | Ondersteund | Ondersteund | Niet ondersteund |
SELECT - GROUP BY - Transact-SQL - | Ondersteund | Ondersteund | Niet ondersteund |
Notitie
Voor de bovenstaande bewerkingen in beveiligde enclaves is willekeurige versleuteling vereist. Deterministische versleuteling wordt niet ondersteund. Gelijkheidsvergelijking blijft de beschikbare bewerking voor kolommen bij gebruik van deterministische versleuteling.
Het compatibiliteitsniveau van de database moet worden ingesteld op SQL Server 2022 (160) of hoger.
In Azure SQL Database en in SQL Server 2022 (16.x) vereisen vertrouwelijke query's die gebruikmaken van enclaves op een tekenreekskolom (char
, nchar
) dat de kolom is ingesteld op een binair-codepunt (_BIN2) sortering of een UTF-8 sortering. In SQL Server 2019 (15.x) is a_BIN2 sortering vereist.
Zie Instructies voor Transact-SQL uitvoeren met behulp van beveiligde enclavesvoor meer informatie.
U kunt niet-geclusterde indexen maken op enclavekolommen met behulp van gerandomiseerde versleuteling om vertrouwelijke DML-query's sneller uit te voeren met behulp van de beveiligde enclave.
Om ervoor te zorgen dat een index op een kolom die is versleuteld met behulp van gerandomiseerde versleuteling geen gevoelige gegevens lekt, worden de sleutelwaarden in de indexgegevensstructuur (B-tree) versleuteld en gesorteerd op basis van hun waarden voor tekst zonder opmaak. Sorteren op de platte tekstwaarde is ook handig voor het binnen de enclave verwerken van query's. Wanneer de queryexecutor in de database-engine gebruikmaakt van een index in een versleutelde kolom voor berekeningen in de enclave, wordt de index doorzocht om specifieke waarden op te zoeken die zijn opgeslagen in de kolom. Elke zoekopdracht kan meerdere vergelijkingen omvatten. De queryuitvoerder delegeert elke vergelijking met de enclave, die een waarde ontsleutelt die is opgeslagen in de kolom en de versleutelde indexsleutelwaarde die moet worden vergeleken, de vergelijking op tekst zonder opmaak uitvoert en het resultaat van de vergelijking met de uitvoerder retourneert.
Het maken van indexen voor kolommen die gebruikmaken van gerandomiseerde versleuteling en waarvoor geen enclave is ingeschakeld, blijft niet ondersteund.
Een index op een kolom met behulp van deterministische versleuteling wordt gesorteerd op basis van codering (niet-tekst zonder opmaak), ongeacht of de kolom enclave is ingeschakeld of niet.
Zie Indexen maken en gebruiken voor kolommen met Always Encrypted met beveiligde enclavesvoor meer informatie. Zie het artikel Geclusterde en niet-geclusterde indexen beschrevenvoor algemene informatie over de werking van indexering in database-engine.
Als een exemplaar van SQL Server mislukt, blijven de databases mogelijk in een toestand waarin de gegevensbestanden mogelijk enkele wijzigingen van onvolledige transacties bevatten. Wanneer het exemplaar wordt gestart, wordt een proces uitgevoerd met de naam databaseherstel, waarbij elke onvolledige transactie in het transactielogboek wordt teruggedraaid om ervoor te zorgen dat de integriteit van de database behouden blijft. Als een onvolledige transactie wijzigingen heeft aangebracht in een index, moeten deze wijzigingen ook ongedaan worden gemaakt. Sommige sleutelwaarden in de index moeten bijvoorbeeld worden verwijderd of opnieuw worden ingevoegd.
Belangrijk
Microsoft raadt ten zeerste aan ADR- (Accelerated Database Recovery) in te schakelen voor uw database, voordat de eerste index maakt op een kolom die is versleuteld met gerandomiseerde versleuteling. ADR is standaard ingeschakeld in Azure SQL Database en Azure SQL Managed Instance. ADR is beschikbaar, maar is niet standaard ingeschakeld in SQL Server 2019 (15.x) en hoger.
Met het traditionele databaseherstelproces (dat volgt op het ARIES herstelmodel), moet de database-engine wachten totdat een toepassing de versleutelingssleutel van de kolom aan de enclave levert om een wijziging in een index ongedaan te maken. Dit kan lang duren. Versneld databaseherstel (ADR) vermindert aanzienlijk het aantal ongedaan te maken bewerkingen die moeten worden uitgesteld, omdat een kolomversleutelingssleutel niet beschikbaar is in de cache binnen de enclave. Hierdoor wordt de beschikbaarheid van databases aanzienlijk verhoogd door een kans te minimaliseren dat een nieuwe transactie wordt geblokkeerd. Als ADR is ingeschakeld, heeft de database-engine mogelijk nog steeds een kolomversleutelingssleutel nodig om oude gegevensversies te voltooien, maar dit doet dit als achtergrondtaak die geen invloed heeft op de beschikbaarheid van de database- of gebruikerstransacties. Mogelijk ziet u foutberichten in het foutenlogboek, wat aangeeft dat mislukte opschoningsbewerkingen zijn veroorzaakt door een ontbrekende versleutelingssleutel voor kolommen.
De volgende beveiligingsoverwegingen zijn van toepassing op Always Encrypted met beveiligde enclaves.
master
sleutels of kolomversleutelingssleutels met de DBA's. Een DBA kan indexen voor versleutelde kolommen beheren zonder directe toegang tot de sleutels te hebben met behulp van de cache van kolomversleutelingssleutels in de enclave.Wanneer u een oplossing voor hoge beschikbaarheid of herstel na noodgevallen configureert voor een database met Always Encrypted met beveiligde enclaves, moet u ervoor zorgen dat alle databasereplica's een beveiligde enclave kunnen gebruiken. Als er een enclave beschikbaar is voor de primaire replica, maar niet voor de secundaire replica, mislukt een instructie die de functionaliteit van Always Encrypted met beveiligde enclaves probeert te gebruiken na de failover.
Wanneer u een database kopieert of migreert met Always Encrypted met beveiligde enclaves, moet u ervoor zorgen dat de doelomgeving altijd enclaves ondersteunt. Anders werken instructies die enclaves gebruiken niet voor de kopie of de gemigreerde database.
Hier volgen de specifieke overwegingen waarmee u rekening moet houden:
SQL Server
Azure SQL Database
Wanneer u in zowel SQL Server als Azure SQL Database uw database migreert met behulp van een bacpac-bestand, moet u ervoor zorgen dat u alle indexen voor enclavekolommen met behulp van willekeurige versleuteling wegbrengt voordat u het bacpac-bestand maakt.
Always Encrypted met beveiligde enclaves pakt enkele beperkingen van Always Encrypted aan, door ondersteuning te bieden voor in-place versleuteling en rijkere vertrouwelijke query's met indexen, zoals wordt uitgelegd in Mogelijkheden voor vertrouwelijke computing voor kolommen met enclave-functionaliteit.
Alle andere beperkingen voor Always Encrypted die worden vermeld in Beperkingen zijn ook van toepassing op Always Encrypted met beveiligde enclaves.
De volgende beperkingen zijn specifiek voor Always Encrypted met beveiligde enclaves:
ALTER TABLE
/ALTER COLUMN
Transact-SQL instructie. Gebruik twee afzonderlijke uitspraken.nchar[n]
en nvarchar[n]
, als n groter is dan 3967.char[n]
, varchar[n]
, binary[n]
, varbinary[n]
, als n groter is dan 7935.master
zijn Windows Certificate Store en Azure Key Vault.ALTER TABLE
/ALTER COLUMN
wilt activeren, moet u de instructie uitgeven met behulp van een queryvenster in SSMS of Azure Data Studio, of kunt u uw eigen programma schrijven waarmee de instructie wordt opgegeven. Momenteel bieden de Set-SqlColumnEncryption
cmdlet in de SqlServer PowerShell-module en de wizard Always Encrypted in SQL Server Management Studio geen ondersteuning voor in-place versleuteling. Verplaats de gegevens uit de database voor cryptografische bewerkingen, zelfs als de kolomversleutelingssleutels die worden gebruikt voor de bewerkingen enclave zijn ingeschakeld.gebeurtenis
31 mrt, 23 - 2 apr, 23
De grootste SQL-, Fabric- en Power BI-leerevenement. 31 maart – 2 april. Gebruik code FABINSIDER om $ 400 te besparen.
Zorg dat u zich vandaag nog registreertTraining
Module
Gegevens in transit en at-rest beveiligen - Training
Gegevens in transit en at-rest beveiligen
Certificering
Microsoft Certified: Azure Database Administrator Associate - Certifications
Beheer een SQL Server-databaseinfrastructuur voor cloud-, on-premises en hybride relationele databases met behulp van de relationele Microsoft PaaS-databaseaanbiedingen.
Documentatie
Altijd Versleuteld - SQL Server
Overzicht van Always Encrypted dat transparante versleuteling en vertrouwelijke computing aan clientzijde ondersteunt in SQL Server en Azure SQL Database
documentatie voor Always Encrypted met beveiligde enclaves - Azure SQL
Vind Always Encrypted met documentatie voor beveiligde enclaves voor SQL Server en Azure SQL Database
Aan de slag met Always Encrypted met beveiligde enclaves - Azure SQL Database
Een verzameling zelfstudies over het maken van een basisomgeving voor Always Encrypted met beveiligde enclaves.