Aracılığıyla paylaş


SQL Şifreleme Özellikleri ile SQL Server Bağlayıcısı Kullanma

Şunlar için geçerlidir: SQL Server

Azure Key Vault tarafından korunan bir asimetrik anahtar kullanan yaygın SQL Server şifreleme etkinlikleri aşağıdaki üç alanı içerir.

  • Azure Key Vault'tan Asimetrik Anahtar kullanarak Saydam Veri Şifrelemesi

  • Key Vault'tan Asimetrik Anahtar Kullanarak Yedeklemeleri Şifreleme

  • Anahtar Kasasından Asimetrik Anahtar Kullanarak Sütun Düzeyinde Şifreleme

Bu konudaki adımları takip etmeden önce Azure Key Vault Kullanarak Genişletilebilir Anahtar Yönetimi için Kurulum Adımları konusunun IV ile I. bölümlerini tamamlayın.

Uyarı

1.0.0.440 ve daha eski sürümler değiştirilmiştir ve artık üretim ortamlarında desteklenmez. Microsoft İndirme Merkezi'ni ziyaret ederek ve "SQL Server Bağlayıcısı Yükseltmesi" altındaki SQL Server Bağlayıcısı Bakım ve Sorun Giderme sayfasındaki yönergeleri kullanarak sürüm 1.0.1.0 veya sonraki bir sürüme yükseltin.

Uyarı

Microsoft Entra Id daha önce Azure Active Directory (Azure AD) olarak biliniyordu.

Azure Key Vault'tan Asimetrik Anahtar kullanarak Saydam Veri Şifrelemesi

Azure Key Vault Kullanarak Genişletilebilir Anahtar Yönetimi için Kurulum Adımları konusunun IV ile I. Bölümleri tamamladıktan sonra, TDE kullanarak veritabanı şifreleme anahtarını şifrelemek için Azure Key Vault anahtarını kullanın. PowerShell kullanarak anahtarları döndürme hakkında daha fazla bilgi için bkz. PowerShell kullanarak Saydam Veri Şifrelemesi (TDE) koruyucuyu döndürme.

Önemli

Geçiş sonrasında anahtarın önceki sürümlerini silmeyin. Anahtarlar devredildiğinde, eski veritabanı yedeklemeleri, yedeklenen günlük dosyaları ve işlem günlüğü dosyaları gibi bazı veriler önceki anahtarlarla şifrelenir.

Bir kimlik bilgisi ve oturum açma bilgisi oluşturmanız ve veritabanındaki verileri ve günlükleri şifreleyecek bir veritabanı şifreleme anahtarı oluşturmanız gerekir. Veritabanını şifrelemek için veritabanında CONTROL izni gerekir. Aşağıdaki grafikte Azure Key Vault kullanılırken şifreleme anahtarının hiyerarşisi gösterilmektedir.

