sql >> Database >  >> RDS >> Sqlserver

SQL Server Database Back-up Encryptie

Om de gegevensbeveiliging te beheren waarvan een back-up is gemaakt door het bestandssysteem als databaseback-upbestanden, biedt SQL Server de back-upcoderingsfunctie. In dit artikel zullen we het hebben over coderingsopties die beschikbaar zijn in SQL Server voor databaseback-ups. We zullen de gebruiksdetails, voordelen en aanbevolen werkwijzen voor het versleutelen van back-up van SQL Server-database tijdens het back-upproces nader bekijken.

Wat is versleuteling van databaseback-ups?

De noodzaak om gegevens veilig te houden groeit enorm. Naast gegevens moet u er zeker van zijn dat uw databaseback-upbestanden ook beveiligd zijn, vooral die op een serverbestandssysteem. De gegevens in de oorspronkelijke back-upbestanden van SQL Server worden als platte tekst op het bestandssysteem opgeslagen. U kunt het zonder moeite lezen met een teksteditor.
Afhankelijk van de gegevenstypen die in uw tabellen worden gebruikt, zijn sommige gegevens veel gemakkelijker te lezen dan andere. De volgende afbeelding toont het back-upbestand geopend in de Kladblok-teksteditor:

Zoals u kunt zien, is de T-SQL-code zichtbaar en gemakkelijk te lezen. Zodra we de back-up echter met een codering hebben gemaakt, heeft niemand de kans om onder de motorkap te komen.

De volgende afbeelding toont dezelfde AdventureWorks2014.bak met een codering.

Vanaf SQL Server 2014 kan de database-engine de gegevens versleutelen terwijl een back-upbestand wordt gemaakt. U kunt het encryptie-algoritme en de encryptor specificeren, ofwel een Certificaat of een Asymmetrische Sleutel, terwijl u een back-up maakt. De functie voor back-upcodering verbetert de beveiliging en werkt in elk domein waar SQL Server zelf kan worden gebruikt.

Wat is vereist?

Om de databaseback-up te versleutelen, moet u een versleutelingsalgoritme en een versleutelaar specificeren. Er zijn twee ondersteunde coderingsopties:

  • Encryptie-algoritme:AES_128, AES_192, AES_256 en Triple_DES_3Key
  • Encryptor:een certificaat of asymmetrische sleutel

Als u per ongeluk het certificaat of de asymmetrische sleutel verliest, krijgt u nooit de kans om het back-upbestand te herstellen. Het is dus erg belangrijk om het certificaat of de asymmetrische sleutel op een veilige plaats te bewaren.

Voordelen van database-back-upversleuteling

  • Helpt bij het beveiligen van gegevens.
  • Kan worden toegepast op de databases die zijn versleuteld met behulp van Transparent Data Encryption (TDE).
  • Ondersteund voor back-ups gemaakt door SQL Server beheerde back-ups naar Microsoft Azure die extra beveiliging bieden voor off-site back-ups.
  • Ondersteunt talrijke versleutelingsalgoritmen tot AES 256 bit. Hierdoor kunt u een algoritme selecteren dat aan uw eisen voldoet.
  • Mogelijk om encryptiesleutels te integreren met Extended Key Management (EKM) providers.

Wijzigingen in systeemtabellen

Tijdens het maken van de versleutelde back-up wordt wat informatie vastgelegd in de MSDB systeemdatabase:het gebruikte sleutelalgoritme, coderingstype en coderingsvingerafdruk.
De backupset tabel bevat informatie voor elke back-upset. Een back-upset bevat de back-up voor een enkele, succesvolle back-upbewerking.
De volgende kolommen:key_algorithm , encryptor_thumprint , encryptor_type van deze DMV slaat informatie op over of de back-up is versleuteld, het type versleutelaar en de vingerafdruk van de versleutelaar.

SELECT TOP 5
    name,
    key_algorithm,
    encryptor_thumbprint,
    encryptor_type
FROM msdb.dbo.backupset AS backupset with (NOLOCK)
WHERE type IN ('D', 'I') AND database_name = 'AdventureWorks2014'
ORDER BY backupset.backup_start_date  DESC
GO

Dit is wat je zult zien:

Lees de volgende MSDN-documentatiepagina voor meer informatie over de backupset-tabel:backupset (Transact-SQL)

De backupmediaset tabel bevat informatie voor elke back-upmediaset. De kolom is_encrypted geeft aan of de back-up is gecodeerd of niet. 0 – niet-versleuteld en 1 – versleuteld. Aanvankelijk is deze waarde ingesteld op NULL, wat duidt op niet-versleutelde backupmediaset.

SELECT TOP 5
    media_set_id,
    is_encrypted, 
    is_compressed
FROM msdb.dbo.backupmediaset AS mediaset with (NOLOCK)
ORDER BY mediaset.media_set_id DESC
GO

De resultatenset:

Versleutelingsmethoden voor databaseback-up

1. Met hulp van dbForge Studio voor SQL Server

Het is mogelijk om back-upversleuteling van databases te maken met behulp van SSMS, maar persoonlijk gaf ik de voorkeur aan dbForge Studio voor SQL Server - een krachtige IDE voor beheer, administratie, ontwikkeling, gegevensrapportage en analyse van SQL Server. Deze IDE is als een Zwitsers mes voor databaseontwikkelaars. De tool biedt essentiële functies die zijn verpakt in een goed ontworpen en intuïtieve GUI. Om kennis te maken met de belangrijkste functies, zie de dbForge Studio for SQL Server – Overview inleidende video (04:03 min):

Nadat u de tool hebt gedownload en geïnstalleerd, moet u de databaseverbinding maken.

Houd er rekening mee dat de functie voor back-upversleuteling is geïntroduceerd in SQL Server 2014. SQL Server Express ondersteunt geen versleuteling tijdens back-up.

1. Nadat u verbinding hebt gemaakt met een vereiste SQL Server-instantie, in Database Explorer , klik op de servernaam om de serverstructuur uit te vouwen.

2. Klik met de rechtermuisknop op een vereiste database, wijs naar Taken en klik vervolgens op Back-up maken . Het dialoogvenster Back-up database verschijnt.

In de Verbinding keuzelijst, controleer dan de naam van de verbinding. U kunt optioneel een andere verbinding uit de lijst selecteren.

3. Klik op Volgende om door te gaan met Media-opties .

De coderingsoptie is uitgeschakeld als u ervoor kiest om deze toe te voegen aan de bestaande back-upsetoptie op de pagina Media-opties van de wizard Back-updatabase. Kies een back-up naar een nieuwe mediaset en wis alle bestaande back-upsets.
Maak het certificaat/de sleutel aan voordat u het proces start. Certificaat of asymmetrische sleutel die is gemaakt voordat de back-updatabasewizard wordt gestart, wordt weergegeven in de vervolgkeuzelijst.

Selecteer de Back-up naar een nieuwe mediaset en wis alle bestaande back-upsets optie om een ​​nieuwe back-up te maken. Voer een naam in bij Naam mediaset tekstvak en beschrijf eventueel de mediaset in de Beschrijving mediaset tekstvak.

4. Klik op Volgende om door te gaan met Back-upopties .

Selecteer op deze pagina de optie Back-up versleutelen. Selecteer het algoritme en het certificaat of de asymmetrische sleutel. Klik op Back-up maken . Het proces duurt in mijn geval enkele seconden.

2. Transact-SQL-instructies gebruiken

We gebruiken de BACKUP DATABASE instructie om een ​​databaseback-up te maken en het BACKUPLOGBOEK om een ​​back-upbestand van het transactielogboek te maken.

Volledige databaseback-up

Dit type back-up maakt een back-up van de hele database. Het bevat een deel van het transactielogboek zodat de volledige database kan worden hersteld nadat een volledige databaseback-up is hersteld.

De volgende code creëert een volledige database versleuteld back-up op de opgegeven locatie met behulp van het gespecificeerde certificaat en coderingsalgoritme.

BACKUP DATABASE AdventureWorks2014
TO DISK = 'D:\DBMSSQLX64\Backup\AdventureWorks2014.bak'
WITH NAME = N'AdventureWorks2014, Compressed, Encrypted, Full',
    FORMAT, INIT, SKIP, NOREWIND, NOUNLOAD, STATS = 5, COMPRESSION,
ENCRYPTION
(
    ALGORITHM = AES_256, SERVER CERTIFICATE = Cert1
)
GO

