Lezen in het Engels

Delen via


Een met TDE beveiligde database verplaatsen naar een andere SQL Server

van toepassing op:SQL Server-

In dit artikel wordt beschreven hoe u een database beveiligt met behulp van TDE (Transparent Data Encryption) en de database vervolgens verplaatst naar een ander exemplaar van SQL Server met behulp van SQL Server Management Studio of Transact-SQL. TDE voert realtime I/O-versleuteling en ontsleuteling van de gegevens en logboekbestanden uit. De versleuteling maakt gebruik van een database-versleutelingssleutel (DEK), die wordt opgeslagen in de opstartrecord van de database voor beschikbaarheid tijdens herstel. De DEK is een symmetrische sleutel die wordt beveiligd met behulp van een certificaat dat is opgeslagen in de master-database van de server of een asymmetrische sleutel die wordt beveiligd door een EKM-module.

Beperkingen

  • Wanneer u een met TDE beveiligde database verplaatst, moet u ook het certificaat of de asymmetrische sleutel verplaatsen die wordt gebruikt om de DEK te openen. Het certificaat of de asymmetrische sleutel moet worden geïnstalleerd in de master database van de doelserver, zodat SQL Server toegang heeft tot de databasebestanden. Zie TDE (Transparent Data Encryption)voor meer informatie.

  • U moet kopieën van zowel het certificaatbestand als het persoonlijke sleutelbestand bewaren om het certificaat te herstellen. Het wachtwoord voor de persoonlijke sleutel hoeft niet hetzelfde te zijn als het wachtwoord voor de hoofdsleutel van de database.

  • SQL Server slaat de bestanden die hier zijn gemaakt standaard op in C:\Program Files\Microsoft SQL Server\MSSQL<xx>.MSSQLSERVER\MSSQL\DATA, waarbij <xx> het versienummer is.

Machtigingen

  • Vereist CONTROL DATABASE machtiging voor de master-database om de hoofdsleutel van de database aan te maken.

  • Vereist CREATE CERTIFICATE machtiging voor de master-database om het certificaat te maken dat de DEK beveiligt.

  • Vereist CONTROL DATABASE machtiging voor de versleutelde database en VIEW DEFINITION machtiging voor het certificaat of asymmetrische sleutel die wordt gebruikt voor het versleutelen van de databaseversleutelingssleutel.

Een database maken die wordt beveiligd door Transparent Data Encryption

In de volgende procedures ziet u hoe u een database maakt die wordt beveiligd door TDE met behulp van SQL Server Management Studio en met behulp van Transact-SQL.

SQL Server Management Studio gebruiken

  1. Maak een databasehoofdsleutel en -certificaat in de master-database. Zie Transact-SQL gebruiken verderop in dit artikel voor meer informatie.

  2. Maak een back-up van het servercertificaat in de master-database. Zie Transact-SQL gebruiken verderop in dit artikel voor meer informatie.

  3. Klik in Objectverkenner met de rechtermuisknop op de map Databases en selecteer Nieuwe database.

  4. Voer in het dialoogvenster Nieuwe database in het vak Databasenaam de naam van de nieuwe database in.

  5. Voer in het vak Eigenaar de naam van de eigenaar van de nieuwe database in. U kunt ook het beletselteken (...) selecteren om het dialoogvenster Selecteer database-eigenaar te openen. Zie Een database makenvoor meer informatie over het maken van een nieuwe database.

  6. Selecteer in Objectverkenner het plusteken om de map Databases uit te vouwen.

  7. Klik met de rechtermuisknop op de database die u hebt gemaakt, wijs takenaan en selecteer Databaseversleuteling beheren.

    De volgende opties zijn beschikbaar in het dialoogvenster Databaseversleuteling beheren.

    -versleutelingsalgoritme
    Hiermee wordt het algoritme voor databaseversleuteling weergegeven of ingesteld. AES128- is het standaardalgoritmen. Dit veld kan niet leeg zijn. Zie Een versleutelingsalgoritmen kiezenvoor meer informatie over versleutelingsalgoritmen.

    servercertificaat gebruiken
    Hiermee stelt u in dat de versleuteling wordt beveiligd door een certificaat. Selecteer er een in de lijst. Als u niet beschikt over de VIEW DEFINITION machtiging voor servercertificaten, is deze lijst leeg. Als er een certificaatmethode voor versleuteling is geselecteerd, kan deze waarde niet leeg zijn. Zie SQL Server-certificaten en Asymmetrische sleutelsvoor meer informatie over certificaten.

    Server asymmetrische sleutel gebruiken
    Hiermee stelt u de versleuteling in die moet worden beveiligd door een asymmetrische sleutel. Alleen beschikbare asymmetrische sleutels worden weergegeven. Alleen een asymmetrische sleutel die wordt beveiligd door een EKM-module kan een database versleutelen met behulp van TDE.

    Databaseversleuteling instellen op
    Hiermee wijzigt u de database om TDE in te schakelen (ingeschakeld) of uit te schakelen (uitgeschakeld).

  8. Wanneer u klaar bent, selecteert u OK.