Azure Key Vault kullanılırken şifreleme anahtarının hiyerarşisini gösteren diyagram.

  1. TDE için kullanılacak Veritabanı Altyapısı için bir SQL Server kimlik bilgisi oluşturma

    Veritabanı Altyapısı, veritabanı yüklemesi sırasında Key Vault'a erişmek için Microsoft Entra uygulama kimlik bilgilerini kullanır. Verilen Key Vault izinlerini sınırlamak için Veritabanı Altyapısı için 1. Adımda açıklandığı gibi başka bir İstemci Kimliği ve Gizli Dizi oluşturmanızı öneririz.

    Aşağıdaki Transact-SQL betiğini aşağıdaki yollarla değiştirin:

    • IDENTITY argümanını (ContosoDevKeyVault), Azure Key Vault'unuzu işaret edecek şekilde değiştirin.

      • Genel Azure kullanıyorsanız, IDENTITY bağımsız değişkenini Azure Key Vault'unuzun adıyla (Bölüm II'den) değiştirin.
      • Özel bir Azure bulutu (örneğin Azure Kamu, 21Vianet tarafından sağlanan Azure veya Azure Almanya) kullanıyorsanız, IDENTITY bağımsız değişkenini, Bölüm II'de döndürülen 3. adımdaki Kasa URI'siyle değiştirin. Kasa URI'sine "https://" eklemeyin.
    • SECRET bağımsız değişkeninin ilk bölümünü 1. Adımdan Microsoft Entra uygulaması İstemci Kimliği ile değiştirin. Bu örnekte İstemci Kimliği şeklindedir EF5C8E094D2A4A769998D93440D8115D.

      Önemli

      İstemci Kimliği'nden kısa çizgileri kaldırmanız gerekir.

    • Bağımsız değişkenin SECRET ikinci bölümünü, Bölüm I'den gelen İstemci Gizli Anahtarı ile tamamlayın. Bu örnekte, Bölüm 1'deki İstemci Gizli AnahtarıReplaceWithAADClientSecret.

    • SECRET bağımsız değişkeninin son dizesi, kısa çizgi içermeyen uzun bir harf ve sayı dizisi olacaktır.

    USE master;  
    CREATE CREDENTIAL Azure_EKM_TDE_cred   
        WITH IDENTITY = 'ContosoDevKeyVault', -- for global Azure
        -- WITH IDENTITY = 'ContosoDevKeyVault.vault.usgovcloudapi.net', -- for Azure Government
        -- WITH IDENTITY = 'ContosoDevKeyVault.vault.azure.cn', -- for Microsoft Azure operated by 21Vianet
        -- WITH IDENTITY = 'ContosoDevKeyVault.vault.microsoftazure.de', -- for Azure Germany   
        SECRET = 'EF5C8E094D2A4A769998D93440D8115DReplaceWithAADClientSecret'   
    FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov;  
    
  2. TDE için Veritabanı Altyapısına yönelik bir SQL Server oturumu oluşturun

    Bir SQL Server girişi oluşturun ve 1. adım'dan kimlik bilgilerini ona ekleyin. Bu Transact-SQL örnek, daha önce içeri aktarılan anahtarın aynısını kullanır.

    USE master;  
    -- Create a SQL Server login associated with the asymmetric key   
    -- for the Database engine to use when it loads a database   
    -- encrypted by TDE.  
    CREATE LOGIN TDE_Login   
    FROM ASYMMETRIC KEY CONTOSO_KEY;  
    GO   
    
    -- Alter the TDE Login to add the credential for use by the   
    -- Database Engine to access the key vault  
    ALTER LOGIN TDE_Login   
    ADD CREDENTIAL Azure_EKM_TDE_cred ;  
    GO  
    
  3. Veritabanı Şifreleme Anahtarı (DEK) oluşturma

    DEK, veritabanı örneğindeki verilerinizi ve günlük dosyalarınızı şifreler ve ardından Azure Key Vault asimetrik anahtarıyla şifrelenir. DEK, SQL Server tarafından desteklenen herhangi bir algoritma veya anahtar uzunluğu kullanılarak oluşturulabilir.

    USE ContosoDatabase;  
    GO  
    
    CREATE DATABASE ENCRYPTION KEY   
    WITH ALGORITHM = AES_256   
    ENCRYPTION BY SERVER ASYMMETRIC KEY CONTOSO_KEY;  
    GO  
    
  4. TDE'i Aç

    -- Alter the database to enable transparent data encryption.  
    ALTER DATABASE ContosoDatabase   
    SET ENCRYPTION ON;  
    GO  
    

    Management Studio'yu kullanarak, Nesne Gezgini ile veritabanınıza bağlanarak TDE'nin açık olduğunu doğrulayın. Veritabanınıza sağ tıklayın, Görevler'in üzerine gelin ve ardından Veritabanı Şifrelemesini Yönet'e tıklayın.

    >

    Veritabanı Şifrelemesini Yönet iletişim kutusunda TDE'nin açık olduğunu ve DEK'yi hangi asimetrik anahtarın şifrelediğini onaylayın.

    Veritabanı Şifrelemesini Ayarla seçeneğinin seçili olduğu ve Şimdi TDE'nin açık olduğu sarı bir başlık bulunan Veritabanı Şifrelemesini Yönet iletişim kutusunun ekran görüntüsü.

    Alternatif olarak, aşağıdaki Transact-SQL betiğini yürütebilirsiniz. 3 şifreleme durumu şifrelenmiş bir veritabanını gösterir.

    USE MASTER  
    SELECT * FROM sys.asymmetric_keys  
    
    -- Check which databases are encrypted using TDE  
    SELECT d.name, dek.encryption_state   
    FROM sys.dm_database_encryption_keys AS dek  
    JOIN sys.databases AS d  
         ON dek.database_id = d.database_id;  
    

    Uyarı

    Herhangi tempdb bir veritabanı TDE'yi etkinleştirildiğinde veritabanı otomatik olarak şifrelenir.

Key Vault'tan Asimetrik Anahtar Kullanarak Yedeklemeleri Şifreleme

Şifrelenmiş yedeklemeler SQL Server 2014 (12.x) ile başlayarak desteklenir. Aşağıdaki örnek, anahtar kasasında asimetrik anahtarla korunan bir veri şifreleme anahtarını şifreleyen bir yedekleme oluşturur ve geri yükler.
Veritabanı Altyapısı, veritabanı yüklemesi sırasında Key Vault'a erişmek için Microsoft Entra uygulama kimlik bilgilerini kullanır. Verilen Key Vault izinlerini sınırlamak için Veritabanı Altyapısı için 1. Adımda açıklandığı gibi başka bir İstemci Kimliği ve Gizli Dizi oluşturmanızı öneririz.

  1. Veritabanı Altyapısı'nın Yedekleme Şifrelemesi için kullanacağı SQL Server kimlik bilgileri oluşturma

    Aşağıdaki Transact-SQL betiğini aşağıdaki yollarla değiştirin:

    • IDENTITY argümanını (ContosoDevKeyVault), Azure Key Vault'unuzu işaret edecek şekilde değiştirin.

      • Genel Azure kullanıyorsanız, IDENTITY bağımsız değişkenini Azure Key Vault'unuzun adıyla (Bölüm II'den) değiştirin.
      • Özel bir Azure bulutu (örneğin Azure Kamu, 21Vianet tarafından sağlanan Microsoft Azure veya Azure Almanya) kullanıyorsanız, IDENTITY bağımsız değişkenini Bölüm II, adım 3'te döndürülen Kasa URI'si ile değiştirin. Kasa URI'sine "https://" eklemeyin.
    • SECRET bağımsız değişkeninin ilk bölümünü 1. Adımdan Microsoft Entra uygulaması İstemci Kimliği ile değiştirin. Bu örnekte İstemci Kimliği şeklindedir EF5C8E094D2A4A769998D93440D8115D.

      Önemli

      İstemci Kimliği'nden kısa çizgileri kaldırmanız gerekir.

    • Bağımsız değişkenin SECRET ikinci bölümünü Bölüm I'den İstemci Gizli Anahtarı ile tamamlayın. Bu örnekte, Bölüm I'deki İstemci Gizli AnahtarıReplace-With-AAD-Client-Secret şeklindedir. Bağımsız değişkenin SECRET son dizesi, kısa çizgi içermeyen uzun bir harf ve sayı dizisi olacaktır.

      USE master;  
      
      CREATE CREDENTIAL Azure_EKM_Backup_cred   
          WITH IDENTITY = 'ContosoDevKeyVault', -- for global Azure
          -- WITH IDENTITY = 'ContosoDevKeyVault.vault.usgovcloudapi.net', -- for Azure Government
          -- WITH IDENTITY = 'ContosoDevKeyVault.vault.azure.cn', -- for Microsoft Azure operated by 21Vianet
          -- WITH IDENTITY = 'ContosoDevKeyVault.vault.microsoftazure.de', -- for Azure Germany   
          SECRET = 'EF5C8E094D2A4A769998D93440D8115DReplace-With-AAD-Client-Secret'   
      FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov;    
      
  2. Yedekleme Şifrelemesi için Veritabanı Altyapısı için SQL Server oturum açma bilgisi oluşturma

    Veritabanı Altyapısı tarafından şifreleme yedeklemeleri için kullanılacak bir SQL Server oturumu oluşturun ve 1. Adımdaki kimlik bilgilerini ekleyin. Bu Transact-SQL örnek, daha önce içeri aktarılan anahtarın aynısını kullanır.

    Önemli

    Bu anahtarı TDE için (yukarıdaki örnekte) veya sütun düzeyinde şifreleme (aşağıdaki örnek) için zaten kullandıysanız yedekleme şifrelemesi için aynı asimetrik anahtarı kullanamazsınız.

    Bu örnek, Bölüm IV, 5. Adım'da belirtildiği gibi, daha önce içeri aktarılabilen veya oluşturulabilen ve ana veritabanı için kullanılan anahtar kasasında depolanan CONTOSO_KEY_BACKUP asimetrik anahtarı kullanır.

    USE master;  
    
    -- Create a SQL Server login associated with the asymmetric key   
    -- for the Database engine to use when it is encrypting the backup.  
    CREATE LOGIN Backup_Login   
    FROM ASYMMETRIC KEY CONTOSO_KEY_BACKUP;  
    GO   
    
    -- Alter the Encrypted Backup Login to add the credential for use by   
    -- the Database Engine to access the key vault  
    ALTER LOGIN Backup_Login   
    ADD CREDENTIAL Azure_EKM_Backup_cred ;  
    GO  
    
  3. Veritabanını Yedekleme

    Anahtar kasasında depolanan asimetrik anahtarla şifrelemeyi belirten veritabanını yedekleyin.

    Aşağıdaki örnekte, veritabanı zaten TDE ile şifrelendiyse ve asimetrik anahtar TDE asimetrik anahtarından CONTOSO_KEY_BACKUP farklıysa yedeklemenin hem TDE asimetrik anahtarı CONTOSO_KEY_BACKUPhem de tarafından şifrelendiğini unutmayın. Yedeklemenin şifresini çözmek için hedef SQL Server örneğinin her iki anahtara da ihtiyacı olacaktır.

    USE master;  
    
    BACKUP DATABASE [DATABASE_TO_BACKUP]  
    TO DISK = N'[PATH TO BACKUP FILE]'   
    WITH FORMAT, INIT, SKIP, NOREWIND, NOUNLOAD,   
    ENCRYPTION(ALGORITHM = AES_256,   
    SERVER ASYMMETRIC KEY = [CONTOSO_KEY_BACKUP]);  
    GO  
    
  4. Veritabanını Geri Yükleme

    TDE ile şifrelenmiş bir veritabanı yedeğini geri yüklemek için, hedef SQL Server örneğinde önce şifreleme için kullanılan asimetrik Anahtar Kasası anahtarının bir kopyası olmalıdır. Bu şekilde elde edilebilir:

    • TDE için kullanılan özgün asimetrik anahtar artık Key Vault'ta değilse Key Vault anahtar yedeklemesini geri yükleyin veya yerel HSM'den anahtarı yeniden içeri aktarın. Önemli: Anahtarın parmak izinin veritabanı yedeklemesinde kaydedilen parmak iziyle eşleşmesi için anahtarın, daha önce adlandırıldığı anahtarla aynı Key Vault anahtar adıyla adlandırılması gerekir.

    • Hedef SQL Server örneğine 1. ve 2. Adımları uygulayın.

    • Hedef SQL Server örneğinin yedeklemeyi şifrelemek için kullanılan asimetrik anahtarlara erişimi olduğunda, veritabanını sunucuya geri yükleyin.

    Örnek geri yükleme kodu:

    RESTORE DATABASE [DATABASE_TO_BACKUP]  
    FROM DISK = N'[PATH TO BACKUP FILE]'   
        WITH FILE = 1, NOUNLOAD, REPLACE;  
    GO  
    

    Yedekleme seçenekleri hakkında daha fazla bilgi için bkz . YEDEKLEME (Transact-SQL).

