Memindahkan database yang dilindungi TDE ke SQL Server lain

Berlaku untuk:SQL Server

Artikel ini menjelaskan cara melindungi database dengan menggunakan enkripsi data transparan (TDE), lalu memindahkan database ke instans SQL Server lain dengan menggunakan SQL Server Management Studio atau Transact-SQL. TDE melakukan enkripsi I/O real-time dan dekripsi data dan file log. Enkripsi menggunakan kunci enkripsi database (DEK), yang disimpan dalam catatan boot database untuk ketersediaan selama pemulihan. DEK adalah kunci konten yang diamankan dengan menggunakan sertifikat yang disimpan dalam master database server atau kunci asimetris yang dilindungi oleh modul EKM.

Pembatasan

  • Saat memindahkan database yang dilindungi TDE, Anda juga harus memindahkan sertifikat atau kunci asimetris yang digunakan untuk membuka DEK. Sertifikat atau kunci asimetris harus diinstal dalam master database server tujuan, sehingga SQL Server dapat mengakses file database. Untuk informasi selengkapnya, lihat Enkripsi data transparan (TDE).

  • Anda harus menyimpan salinan file sertifikat dan file kunci privat untuk memulihkan sertifikat. Kata sandi untuk kunci privat tidak harus sama dengan kata sandi kunci master database.

  • SQL Server menyimpan file yang dibuat di sini secara default, di C:\Program Files\Microsoft SQL Server\MSSQL<xx>.MSSQLSERVER\MSSQL\DATA mana <xx> adalah nomor versi.

Izin

  • CONTROL DATABASE Memerlukan izin pada master database untuk membuat kunci master database.

  • CREATE CERTIFICATE Memerlukan izin pada master database untuk membuat sertifikat yang melindungi DEK.

  • Memerlukan izin pada database terenkripsi dan VIEW DEFINITION izin pada sertifikat atau kunci asimetris CONTROL DATABASE yang digunakan untuk mengenkripsi kunci enkripsi database.

Membuat database yang dilindungi oleh Enkripsi Data Transparan

Prosedur berikut menunjukkan kepada Anda cara membuat database yang dilindungi oleh TDE menggunakan SQL Server Management Studio dan dengan menggunakan Transact-SQL.

Menggunakan SQL Server Management Studio

  1. Buat kunci master database dan sertifikat dalam master database. Untuk informasi selengkapnya, lihat Menggunakan Transact-SQL nanti di artikel ini.

  2. Buat cadangan sertifikat server dalam master database. Untuk informasi selengkapnya, lihat Menggunakan Transact-SQL nanti di artikel ini.

  3. Di Object Explorer, klik kanan folder Database dan pilih Database Baru.

  4. Dalam kotak dialog Database Baru, dalam kotak Nama database, masukkan nama database baru.

  5. Dalam kotak Pemilik , masukkan nama pemilik database baru. Secara bergantian, pilih elipsis (...) untuk membuka kotak dialog Pilih Pemilik Database. Untuk informasi selengkapnya tentang membuat database baru, lihat Membuat database.

  6. Di Object Explorer, pilih tanda plus untuk memperluas folder Database .

  7. Klik kanan database yang Anda buat, arahkan ke Tugas, dan pilih Kelola Enkripsi Database.

    Opsi berikut ini tersedia pada kotak dialog Kelola Enkripsi Database.

    Algoritma Enkripsi
    Menampilkan atau mengatur algoritma yang akan digunakan untuk enkripsi database. AES128 adalah algoritma default. Bidang ini tidak boleh kosong. Untuk informasi selengkapnya tentang algoritma enkripsi, lihat Memilih algoritma enkripsi.

    Menggunakan sertifikat server
    Mengatur enkripsi yang akan diamankan oleh sertifikat. Pilih salah satu dari daftar. Jika Anda tidak memiliki VIEW DEFINITION izin pada sertifikat server, daftar ini kosong. Jika metode enkripsi sertifikat dipilih, nilai ini tidak boleh kosong. Untuk informasi selengkapnya tentang sertifikat, lihat Sertifikat SQL Server dan Kunci Asimetris.

    Menggunakan kunci asimetris server
    Mengatur enkripsi yang akan diamankan oleh kunci asimetris. Hanya kunci asimetris yang tersedia yang ditampilkan. Hanya kunci asimetris yang dilindungi oleh modul EKM yang dapat mengenkripsi database menggunakan TDE.

    Atur Enkripsi Database Aktif
    Mengubah database untuk mengaktifkan (dicentang) atau menonaktifkan (tidak dicentang) TDE.

  8. Setelah selesai, pilih OK.

