SQL Server encryptie uitgelegd: TDE, codering op Kolomniveau en meer
gegevensbescherming is van cruciaal belang om ervoor te zorgen dat uw organisatie voldoet aan de normen voor naleving van de regelgeving zoals de GDPR en om te voldoen aan de verwachtingen van uw klanten en zakelijke partners. Niet alleen kunnen datalekken resulteren in grote boetes, maar de reputatieschade kan net zo groot zijn. Om te helpen, ondersteunt Microsoft SQL Server 5 verschillende soorten encryptie voor het beschermen van gegevens. Dit artikel legt elk van hen uit en waar ze moeten worden gebruikt.
SSL-Transportcodering
net als websites die verkeer tussen browser en server beveiligen, kan SQL Server worden geconfigureerd om SSL (Secure Sockets Layer) te gebruiken om verkeer te versleutelen terwijl het verkeer tussen de serverinstantie en de clienttoepassing reist. Bovendien kan de client de identiteit van de server valideren met behulp van het servercertificaat. SSL beschermt alleen gegevens als het over het netwerk reist, maar, in tegenstelling tot de meeste andere vormen van SQL Server-encryptie, is SSL beschikbaar in alle ondersteunde versies van SQL Server en in alle edities.
voordat u SSL inschakelt, moet u een certificaat installeren op de SQL Server. De beste manier om dit te doen is door een certificaat aan te vragen bij uw eigen enterprise certification authority (CA). Windows Server kan worden geconfigureerd als een CA en u kunt clients zo instellen dat zij de certificaten vertrouwen die zij uitgeeft. Als alternatief is het mogelijk om zelfondertekende certificaten te gebruiken, hoewel dit het best geschikt is voor testomgevingen.
SQL Server Transparent Data Encryption (TDE)
Transparent Data Encryption (TDE) in SQL Server beschermt gegevens in rust door databasegegevens en logbestanden op schijf te versleutelen. Het werkt transparant naar bestaande toepassingen van de client, zodat ze niet hoeven te worden gewijzigd wanneer TDE is ingeschakeld. TDE maakt gebruik van real-time encryptie op paginaniveau. Pagina ’s worden versleuteld voordat ze naar de schijf worden geschreven, zonder de grootte van uw gegevens en logbestanden te vergroten, en pagina’ s worden gedecodeerd wanneer ze in het geheugen worden gelezen. TDE is alleen beschikbaar in Enterprise-edities van SQL Server. Het werkt ook voor Azure SQL Database, Azure SQL Data Warehouse en Parallel Data Warehouse.
TDE-versleuteling heeft een hiërarchische structuur, met Windows Data Protection API (DPAPI) bovenop de hiërarchie en wordt gebruikt om de service master key (SMK) te versleutelen. U kunt de SMK gebruiken om referenties, gekoppelde serverwachtwoorden en de database master keys (DMK ‘ s) die zich in verschillende databases te versleutelen. Een SQL DMK is een symmetrische sleutel die de private sleutels van certificaten en asymmetrische sleutels die zijn opgeslagen in databases beschermt.
SQL Server kan zelfondertekende certificaten genereren voor gebruik met TDE of u kunt een certificaat aanvragen bij een CA (wat de meest voorkomende aanpak is). Als u TDE wilt inschakelen, moet u een back-up maken van het certificaat en de persoonlijke sleutel die aan het certificaat is gekoppeld. U moet de database herstellen of koppelen op een andere SQL Server. Als u TDE inschakelt op een andere SQL Server-database, wordt de tempdb-systeemdatabase ook versleuteld. Als u TDE uitschakelt, moet u het certificaat en de persoonlijke sleutel bewaren, omdat delen van het transactielogboek versleuteld kunnen blijven totdat u een volledige back-up hebt gemaakt.
TDE vereist ook een DEK (database encryption key), ofwel een symmetrische sleutel die wordt beschermd met een certificaat dat is opgeslagen in de master database, ofwel een asymmetrische sleutel die wordt beschermd door een service die gebruik maakt van Extensible Key Management (EKM), zoals Microsoft Azure Key Vault. Back-upbestanden van TDE-enabled databases worden versleuteld met behulp van het DEK, dus tijdens het herstel operaties, het certificaat dat het DEK te beschermen moet beschikbaar zijn.
symmetrische sleutels gebruiken hetzelfde wachtwoord om gegevens te versleutelen en te decoderen. Asymmetrische sleutels gebruiken één wachtwoord om gegevens te versleutelen (publieke sleutel) en een ander wachtwoord om gegevens te ontcijferen (private sleutel). U kunt de opdracht certificaat maken gebruiken om certificaten te maken en de opdrachten symmetrische sleutel en asymmetrische sleutel Transact-SQL maken om sleutels voor databaseversleuteling te maken.
Back-Upversleuteling
Back-Upversleuteling werkt als TDE, maar versleutelt SQL-back-ups in plaats van de actieve gegevens en logbestanden. Back-Upversleuteling is beschikbaar in SQL Server 2014 en later. U kunt AES 128, AES 192, AES 256 of Triple DES-versleuteling opgeven en een certificaat of een asymmetrische sleutel gebruiken die is opgeslagen in EKM. Daarnaast is het mogelijk om TDE en back-up Encryptie tegelijkertijd in te schakelen, hoewel u verschillende certificaten of sleutels moet gebruiken.
net als bij TDE moet u, als u back-Upversleuteling inschakelt, ook een back-up maken van het certificaat of de sleutel. Zonder de sleutel of het certificaat kan het back-upbestand niet worden gebruikt om gegevens te herstellen. Back-ups kunnen ook worden versleuteld bij het gebruik van SQL Server Managed Backup naar Microsoft Azure.
Het is vermeldenswaard dat als u een certificaat gebruikt om back-ups te versleutelen, u het originele certificaat moet hebben bij het herstellen van gegevens. Dat betekent dat het certificaat dezelfde duimafdruk moet hebben als toen de back-up werd gemaakt. Certificaten vernieuwen of op welke manier dan ook wijzigen kan de duimafdruk doen veranderen.
codering op kolom / celniveau
beschikbaar in alle edities van SQL Server, kan codering op celniveau worden ingeschakeld op kolommen die gevoelige gegevens bevatten. De gegevens worden versleuteld op de schijf en blijft versleuteld in het geheugen totdat de DECRYPTBYKEY-functie wordt gebruikt om het te decoderen. Daarom, hoewel de SQL-gegevens zijn versleuteld, Het is niet veilig dan alleen het gebruik van een functie in de gebruikerscontext om het te decoderen. Bovendien, omdat er een functie nodig is om de gegevens te decoderen, moeten clienttoepassingen worden aangepast om te werken met versleuteling op celniveau.
Encryptiesleutelbeheer
net als bij TDE moet u een hoofdsleutel (DMK) aanmaken voordat u versleuteling op celniveau gebruikt. Er zijn vier opties voor het versleutelen van informatie met behulp van versleuteling op celniveau:
- u kunt een wachtwoordzin gebruiken om de gegevens te versleutelen en te decoderen, maar u moet opgeslagen procedures en functies versleutelen; anders kan de wachtwoordzin worden benaderd in de metadata.
- asymmetrische sleutels bieden een sterke beveiliging, maar kunnen een impact hebben op de prestaties.
- symmetrische sleutels zijn meestal sterk genoeg en bieden een goede balans tussen beveiliging en prestaties.
- certificaten bieden ook een goede balans tussen veiligheid en prestaties, en ze kunnen worden gekoppeld aan een database-gebruiker.
altijd versleuteld
altijd versleuteld versleutelt gevoelige gegevens in clienttoepassingen zonder de versleutelingssleutels aan de database-engine te onthullen, waardoor gegevenseigenaren en gegevensbeheerders gescheiden worden. Met altijd versleuteld ingeschakeld, kunt u er bijvoorbeeld zeker van zijn dat uw database-beheerders gevoelige gegevens niet kunnen lezen. Zoals de naam al doet vermoeden, gegevens worden versleuteld in rust en indien gebruikt in een systeem van derden, zoals Azure.
altijd versleuteld kan worden geconfigureerd voor individuele Databasekolommen. Twee soorten sleutels worden gebruikt: kolom encryptiesleutels en kolom hoofdsleutels. Kolom-encryptiesleutels beschermen gegevens in een kolom en kolom-hoofdsleutels zijn ‘sleutelbeschermende sleutels’ die een of meer kolom-encryptiesleutels versleutelen. Column master keys worden opgeslagen in externe vertrouwde sleutelopslag, zoals Azure Key Vault.
het versleutelingsproces is transparant voor clienttoepassingen, maar vereist een speciaal stuurprogramma op clientcomputers. Altijd versleuteld is beschikbaar in SQL Server 2016 en later, maar alleen in Enterprise editions. Vanwege de extra eisen aan de client-side is altijd versleuteld het meest geschikt voor situaties waarin scheiding van gegevenseigenaren en beheerders een primaire eis is.