Anahtar Kasasından Asimetrik Anahtar Kullanarak Sütun Düzeyinde Şifreleme

Aşağıdaki örnek, anahtar kasasında asimetrik anahtar tarafından korunan bir simetrik anahtar oluşturur. Ardından simetrik anahtar, veritabanındaki verileri şifrelemek için kullanılır.

Önemli

Bu anahtarı yedekleme şifrelemesi için zaten kullandıysanız sütun düzeyinde şifreleme için aynı asimetrik anahtarı kullanamazsınız.

Bu örnekte, CONTOSO_KEY_COLUMNS 3. Adımının 3. Bölümünde açıklandığı gibi, anahtar kasasında depolanan ve daha önce içeri aktarılabilir veya oluşturulabilen asimetrik anahtar kullanılır. Bu asimetrik anahtarı ContosoDatabase veritabanında kullanmak için, CREATE ASYMMETRIC KEY veritabanına anahtara bir başvuru sağlamak üzere ContosoDatabase deyimini yeniden yürütmeniz gerekir.

USE [ContosoDatabase];  
GO  
  
-- Create a reference to the key in the key vault  
CREATE ASYMMETRIC KEY CONTOSO_KEY_COLUMNS   
FROM PROVIDER [AzureKeyVault_EKM_Prov]  
WITH PROVIDER_KEY_NAME = 'ContosoDevRSAKey2',  
CREATION_DISPOSITION = OPEN_EXISTING;  
  
-- Create the data encryption key.  
-- The data encryption key can be created using any SQL Server   
-- supported algorithm or key length.  
-- The DEK will be protected by the asymmetric key in the key vault  
  
CREATE SYMMETRIC KEY DATA_ENCRYPTION_KEY  
    WITH ALGORITHM=AES_256  
    ENCRYPTION BY ASYMMETRIC KEY CONTOSO_KEY_COLUMNS;  
  
DECLARE @DATA VARBINARY(MAX);  
  
--Open the symmetric key for use in this session  
OPEN SYMMETRIC KEY DATA_ENCRYPTION_KEY   
DECRYPTION BY ASYMMETRIC KEY CONTOSO_KEY_COLUMNS;  
  
--Encrypt syntax  
SELECT @DATA = ENCRYPTBYKEY  
    (  
    KEY_GUID('DATA_ENCRYPTION_KEY'),   
    CONVERT(VARBINARY,'Plain text data to encrypt')  
    );  
  
-- Decrypt syntax  
SELECT CONVERT(VARCHAR, DECRYPTBYKEY(@DATA));  
  
--Close the symmetric key  
CLOSE SYMMETRIC KEY DATA_ENCRYPTION_KEY;  

Ayrıca Bkz.

Azure Key Vault Kullanarak Genişletilebilir Anahtar Yönetimi için Kurulum Adımları
Azure Key Vault ile Genişletilebilir Anahtar Yönetimi
EKM sağlayıcı etkinleştirilmiş Sunucu Yapılandırma Seçeneği
SQL Server Bağlayıcısı Bakım ve Sorun Giderme Adımları