Gebruik Transact-SQL

  1. Maak in Objectverkennerverbinding met een instantie van Database Engine.

  2. Selecteer op de standaardbalk Nieuwe query.

  3. Kopieer en plak het volgende voorbeeld in het queryvenster en selecteer uitvoeren.

    SQL
    -- Create a database master key and a certificate in the master database.
    USE master;
    GO
    
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '*rt@40(FL&dasl1';
    GO
    
    CREATE CERTIFICATE TestSQLServerCert
        WITH SUBJECT = 'Certificate to protect TDE key'
    GO
    
    -- Create a backup of the server certificate in the master database.
    -- The following code stores the backup of the certificate and the private key file in the default data location for this instance of SQL Server
    -- (C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA).
    BACKUP CERTIFICATE TestSQLServerCert TO FILE = 'TestSQLServerCert'
    WITH PRIVATE KEY (
        FILE = 'SQLPrivateKeyFile',
        ENCRYPTION BY PASSWORD = '*rt@40(FL&dasl1'
    );
    GO
    
    -- Create a database to be protected by TDE.
    CREATE DATABASE CustRecords;
    GO
    
    -- Switch to the new database.
    -- Create a database encryption key, that is protected by the server certificate in the master database.
    -- Alter the new database to encrypt the database using TDE.
    USE CustRecords;
    GO
    
    CREATE DATABASE ENCRYPTION KEY
        WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER CERTIFICATE TestSQLServerCert;
    GO
    
    ALTER DATABASE CustRecords
    SET ENCRYPTION ON;
    GO
    

Zie voor meer informatie:

Een database verplaatsen die wordt beveiligd door Transparent Data Encryption

In de volgende procedures ziet u hoe u een database verplaatst die wordt beveiligd door TDE met behulp van SQL Server Management Studio en met behulp van Transact-SQL.

SQL Server Management Studio gebruiken

  1. Klik in Objectverkenner met de rechtermuisknop op de database die u eerder hebt versleuteld, wijs Taken aan en selecteer Loskoppelen....

    De volgende opties zijn beschikbaar in het dialoogvenster Database loskoppelen.

    databases loskoppelen van
    Geeft een lijst weer van de databases die moeten worden losgekoppeld.

    databasenaam
    Geeft de naam weer van de database die moet worden losgekoppeld.

    verbindingen verwijderen
    Verbreek de verbinding met de opgegeven database.

Notitie

U kunt een database niet loskoppelen met actieve verbindingen.

Statistieken bijwerken
Standaard behoudt de loskoppelbewerking verouderde optimalisatiestatistieken bij het loskoppelen van de database; Als u de bestaande optimalisatiestatistieken wilt bijwerken, schakelt u dit selectievakje in.

Full-Text catalogi behouden
Standaard bewaart de loskoppelbewerking alle volledige-tekstcatalogussen die aan de database zijn gekoppeld. Als u ze wilt verwijderen, schakelt u het selectievakje Full-Text Catalogi behouden uit. Deze optie wordt alleen weergegeven wanneer u een upgrade uitvoert van een database vanuit SQL Server 2005 (9.x).

status
Geeft een van de volgende statussen weer: Klaar of Niet klaar.

bericht
In de kolom Message kan als volgt informatie over de database worden weergegeven:

  • Wanneer een database betrokken is bij replicatie, is de StatusNiet gereed en geeft de kolom Bericht weer Database gerepliceerd.

  • Wanneer een database een of meer actieve verbindingen heeft, is de statusNiet gereed en geeft de kolom Bericht<number_of_active_connections>Actieve verbinding(en) weer - bijvoorbeeld: 1 Actieve verbinding(en). Voordat u de database loskoppelt, moet u de verbinding met actieve verbindingen verbreken door Verbindingen verwijderente selecteren.

Als u meer informatie wilt over een bericht, selecteert u de hyperlinktekst om Activiteitsmonitor te openen.

  1. Selecteer OK-.

  2. Verplaats of kopieer met Windows Verkenner de databasebestanden van de bronserver naar dezelfde locatie op de doelserver.

  3. Verplaats of kopieer met Windows Verkenner de back-up van het servercertificaat en het persoonlijke-sleutelbestand van de bronserver naar dezelfde locatie op de doelserver.

  4. Maak een databasehoofdsleutel op het doelexemplaren van SQL Server. Zie Transact-SQL gebruiken verderop in dit artikel voor meer informatie.

  5. Maak het servercertificaat opnieuw met behulp van het oorspronkelijke back-upbestand van het servercertificaat. Zie Transact-SQL gebruiken verderop in dit artikel voor meer informatie.

  6. Klik in Objectverkenner in SQL Server Management Studio met de rechtermuisknop op de map Databases en selecteer Koppelen....

  7. Selecteer in het dialoogvenster Databases koppelen, onder Databases om aan te koppelen, Voeg toe.

  8. Selecteer in het dialoogvenster Databasebestanden zoeken -server_name het databasebestand dat u wilt koppelen aan de nieuwe server en selecteer OK-.

    De volgende opties zijn beschikbaar in het dialoogvenster Databases koppelen.

    databases om te koppelen
    Geeft informatie weer over de geselecteerde databases.

    <geen kolomkop>
    Geeft een pictogram weer dat de status van de bijlagebewerking aangeeft. De mogelijke pictogrammen worden beschreven in de beschrijving van de status.

    MDF-bestandslocatie
    Geeft het pad en de bestandsnaam van het geselecteerde MDF-bestand weer.

    databasenaam
    Geeft de naam van de database weer.

    bijvoegen als
    U kunt desgewenst een andere naam opgeven voor de database die als bijlage moet worden toegevoegd.

    eigenaar
    Biedt een vervolgkeuzelijst met mogelijke database-eigenaren waaruit u desgewenst een andere eigenaar kunt selecteren.

    status
    Geeft de status van de database weer volgens de volgende tabel.

Icoon Statustekst Beschrijving
(Geen pictogram) (Geen tekst) De aanhechtingsbewerking is niet gestart of is mogelijk in behandeling voor dit object. Dit is de standaardinstelling wanneer het dialoogvenster wordt geopend.
Groene, rechts wijzende driehoek In uitvoering De bijlagebewerking is gestart, maar is niet voltooid.
Groen vinkje Succes Het object is succesvol gekoppeld.
Rode cirkel met een wit kruis Fout De koppelingsbewerking is op een fout gestuit en is niet met succes voltooid.
Cirkel met twee zwarte kwadranten (links en rechts) en twee witte kwadranten (boven en onder) Gestopt De bewerking Koppelen is niet voltooid omdat de gebruiker de bewerking heeft gestopt.
Cirkel met een gebogen pijl die linksom wijst Teruggedraaid De koppelingsbewerking is geslaagd maar is teruggedraaid vanwege een fout tijdens het koppelen van een ander object.

bericht
Hiermee wordt een leeg bericht of een hyperlink 'Bestand niet gevonden' weergegeven.

toevoegen
Zoek de benodigde hoofddatabasebestanden. Wanneer de gebruiker een .mdf bestand selecteert, worden de toepasselijke gegevens automatisch ingevuld in de desbetreffende velden van de Databases om raster toe te voegen.

verwijderen
Hiervoor verwijdert u het geselecteerde bestand uit de Databases om het aan te hechten aan het raster.

<database_name>" databasedetails
Geeft de namen weer van de bestanden die moeten worden bijgevoegd. Als u de padnaam van een bestand wilt controleren of wijzigen, selecteert u de knop Bladeren (...).

Notitie

Als er geen bestand bestaat, wordt in de kolom Bericht 'Niet gevonden' weergegeven. Als een logboekbestand niet wordt gevonden, bestaat het in een andere map of is het verwijderd. U moet het bestandspad in het databasegegevens bijwerken raster om naar de juiste locatie te verwijzen of het logboekbestand uit het raster te verwijderen. Als een NDF-gegevensbestand niet wordt gevonden, moet u het pad in het raster bijwerken om naar de juiste locatie te verwijzen.

oorspronkelijke bestandsnaam
Geeft de naam weer van het bijgevoegde bestand dat hoort bij de database.

bestandstype
Geeft het type bestand, Dataof Logaan.

huidige bestandspad
Geeft het pad naar het geselecteerde databasebestand weer. Het pad kan handmatig worden bewerkt.

bericht
Hiermee wordt een leeg bericht of een "Bestand niet gevonden" hyperlink weergegeven.

Gebruik Transact-SQL

  1. Maak in Objectverkennerverbinding met een exemplaar van de Database-Engine.

  2. Op de standaardbalk selecteer Nieuwe query.

  3. Kopieer en plak het volgende voorbeeld in het queryvenster en selecteer uitvoeren.

    SQL
    -- Detach the TDE protected database from the source server.
    USE master;
    GO
    
    EXEC master.dbo.sp_detach_db @dbname = N'CustRecords';
    GO
    
    -- Move or copy the database files from the source server to the same location on the destination server.
    -- Move or copy the backup of the server certificate and the private key file from the source server to the same location on the destination server.
    -- Create a database master key on the destination instance of SQL Server.
    USE master;
    GO
    
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '*rt@40(FL&dasl1';
    GO
    
    -- Recreate the server certificate by using the original server certificate backup file.
    -- The password must be the same as the password that was used when the backup was created.
    CREATE CERTIFICATE TestSQLServerCert
    FROM FILE = 'TestSQLServerCert'
    WITH PRIVATE KEY (
        FILE = 'SQLPrivateKeyFile',
        DECRYPTION BY PASSWORD = '*rt@40(FL&dasl1'
    );
    GO
    
    -- Attach the database that is being moved.
    -- The path of the database files must be the location where you have stored the database files.
    CREATE DATABASE [CustRecords] ON (FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\CustRecords.mdf'),
        (FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\CustRecords_log.LDF')
    FOR ATTACH;
    GO
    

Zie voor meer informatie: