Bagikan melalui


Mengaktifkan enkripsi data transparan di SQL Server Menggunakan EKM

Berlaku untuk:SQL Server

Artikel ini menjelaskan cara mengaktifkan enkripsi data transparan (TDE) di SQL Server untuk melindungi kunci enkripsi database dengan menggunakan kunci asimetris yang disimpan dalam modul manajemen kunci yang dapat diperluas (EKM) dengan Transact-SQL.

TDE mengenkripsi penyimpanan seluruh database dengan menggunakan kunci simetris yang disebut kunci enkripsi database. Kunci enkripsi database juga dapat dilindungi menggunakan sertifikat, yang dilindungi oleh kunci master database (DMK) master database. Untuk informasi selengkapnya tentang melindungi kunci enkripsi database dengan menggunakan DMK, lihat Enkripsi data transparan (TDE). Untuk informasi tentang mengonfigurasi TDE saat SQL Server berjalan di Azure Virtual Machine, lihat Manajemen Kunci yang Dapat Diperluas Menggunakan Azure Key Vault (SQL Server). Untuk informasi tentang mengonfigurasi TDE menggunakan kunci di brankas kunci Azure, lihat Menggunakan Konektor SQL Server dengan Fitur Enkripsi SQL.

Keterbatasan

Anda harus menjadi pengguna dengan hak istimewa tinggi (seperti administrator sistem) untuk membuat kunci enkripsi database dan mengenkripsi database. Modul EKM harus dapat mengautentikasi pengguna tersebut.

Saat memulai, Mesin Database harus membuka database. Anda harus membuat kredensial yang akan diautentikasi oleh EKM, dan menambahkannya ke login yang didasarkan pada kunci asimetris. Pengguna tidak dapat masuk menggunakan login tersebut, tetapi Mesin Database dapat mengautentikasi dirinya sendiri dengan perangkat EKM.

Jika kunci asimetris yang disimpan dalam modul EKM hilang, database tidak dapat dibuka oleh SQL Server. Jika penyedia EKM memungkinkan Anda mencadangkan kunci asimetris, Anda harus membuat cadangan dan menyimpannya di lokasi yang aman.

Opsi dan parameter yang diperlukan oleh penyedia EKM Anda dapat berbeda dari apa yang disediakan dalam contoh kode berikut. Untuk informasi selengkapnya, lihat penyedia EKM Anda.

Izin-izin

Artikel ini menggunakan izin berikut:

  • Untuk mengubah opsi konfigurasi dan menjalankan RECONFIGURE pernyataan, Anda harus diberikan ALTER SETTINGS izin tingkat server. Izin ALTER SETTINGS secara implisit dimiliki oleh peran server tetap sysadmin dan serveradmin.

  • Memerlukan ALTER ANY CREDENTIAL izin.

  • Memerlukan ALTER ANY LOGIN izin.

  • Memerlukan CREATE ASYMMETRIC KEY izin.

  • CONTROL Memerlukan izin pada database untuk mengenkripsi database.

Menggunakan Transact-SQL

  1. Salin file yang disediakan oleh penyedia EKM ke lokasi yang sesuai di komputer SQL Server. Dalam contoh ini, kita menggunakan C:\EKM_Files folder .

  2. Instal sertifikat ke komputer sesuai kebutuhan penyedia EKM Anda.

    Catatan

    SQL Server tidak menyediakan penyedia EKM. Setiap penyedia EKM dapat memiliki prosedur yang berbeda untuk menginstal, mengonfigurasi, dan mengotorisasi pengguna. Untuk menyelesaikan langkah ini, lihat dokumentasi penyedia EKM Anda.

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

  4. Pada bilah Standar, pilih Kueri Baru.

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

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