Menggunakan Transact-SQL

  1. Di Object Explorer, sambungkan ke instans Mesin Database.

  2. Pada bilah Standar, pilih Kueri Baru.

  3. Salin dan tempel contoh berikut ke dalam jendela kueri dan pilih Jalankan.

    -- 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
    

Untuk informasi selengkapnya, lihat:

Memindahkan database yang dilindungi oleh Enkripsi Data Transparan

Prosedur berikut menunjukkan kepada Anda cara memindahkan database yang dilindungi oleh TDE menggunakan SQL Server Management Studio dan dengan menggunakan Transact-SQL.

Menggunakan SQL Server Management Studio

  1. Di Object Explorer, klik kanan database yang Anda enkripsi sebelumnya, arahkan ke Tugas dan pilih Lepaskan....

    Opsi berikut ini tersedia dalam kotak dialog Lepaskan Database .

    Database yang akan dilepas
    Mencantumkan database yang akan dilepas.

    Nama Database
    Menampilkan nama database yang akan dilepas.

    Menghilangkan Koneksi
    Putuskan sambungan ke database yang ditentukan.

Catatan

Anda tidak dapat melepaskan database dengan koneksi aktif.

Memperbarui Statistik
Secara default, operasi pencopotan mempertahankan statistik pengoptimalan yang kedaluarsa saat melepaskan database; untuk memperbarui statistik pengoptimalan yang ada, pilih kotak centang ini.

Pertahankan Katalog Teks Lengkap
Secara default, operasi lepaskan menyimpan katalog teks lengkap yang terkait dengan database. Untuk menghapusnya, kosongkan kotak centang Pertahankan Katalog Teks Lengkap. Opsi ini hanya muncul saat Anda memutakhirkan database dari SQL Server 2005 (9.x).

Keadaan
Menampilkan salah satu status berikut: Siap atau Belum siap.

Pesan
Kolom Pesan mungkin menampilkan informasi tentang database, sebagai berikut:

  • Saat database terlibat dengan replikasi, Status Belum siap dan kolom Pesan menampilkan Database yang direplikasi.

  • Saat database memiliki satu atau beberapa koneksi aktif, Status Belum siap dan kolom Pesan ditampilkan< number_of_active_connections>Koneksi aktif - misalnya: 1 Koneksi aktif. Sebelum Anda bisa melepaskan database, Anda perlu memutuskan koneksi aktif apa pun dengan memilih Jatuhkan Koneksi ion.

Untuk mendapatkan informasi selengkapnya tentang pesan, pilih teks hyperlink untuk membuka Monitor Aktivitas.

  1. Pilih OK.

  2. Menggunakan Windows Explorer, pindahkan atau salin file database dari server sumber ke lokasi yang sama di server tujuan.

  3. Menggunakan Windows Explorer, pindahkan atau salin cadangan sertifikat server dan file kunci privat dari server sumber ke lokasi yang sama di server tujuan.

  4. Buat kunci master database pada instans tujuan SQL Server. Untuk informasi selengkapnya, lihat Menggunakan Transact-SQL nanti di artikel ini.

  5. Buat ulang sertifikat server dengan menggunakan file cadangan sertifikat server asli. Untuk informasi selengkapnya, lihat Menggunakan Transact-SQL nanti di artikel ini.

  6. Di Object Explorer di SQL Server Management Studio, klik kanan folder Database dan pilih Lampirkan....

  7. Dalam kotak dialog Lampirkan Database, di bawah Database yang akan dilampirkan, pilih Tambahkan.

  8. Dalam kotak dialog Temukan File Database -server_name , pilih file database untuk dilampirkan ke server baru dan pilih OK.

    Opsi berikut ini tersedia dalam kotak dialog Lampirkan Database.

    Database yang akan dilampirkan
    Menampilkan informasi tentang database terpilih.

    <tidak ada header kolom>
    Menampilkan ikon yang menunjukkan status operasi lampirkan. Ikon yang mungkin dijelaskan dalam deskripsi Status .

    Lokasi File MDF
    Menampilkan jalur dan nama file dari file MDF terpilih.

    Nama Database
    Menampilkan nama database.

    Lampirkan Sebagai
    Secara opsional, menentukan nama yang berbeda untuk database yang akan dilampirkan sebagai.

    Pemilik
    Menyediakan daftar dropdown dari kemungkinan pemilik database tempat Anda dapat memilih pemilik yang berbeda secara opsional.

    Keadaan
    Menampilkan status database sesuai dengan tabel berikut.

Icon Teks status Deskripsi
(Tidak ada ikon) (Tidak ada teks) Operasi lampirkan tidak dimulai atau mungkin tertunda untuk objek ini. Ini adalah default ketika dialog dibuka.
Segitiga hijau dan kanan Sedang berlangsung Operasi lampirkan dimulai tetapi belum selesai.
Tanda centang hijau Sukses Objek berhasil dilampirkan.
Lingkaran merah berisi salib putih Error Operasi lampirkan mengalami kesalahan dan tidak berhasil diselesaikan.
Lingkaran yang berisi dua kuadran hitam (di kiri dan kanan) dan dua kuadran putih (di atas dan bawah) Dihentikan Operasi lampirkan tidak berhasil diselesaikan karena pengguna menghentikan operasi.
Lingkaran yang berisi panah melengkung menunjuk berlawanan arah jarang Digulung Balik Operasi lampirkan berhasil tetapi digulung balik karena kesalahan selama lampiran objek lain.

Pesan
Menampilkan pesan kosong atau hyperlink "File tidak ditemukan".

Tambahkan
Temukan file database utama yang diperlukan. Saat pengguna memilih file .mdf, informasi yang berlaku secara otomatis diisi di bidang masing-masing Database untuk melampirkan kisi.

Hapus
Menghapus file terpilih dari Database untuk melampirkan kisi.

Detail database "<database_name">
Menampilkan nama berkas yang akan dilampirkan. Untuk memverifikasi atau mengubah nama jalur file, pilih tombol Telusuri (...).

Catatan

Jika file tidak ada, kolom Pesan menampilkan "Tidak ditemukan." Jika file log tidak ditemukan, file tersebut ada di direktori lain atau telah dihapus. Anda perlu memperbarui jalur file di kisi detail database untuk menunjuk ke lokasi yang benar atau menghapus file log dari kisi. Jika file data .ndf tidak ditemukan, Anda perlu memperbarui jalurnya di kisi untuk menunjuk ke lokasi yang benar.

Nama File Asli
Menampilkan nama file terlampir milik database.

Jenis File
Menunjukkan jenis file, Data, atau Log.

Jalur File Saat Ini
Menampilkan jalur ke file database terpilih. Jalur dapat diedit secara manual.

Pesan
Menampilkan pesan kosong atau hyperlink "File tidak ditemukan".

Menggunakan Transact-SQL

  1. Di Object Explorer, sambungkan ke instans Mesin Database.

  2. Pada bilah Standar, pilih Kueri Baru.

  3. Salin dan tempel contoh berikut ke dalam jendela kueri dan pilih Jalankan.

    -- 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
    

Untuk informasi selengkapnya, lihat: