EKM Kullanarak SQL Server'da saydam veri şifrelemesini etkinleştirme

Şunlar için geçerlidir: SQL Server

Bu makalede, Transact-SQL ile genişletilebilir anahtar yönetimi (EKM) modülünde depolanan asimetrik anahtarı kullanarak veritabanı şifreleme anahtarını korumak için SQL Server'da saydam veri şifrelemenin (TDE) nasıl etkinleştirileceği açıklanır.

TDE, veritabanı şifreleme anahtarı adı verilen bir simetrik anahtar kullanarak veritabanının tamamının depolamasını şifreler. Veritabanı şifreleme anahtarı, veritabanının veritabanı ana anahtarı (DMK) master tarafından korunan bir sertifika kullanılarak da korunabilir. DMK kullanarak veritabanı şifreleme anahtarını koruma hakkında daha fazla bilgi için bkz . Saydam veri şifrelemesi (TDE). SQL Server bir Azure Sanal Makinesinde çalışırken TDE'yi yapılandırma hakkında bilgi için bkz. Azure Key Vault (SQL Server) Kullanarak Genişletilebilir Anahtar Yönetimi. Azure anahtar kasasında bir anahtar kullanarak TDE'yi yapılandırma hakkında bilgi için bkz. SQL Şifreleme Özellikleri ile SQL Server Bağlayıcısı'nı kullanma.

Sınırlamalar

Veritabanı şifreleme anahtarı oluşturmak ve veritabanını şifrelemek için yüksek ayrıcalıklı bir kullanıcı (sistem yöneticisi gibi) olmanız gerekir. EKM modülünün kimliğinizi doğrulayabilmesi gerekir.

Başlangıçta Veritabanı Altyapısı veritabanını açmalıdır. EKM'nin kimliğini doğrulayan bir kimlik bilgisi oluşturun ve bunu asimetrik anahtara göre oturum açma bilgilerine ekleyin. Kullanıcılar bu oturum açma bilgilerini kullanarak oturum açamaz, ancak Veritabanı Altyapısı EKM cihazıyla kimliğini doğrulayabilir.

EKM modülünde depolanan asimetrik anahtarı kaybederseniz SQL Server veritabanını açamaz. EKM sağlayıcınız asimetrik anahtarı yedeklemenize izin veriyorsa bir yedekleme oluşturun ve güvenli bir konumda depolayın.

EKM sağlayıcınızın gerektirdiği seçenekler ve parametreler, aşağıdaki kod örneğinde sağlananlardan farklı olabilir. Daha fazla bilgi için ekm sağlayıcınıza bakın.

Permissions

Aşağıdaki izinlere ihtiyacınız vardır:

  • Yapılandırma seçeneğini değiştirmek ve RECONFIGURE deyimini çalıştırmak için ALTER SETTINGS sunucu düzeyinde izin gereklidir. sysadmin ve serveradmin sabit sunucu rolleri izni örtük olarak tutarALTER SETTINGS.

  • ALTER ANY CREDENTIAL izni.

  • ALTER ANY LOGIN izni.

  • CREATE ASYMMETRIC KEY izni.

  • CONTROL veritabanı üzerinde şifreleme yapma izni.

Transact-SQL kullanma

  1. EKM sağlayıcısı tarafından sağlanan dosyaları SQL Server bilgisayarında uygun bir konuma kopyalayın. Bu örnekte klasörünü kullanacağız C:\EKM_Files .

  2. EKM sağlayıcınızın gerektirdiği şekilde bilgisayara sertifika yükleyin.

    Uyarı

    SQL Server bir EKM sağlayıcısı sağlamaz. Her EKM sağlayıcısının kullanıcıları yüklemek, yapılandırmak ve yetkilendirmek için farklı yordamları olabilir. Bu adımı tamamlamak için EKM sağlayıcı belgelerinize başvurun.

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

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

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

    -- Enable advanced options.
    EXECUTE sp_configure 'show advanced options', 1;
    GO
    
    RECONFIGURE;
    GO
    
    -- Enable EKM provider
    EXECUTE sp_configure 'EKM provider enabled', 1;
    GO
    
    RECONFIGURE;
    GO
    
    -- Create a cryptographic provider, which we have chosen to call "EKM_Prov," based on an EKM provider
    CREATE CRYPTOGRAPHIC PROVIDER EKM_Prov
        FROM FILE = 'C:\EKM_Files\KeyProvFile.dll';
    GO
    
    -- Create a credential that will be used by system administrators.
    CREATE CREDENTIAL sa_ekm_tde_cred
        WITH IDENTITY = 'Identity1',
        SECRET = '<password>' FOR CRYPTOGRAPHIC PROVIDER EKM_Prov;
    GO
    
    -- Add the credential to a high privileged user such as your
    -- own domain login in the format [DOMAIN\login].
    ALTER LOGIN [Contoso\Mary] ADD CREDENTIAL sa_ekm_tde_cred;
    GO
    
    -- create an asymmetric key stored inside the EKM provider
    USE master;
    GO
    
    CREATE ASYMMETRIC KEY ekm_login_key
         FROM PROVIDER [EKM_Prov]
             WITH ALGORITHM = RSA_2048,
             PROVIDER_KEY_NAME = 'SQL_Server_Key';
    GO
    
    -- Create a credential that will be used by the Database Engine.
    CREATE CREDENTIAL ekm_tde_cred
        WITH IDENTITY = 'Identity2', SECRET = '<secret>'
        FOR CRYPTOGRAPHIC PROVIDER EKM_Prov;
    
    -- Add a login used by TDE, and add the new credential to the login.
    CREATE LOGIN EKM_Login
        FROM ASYMMETRIC KEY ekm_login_key;
    GO
    
    ALTER LOGIN EKM_Login
        ADD CREDENTIAL ekm_tde_cred;
    GO
    
    -- Create the database encryption key that will be used for TDE.
    USE AdventureWorks2022;
    GO
    
    CREATE DATABASE ENCRYPTION KEY
        WITH ALGORITHM = AES_128
        ENCRYPTION BY SERVER ASYMMETRIC KEY ekm_login_key;
    GO
    
    -- Alter the database to enable transparent data encryption.
    ALTER DATABASE AdventureWorks2022
        SET ENCRYPTION ON;
    GO