Opmerking:als er nog nooit een back-up is gemaakt van het certificaat dat voor de versleuteling is gebruikt, verschijnt de volgende waarschuwing wanneer de back-up is voltooid. Zorg ervoor dat u een back-up van het certificaat maakt samen met de privésleutel die aan het certificaat is gekoppeld:

Waarschuwing :Er is geen back-up gemaakt van het certificaat dat is gebruikt voor het coderen van de databasecoderingssleutel. U moet onmiddellijk een back-up maken van het certificaat en de persoonlijke sleutel die aan het certificaat is gekoppeld. Als het certificaat ooit niet meer beschikbaar is of als u de database op een andere server moet herstellen of koppelen, moet u een back-up hebben van zowel het certificaat als de privésleutel, anders kunt u de database niet openen.

Back-up differentiële database

Bij het maken van dit type back-up bestaat de database- of bestandsback-up alleen uit de delen van de database of het bestand die zijn gewijzigd sinds de laatste volledige back-up. Bovendien neemt dit type back-up meestal minder ruimte in beslag dan een volledige back-up.

De volgende code creëert een differentiële database versleuteld back-up op de opgegeven locatie met behulp van het gespecificeerde certificaat en coderingsalgoritme.

BACKUP DATABASE AdventureWorks2014
TO DISK = 'D:\DBMSSQLX64\Backup\AdventureWorks2014_DIFF.bak'
WITH NAME = N'AdventureWorks2014, Compressed, Encrypted, Differential',
    FORMAT, INIT, SKIP, NOREWIND, NOUNLOAD, STATS = 5,
 COMPRESSION, DIFFERENTIAL,
ENCRYPTION
(
    ALGORITHM = AES_256, SERVER CERTIFICATE = Cert1
)
GO

Back-up van databasetransactielogboek

SQL Server-database bevat een of meer transactielogboekbestanden, naast gegevensbestanden, waarin alle transacties en databasewijzigingen die door elke transactie zijn aangebracht, worden vastgelegd. De transactie-informatie wordt alleen verzameld in de databases waar de databaseherstelmodus is ingesteld op volledig herstel of bulk-gelogd herstel.

De volgende code maakt het databasetransactielogboek versleuteld back-up op de opgegeven locatie met behulp van het gespecificeerde certificaat en coderingsalgoritme.

BACKUP LOG AdventureWorks2014
TO DISK = 'D:\DBMSSQLX64\Backup\AdventureWorks2014_LOG.bak'
WITH NAME = N'AdventureWorks2014, Compressed, Encrypted, TLog',
    FORMAT, INIT, SKIP, STATS = 5, COMPRESSION, ENCRYPTION
(
    ALGORITHM = AES_256, SERVER CERTIFICATE = Cert1
)
GO

3. PowerShell gebruiken

Met SQL Server 2014 kunt u een back-up van de database maken met behulp van Windows Powershell. De volgende code maakt de coderingsopties en gebruikt deze als parameterwaarde in de Backup-SqlDatabase-commando:

$encryptionOption=New-SqlBackupEncryptionOption –Algorithm Aes256 –EncryptorType ServerCertificate –EncryptorName “Cert1”
Backup-SqlDatabase –ServerInstance Server_name –Database “AdventureWorks2014” –BackupFile “D:\DBMSSQLX64\Backup\AdventureWorks2014_DIFF.bak” –CompressionOption On –EncryptionOption $encryptionOption

Als we de bovengenoemde benaderingen vergelijken, lijdt het geen twijfel dat het maken van gecodeerde databaseback-ups vrij eenvoudig is als u over de juiste tool beschikt, zoals dbForge Studio voor SQL Server van Devart.

Aanvullende lezing

Mijn vriend, Pinal Dave – liefhebber van SQL Server-technologie, onafhankelijk adviseur, auteur van verschillende SQL Server-boeken en Pluralsight-cursussen, heeft een uitstekend artikel geschreven dat ik u zou aanraden om verder te lezen:SQL SERVER – A Practical Use of Backup Encryption

P>
  1. Alle uitgeschakelde beperkingen in SQL Server retourneren (T-SQL-voorbeeld)

  2. Hoe alle afhankelijkheden van een tabel in de sql-server te vinden

  3. MySQL dagen toevoegen aan een datum

  4. Aankondiging van de algemene beschikbaarheid van SQL Safe Backup 8.7.2