Aracılığıyla paylaş


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 bu kullanıcının kimliğini doğrulayabilmesi gerekir.

Başlangıçta Veritabanı Altyapısı veritabanını açmalıdır. EKM tarafından kimliği doğrulanacak bir kimlik bilgisi oluşturmanız ve bunu asimetrik anahtarı temel alan bir oturum açma bilgilerine eklemeniz gerekir. 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 kaybolursa veritabanı SQL Server tarafından açılamaz. EKM sağlayıcısı asimetrik anahtarı yedeklemenize izin veriyorsa bir yedekleme oluşturup güvenli bir konumda depolamanız gerekir.

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

Permissions

Bu makalede aşağıdaki izinler kullanılır:

  • Yapılandırma seçeneğini değiştirmek ve deyimini RECONFIGURE çalıştırmak için sunucu düzeyinde izin verilmelidir ALTER SETTINGS . İzin ALTER SETTINGS , sysadmin ve serveradmin sabit sunucu rolleri tarafından örtük olarak tutulur.

  • İzin gerektirir ALTER ANY CREDENTIAL .

  • İzin gerektirir ALTER ANY LOGIN .

  • İzin gerektirir CREATE ASYMMETRIC KEY .

  • CONTROL Veritabanını şifrelemek için veritabanında izin gerektirir.

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