Aracılığıyla paylaş


TDE korumalı veritabanını başka bir SQL Server'a taşıma

Şunlar için geçerlidir: SQL Server

Bu makalede, saydam veri şifrelemesi (TDE) kullanarak veritabanını koruma ve ardından SQL Server Management Studio veya Transact-SQL kullanarak veritabanını başka bir SQL Server örneğine taşıma açıklanmaktadır. TDE, verilerin ve günlük dosyalarının gerçek zamanlı G/Ç şifrelemesini ve şifresini çözmeyi gerçekleştirir. Şifreleme, kurtarma sırasında kullanılabilirlik için veritabanı önyükleme kaydında depolanan bir veritabanı şifreleme anahtarı (DEK) kullanır. DEK, sunucunun veritabanında depolanan master bir sertifika veya EKM modülü tarafından korunan asimetrik anahtar kullanılarak güvenliği sağlanan bir simetrik anahtardır.

Sınırlamalar

  • TDE korumalı veritabanını taşırken, DEK'yi açmak için kullanılan sertifikayı veya asimetrik anahtarı da taşımanız gerekir. SQL Server'ın veritabanı dosyalarına master erişebilmesi için sertifikanın veya asimetrik anahtarın hedef sunucunun veritabanına yüklenmesi gerekir. Daha fazla bilgi için bkz . Saydam veri şifrelemesi (TDE).

  • Sertifikayı kurtarmak için hem sertifika dosyasının hem de özel anahtar dosyasının kopyalarını tutmanız gerekir. Özel anahtarın parolasının veritabanı ana anahtarı parolası ile aynı olması gerekmez.

  • SQL Server burada oluşturulan dosyaları varsayılan olarak içinde C:\Program Files\Microsoft SQL Server\MSSQL<xx>.MSSQLSERVER\MSSQL\DATA depolar; burada <xx> sürüm numarasıdır.

Permissions

  • CONTROL DATABASE Veritabanı ana anahtarını oluşturmak için veritabanında izin master gerektirir.

  • DEK'yi CREATE CERTIFICATEmaster koruyan sertifikayı oluşturmak için veritabanında izin gerektirir.

  • CONTROL DATABASE Şifrelenmiş veritabanında izin ve VIEW DEFINITION veritabanı şifreleme anahtarını şifrelemek için kullanılan sertifika veya asimetrik anahtar üzerinde izin gerektirir.

Saydam Veri Şifrelemesi ile korunan bir veritabanı oluşturma

Aşağıdaki yordamlarda SQL Server Management Studio ve Transact-SQL kullanarak TDE tarafından korunan bir veritabanının nasıl oluşturulacağı gösterilmektedir.

SQL Server Management Studio'yu kullanma

  1. Veritabanında bir veritabanı ana anahtarı ve sertifikası master oluşturun. Daha fazla bilgi için bu makalenin devamında yer alan Transact-SQL kullanma bölümüne bakın.

  2. Veritabanında sunucu sertifikasının yedeğini master oluşturun. Daha fazla bilgi için bu makalenin devamında yer alan Transact-SQL kullanma bölümüne bakın.

  3. Nesne Gezgini'nde Veritabanları klasörüne sağ tıklayın ve Yeni Veritabanı'nı seçin.

  4. Yeni Veritabanı iletişim kutusundaki Veritabanı adı kutusuna yeni veritabanının adını girin.

  5. Sahip kutusuna yeni veritabanının sahibinin adını girin. Alternatif olarak, Veritabanı Sahibi Seç iletişim kutusunu açmak için üç noktayı (...) seçin. Yeni veritabanı oluşturma hakkında daha fazla bilgi için bkz. Veritabanı oluşturma.

  6. Nesne Gezgini'nde artı işaretini seçerek Veritabanları klasörünü genişletin.

  7. Oluşturduğunuz veritabanına sağ tıklayın, Görevler'in üzerine gelin ve Veritabanı Şifrelemesini Yönet'i seçin.

    Veritabanı Şifrelemesini Yönet iletişim kutusunda aşağıdaki seçenekler kullanılabilir.

    • Şifreleme Algoritması

      Veritabanı şifrelemesi için kullanılacak algoritmayı görüntüler veya ayarlar. AES128 varsayılan algoritmadır. Bu alan boş olamaz. Şifreleme algoritmaları hakkında daha fazla bilgi için bkz. Şifreleme algoritması seçme.

    • Sunucu sertifikası kullan

      Şifrelemeyi bir sertifika tarafından güvenli hale getirilecek şekilde ayarlar. Listeden birini seçin. VIEW DEFINITION Sunucu sertifikaları üzerinde izniniz yoksa, bu liste boş olur. Bir sertifika şifreleme yöntemi seçilirse, bu değer boş olamaz. Sertifikalar hakkında daha fazla bilgi için bkz. SQL Server Sertifikaları ve Asimetrik Anahtarlar.

    • Sunucu asimetrik anahtarını kullanma

      Şifrelemeyi asimetrik bir anahtarla güvenli hale getirilecek şekilde ayarlar. Yalnızca kullanılabilir asimetrik anahtarlar görüntülenir. Yalnızca EKM modülü tarafından korunan bir asimetrik anahtar TDE kullanarak veritabanını şifreleyebilir.

    • Veritabanı Şifrelemeyi Açık Olarak Ayarla

      TDE'yi açmak (işaretli) veya kapatmak (işaretsiz) için veritabanını değiştirir.

  8. İşiniz bittiğinde Tamamseçin.

Transact-SQL kullanma

  1. Nesne Gezgini'nde Veritabanı Motoru'nun bir örneğine bağlanın.

  2. Standart araç çubuğunda, Yeni Sorgu'yu seçin.

  3. Aşağıdaki örneği kopyalayıp sorgu penceresine yapıştırın ve Yürüt'e tıklayın.

    -- Create a database master key and a certificate in the master database.
    USE master;
    GO
    
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
    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 = '<password>');
    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
    

Daha fazla bilgi için bakınız:

Saydam Veri Şifrelemesi ile korunan bir veritabanını taşıma

Aşağıdaki yordamlarda SQL Server Management Studio kullanarak ve Transact-SQL kullanarak TDE tarafından korunan bir veritabanını nasıl taşıyabileceğiniz gösterilmektedir.

SQL Server Management Studio'yu kullanma

  1. Veritabanını ayırma.

    Nesne Gezgini'nde daha önce şifrelediğiniz veritabanına sağ tıklayın, Görevler'in üzerine gelin ve Ayır... seçeneğini belirleyin.

    Veritabanını Ayır iletişim kutusunda aşağıdaki seçenekler kullanılabilir.

    • Ayrılacak veritabanları

      Ayrılacak veritabanlarını listeler.

    • Veritabanı Adı

      Ayrılacak veritabanının adını görüntüler.

    • Bağlantıları Bırak

      Belirtilen veritabanıyla bağlantıların bağlantısını kesin.

      Uyarı

      Etkin bağlantıları olan bir veritabanını ayıramazsınız.

    • İstatistikleri Güncelleştir

      Varsayılan olarak, ayırma işlemi veritabanını ayırırken güncel olmayan iyileştirme istatistiklerini korur; mevcut iyileştirme istatistiklerini güncelleştirmek için bu onay kutusunu seçin.

    • Full-Text Katalogları Koru

      Varsayılan olarak, ayırma işlemi veritabanıyla ilişkili tüm tam metin kataloglarını korur. Bunları kaldırmak için Katalogları Full-Text Koru onay kutusunu temizleyin. Bu seçenek yalnızca SQL Server 2005'ten (9.x) bir veritabanını yükseltirken görünür.

    • Statü

      Şu durumlardan birini görüntüler: Hazır veya Hazır değil.

    • Message

      İleti sütunu veritabanıyla ilgili bilgileri aşağıdaki gibi görüntüleyebilir:

      • Bir veritabanı çoğaltmaya dahil olduğunda , DurumHazır değil ve İleti sütununda Veritabanı çoğaltılmış olarak görüntülenir.

      • Bir veritabanında bir veya daha fazla etkin bağlantı olduğunda, DurumHazır değil olur ve İleti sütunu etkin bağlantıların number_of_active_connections>görüntülenir<; örneğin: 1 Etkin bağlantılar. Veritabanını ayırmadan önce Bağlantıları Bırak'ı seçerek etkin bağlantıların bağlantısını kesmeniz gerekir.

      İleti hakkında daha fazla bilgi edinmek için, köprülenmiş metni seçerek Etkinlik İzleyicisi'ni açın.

  2. Tamam'ı seçin.

  3. Windows Gezgini'ni kullanarak veritabanı dosyalarını kaynak sunucudan hedef sunucuda aynı konuma taşıyın veya kopyalayın.

  4. Windows Gezgini'ni kullanarak, sunucu sertifikasının ve özel anahtar dosyasının yedeğini kaynak sunucudan hedef sunucuda aynı konuma taşıyın veya kopyalayın.

  5. SQL Server'ın hedef örneğinde bir veritabanı ana anahtarı oluşturun. Daha fazla bilgi için bu makalenin devamında yer alan Transact-SQL kullanma bölümüne bakın.

  6. Özgün sunucu sertifikası yedekleme dosyasını kullanarak sunucu sertifikasını yeniden oluşturun. Daha fazla bilgi için bu makalenin devamında yer alan Transact-SQL kullanma bölümüne bakın.

  7. SQL Server Management Studio'daki Nesne Gezgini'nde Veritabanları klasörüne sağ tıklayın ve Ekle...'yi seçin.

  8. Veritabanı Ekle iletişim kutusundaki Eklenecek veritabanları'nın altında Ekle'yi seçin.

  9. Veritabanı Dosyalarını Bul -server_name iletişim kutusunda, yeni sunucuya eklenecek veritabanı dosyasını seçin ve Tamam'ı seçin.

    Veritabanlarını Ekle iletişim kutusunda aşağıdaki seçenekler kullanılabilir.

    • Eklenecek veritabanları

      Seçili veritabanları hakkındaki bilgileri görüntüler.

    • <sütun başlığı yok>

      Ekleme işleminin durumunu gösteren bir simge görüntüler. Olası simgeler Durum açıklamasında açıklanmıştır.

    • MDF Dosya Konumu

      Seçili MDF dosyasının yolunu ve dosya adını görüntüler.

    • Veritabanı Adı

      Veritabanının adını görüntüler.

    • Farklı Ekle

      İsteğe bağlı olarak, veritabanı olarak eklenecek farklı bir ad belirtir.

    • Owner

      İsteğe bağlı olarak farklı bir sahip seçebileceğiniz olası veritabanı sahiplerinin açılan listesini sağlar.

    • Statü

      Veritabanının durumunu aşağıdaki tabloya göre görüntüler.

      İkon Durum metni Description
      (Simge yok) (Metin yok) Ekleme işlemi başlatılmadı veya bu nesne için bekliyor olabilir. İletişim kutusu açıldığında varsayılan değer budur.
      Yeşil, sağa işaret eden üçgen Devam ediyor Ekleme işlemi başlatıldı ancak tamamlanmadı.
      Yeşil onay işareti Success Nesne başarıyla eklendi.
      Beyaz çarpı içeren kırmızı daire Hata Ekleme işlemi bir hatayla karşılaştı ve başarıyla tamamlanamadı.
      İki siyah çeyrek (solda ve sağda) ve iki beyaz çeyrek (üstte ve altta) içeren daire Durduruldu Kullanıcı işlemi durdurduğu için ekleme işlemi başarıyla tamamlanmadı.
      Saat yönünün tersine işaret eden eğri ok içeren daire Geri Alma Ekleme işlemi başarılı oldu, ancak başka bir nesnenin eklendiği sırada oluşan bir hata nedeniyle geri alındı.
    • Message

      Boş bir ileti veya "Dosya bulunamadı" köprüsü görüntüler.

    • Add

      Gerekli ana veritabanı dosyalarını bulun. Kullanıcı bir .mdf dosyası seçtiğinde, kılavuz eklemek için geçerli bilgiler veritabanlarının ilgili alanlarına otomatik olarak doldurulur.

    • Remove

      Kılavuz eklemek için seçili dosyayı Veritabanlarından kaldırır.

    • "<database_name>" veritabanı ayrıntıları

      Eklenecek dosyaların adlarını görüntüler. Dosyanın yol adını doğrulamak veya değiştirmek için Gözat düğmesini (...) seçin.

      Uyarı

      Dosya yoksa İleti sütununda "Bulunamadı" ifadesi görüntülenir. Günlük dosyası bulunamazsa, başka bir dizinde bulunur veya silinmiştir. Veritabanı ayrıntıları kılavuzundaki dosya yolunu doğru konuma işaret etmek için güncelleştirmeniz veya günlük dosyasını kılavuzdan kaldırmanız gerekir. Bir .ndf veri dosyası bulunamazsa, kılavuzdaki yolunu doğru konuma işaret eden şekilde güncelleştirmeniz gerekir.

    • Özgün Dosya Adı

      Veritabanına ait ekli dosyanın adını görüntüler.

    • Dosya Türü

      Dosya, Veri veya Günlük türünü gösterir.

    • Geçerli Dosya Yolu

      Seçili veritabanı dosyasının yolunu görüntüler. Yol el ile düzenlenebilir.

    • Message

      Boş bir ileti veya "Dosya bulunamadı" köprüsü görüntüler.

Transact-SQL kullanma

  1. Nesne Gezgini'nde Veritabanı Motoru'nun bir örneğine bağlanın.

  2. Standart araç çubuğunda, Yeni Sorgu'yu seçin.

  3. Aşağıdaki örneği kopyalayıp sorgu penceresine yapıştırın ve Yürüt'e tıklayın.

    -- Detach the TDE protected database from the source server.
    USE master;
    GO
    
    EXECUTE 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 = '<password>';
    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 = '<password>');
    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
    

Daha fazla bilgi için bakınız: