Mengonfigurasi Integrasi Azure Key Vault untuk SQL Server di komputer virtual Azure (Resource Manager)

Berlaku untuk:SQL Server di Azure VM

Ada beberapa fitur enkripsi SQL Server, seperti enkripsi data transparan (TDE), enkripsi tingkat kolom (CLE), dan enkripsi cadangan. Bentuk enkripsi ini mengharuskan Anda untuk mengelola dan menyimpan kunci kriptografi yang Anda gunakan untuk enkripsi. Layanan Azure Key Vault dirancang untuk meningkatkan keamanan dan manajemen kunci ini di lokasi yang aman dan sangat tersedia. SQL Server Connector memungkinkan SQL Server untuk menggunakan kunci ini dari Azure Key Vault.

Jika Anda menjalankan SQL Server secara lokal, ada langkah-langkah yang dapat Anda ikuti untuk mengakses Azure Key Vault dari instans SQL Server lokal Anda. Tetapi untuk SQL Server di komputer virtual Azure, Anda dapat menghemat waktu dengan menggunakan fitur Integrasi Azure Key Vault.

Catatan

Integrasi Azure Key Vault hanya tersedia untuk Edisi Enterprise, Pengembang, dan Evaluasi SQL Server. Dimulai dengan Microsoft SQL Server 2019, edisi Standard juga didukung.

Ketika fitur ini diaktifkan, fitur ini secara otomatis memasang SQL Server Connector, mengonfigurasi penyedia EKM untuk mengakses Azure Key Vault, dan membuat info masuk untuk memungkinkan Anda mengakses vault Anda. Jika Anda melihat langkah-langkah dalam dokumentasi lokal yang disebutkan sebelumnya, Anda dapat melihat bahwa fitur ini mengotomatiskan langkah 2 dan 3. Satu-satunya hal yang masih perlu Anda lakukan secara manual adalah membuat brankas kunci dan kunci. Dari sana, seluruh persiapan komputer virtual SQL Server Anda sudah otomatis. Setelah fitur ini menyelesaikan persiapan ini, Anda dapat menjalankan pernyataan Transact-SQL (T-SQL) untuk mulai mengenkripsi database atau cadangan Anda seperti biasa.

Catatan

Anda juga dapat mengonfigurasi integrasi Key Vault dengan menggunakan templat. Untuk informasi selengkapnya, lihat templat mulai cepat Azure untuk integrasi Azure Key Vault.

Mempersiapkan Integrasi AKV

Untuk menggunakan Integrasi Azure Key Vault untuk mengonfigurasi SQL Server VM Anda, ada beberapa prasyarat:

  1. Memasang Azure PowerShell
  2. Membuat penyewa Microsoft Entra
  3. Buat brankas kunci

Bagian berikut ini menjelaskan prasyarat ini dan informasi yang perlu Anda kumpulkan untuk kemudian menjalankan PowerShell cmdlets.

Catatan

Artikel ini menggunakan modul Azure Az PowerShell, yang merupakan modul PowerShell yang direkomendasikan untuk berinteraksi dengan Azure. Untuk mulai menggunakan modul Az PowerShell, lihat Menginstal Azure PowerShell. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

Menginstal Azure PowerShell

Pastikan Anda telah menginstal dan mengonfigurasikan modul Azure PowerShell terbaru. Untuk informasi selengkapnya, lihat Cara menginstal dan mengonfigurasi Azure PowerShell.

Mendaftarkan aplikasi di ID Microsoft Entra Anda

Pertama, Anda harus memiliki penyewa Microsoft Entra di langganan Anda. Di antara banyak manfaat, hal ini memungkinkan Anda untuk memberikan izin bagi pengguna dan aplikasi tertentu ke brankas kunci Anda untuk.

Selanjutnya, daftarkan aplikasi dengan ID Microsoft Entra. Ini memberi Anda akun Perwakilan Layanan yang memiliki akses ke brankas kunci Anda, yang dibutuhkan VM Anda. Di artikel Azure Key Vault, Anda dapat menemukan langkah-langkah ini di bagian Daftarkan aplikasi dengan ID Microsoft Entra, atau Anda dapat melihat langkah-langkah dengan cuplikan layar di bagian Dapatkan identitas untuk aplikasi dari posting blog ini. Sebelum menyelesaikan langkah-langkah tersebut, Anda harus mengumpulkan informasi berikut selama pendaftaran yang diperlukan nanti ketika Anda mengaktifkan Integrasi Azure Key Vault pada SQL VM Anda.

  • Setelah aplikasi ditambahkan, temukan ID Aplikasi (juga dikenal sebagai ClientID atau AppID) di panel Aplikasi terdaftar. ID aplikasi ditetapkan kemudian ke parameter $spName (Nama Prinsipal Layanan) di skrip PowerShell untuk mengaktifkan Integrasi Azure Key Vault.

    Application ID

  • Selama melakukan langkah-langkah untuk membuat kunci Anda, salin rahasia untuk kunci seperti yang ditunjukkan pada tangkapan layar berikut. Rahasia kunci ini ditetapkan kemudian ke parameter $spSecret (Rahasia Prinsipal Layanan) dalam skrip PowerShell.

    AAD secret

  • ID aplikasi dan rahasia juga akan digunakan untuk membuat info masuk di SQL Server.

  • Anda harus mengotorisasi ID aplikasi baru ini (atau ID klien) agar memiliki izin akses berikut: dapatkan, wrapKey,unwrapKey. Langkah ini dilakukan dengan Set-AzKeyVaultAccessPolicy cmdlet. Untuk informasi selengkapnya, lihat Gambaran umum pemulihan Azure Key Vault.

Buat brankas kunci

Untuk menggunakan Azure Key Vault untuk menyimpan kunci yang akan Anda gunakan untuk enkripsi di VM, Anda memerlukan akses ke brankas kunci. Jika Anda belum menyiapkan brankas kunci Anda, buatlah dengan mengikuti langkah-langkah di artikel Memulai dengan Azure Key Vault. Sebelum menyelesaikan langkah-langkah ini, ada beberapa informasi yang perlu Anda kumpulkan selama penyiapan ini yang diperlukan nanti saat Anda mengaktifkan Integrasi Azure Key Vault pada komputer virtual SQL Anda.

New-AzKeyVault -VaultName 'ContosoKeyVault' -ResourceGroupName 'ContosoResourceGroup' -Location 'East Asia'

Saat Anda masuk ke langkah Buat brankas kunci, perhatikan properti vaultUri yang dikembalikan, yang merupakan URL brankas kunci. Dalam contoh yang disediakan dalam langkah itu, yang ditunjukkan nanti, nama brankas kunci adalah ContosoKeyVault, oleh karena itu URL brankas kunci adalah https://contosokeyvault.vault.azure.net/.

URL brankas utama ditetapkan kemudian ke parameter $akvURL di skrip PowerShell untuk mengaktifkan Integrasi Azure Key Vault.

Setelah brankas kunci dibuat, kita perlu menambahkan kunci ke brankas kunci, kunci ini akan dirujuk ketika kita membuat kunci asimetris di SQL Server nantinya.

Catatan

Extensible Key Management (EKM) Provider versi 1.0.4.0 diinstal pada mesin virtual SQL Server melalui ekstensi infrastruktur SQL sebagai layanan (IaaS). Meningkatkan ekstensi SQL IaaS Agent tidak akan memperbarui versi penyedia. Harap pertimbangkan untuk meningkatkan versi penyedia EKM secara manual jika diperlukan (misalnya, saat melakukan migrasi ke SQL Managed Instance).

Mengaktifkan dan mengonfigurasi integrasi Azure Key Vault

Anda dapat mengaktifkan integrasi Key Vault selama provisi atau mengonfigurasinya untuk komputer virtual yang ada.

VM baru

Jika Anda menyediakan komputer virtual SQL baru dengan Resource Manager, portal Microsoft Azure menyediakan cara untuk mengaktifkan integrasi Azure Key Vault.

SQL Azure Key Vault Integration

Untuk panduan provisi secara mendetail, lihat Provisi komputer virtual SQL di portal Microsoft Azure.

Komputer virtual yang sudah ada

Untuk komputer virtual SQL yang ada, buka sumber daya komputer virtual SQL Anda dan pilih Keamanan di bawah Pengaturan. Pilih Aktifkan untuk mengaktifkan integrasi Azure Key Vault.

Cuplikan layar berikut menunjukkan cara mengaktifkan Azure Key Vault di portal untuk komputer virtual SQL Server yang ada (instans SQL Server ini menggunakan port non-default 1401):

SQL Key Vault integration for existing VMs

Setelah selesai, pilih tombol Terapkan di bagian bawah halaman Keamanan untuk menyimpan perubahan Anda.

Catatan

Nama informasi masuk yang kami buat di sini akan dipetakan ke login SQL nanti. Ini memungkinkan login SQL untuk mengakses brankas kunci.

Setelah mengaktifkan Integrasi Azure Key Vault, Anda dapat mengaktifkan enkripsi SQL Server pada SQL VM Anda. Pertama, Anda harus membuat kunci asimetris di dalam brankas kunci dan kunci simetris dalam SQL Server pada VM Anda. Kemudian, Anda akan dapat mengeksekusi pernyataan T-SQL guna mengaktifkan enkripsi untuk database dan cadangan Anda.

Ada beberapa bentuk enkripsi yang dapat Anda manfaatkan:

Skrip Transact-SQL berikut ini memberikan contoh untuk masing-masing area ini.

Prasyarat untuk contoh

Setiap contoh didasarkan pada dua prasyarat: kunci asimetris dari brankas kunci Anda yang disebut CONTOSO_KEY dan kredensial yang dibuat oleh fitur Integrasi AKV yang disebut Azure_EKM_cred. Perintah Transact-SQL berikut ini mengatur prasyarat ini untuk menjalankan contoh.

USE master;
GO

--create credential
--The <<SECRET>> here requires the <Application ID> (without hyphens) and <Secret> to be passed together without a space between them.
CREATE CREDENTIAL Azure_EKM_cred
    WITH IDENTITY = 'keytestvault', --keyvault
    SECRET = '<<SECRET>>'
FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov;


--Map the credential to a SQL login that has sysadmin permissions. This allows the SQL login to access the key vault when creating the asymmetric key in the next step.
ALTER LOGIN [SQL_Login]
ADD CREDENTIAL Azure_EKM_cred;


CREATE ASYMMETRIC KEY CONTOSO_KEY
FROM PROVIDER [AzureKeyVault_EKM_Prov]
WITH PROVIDER_KEY_NAME = 'KeyName_in_KeyVault',  --The key name here requires the key we created in the key vault
CREATION_DISPOSITION = OPEN_EXISTING;

Transparent Data Encryption (TDE)

  1. Buat data masuk SQL Server yang akan digunakan oleh Mesin Database untuk TDE, lalu tambahkan kredensial padanya.

    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 EKM_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 EKM_Login
    ADD CREDENTIAL Azure_EKM_cred;
    GO
    
  2. Buat kunci enkripsi database yang akan digunakan untuk TDE.

    USE ContosoDatabase;
    GO
    
    CREATE DATABASE ENCRYPTION KEY 
    WITH ALGORITHM = AES_128 
    ENCRYPTION BY SERVER ASYMMETRIC KEY CONTOSO_KEY;
    GO
    
    -- Alter the database to enable transparent data encryption.
    ALTER DATABASE ContosoDatabase
    SET ENCRYPTION ON;
    GO
    

Cadangan terenkripsi

  1. Buat data masuk SQL Server yang akan digunakan oleh Mesin Database untuk mengenkripsi cadangan, dan tambahkan kredensial kepadanya.

    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 EKM_Login
    FROM ASYMMETRIC KEY CONTOSO_KEY;
    GO
    
    -- Alter the Encrypted Backup Login to add the credential for use by
    -- the Database Engine to access the key vault
    ALTER LOGIN EKM_Login
    ADD CREDENTIAL Azure_EKM_cred ;
    GO
    
  2. Cadangkan database yang menentukan enkripsi dengan kunci asimetris yang disimpan dalam brankas kunci.

    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]);
    GO
    

Enkripsi Tingkat Kolom (CLE)

Skrip ini membuat kunci simetris yang dilindungi oleh kunci asimetris di brankas kunci, lalu menggunakan kunci simetris untuk mengenkripsi data dalam database.

CREATE SYMMETRIC KEY DATA_ENCRYPTION_KEY
WITH ALGORITHM=AES_256
ENCRYPTION BY ASYMMETRIC KEY CONTOSO_KEY;

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;

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

Sumber daya tambahan

Untuk informasi selengkapnya tentang cara menggunakan fitur enkripsi ini, lihat Menggunakan EKM dengan Fitur Enkripsi SQL Server.

Perhatikan bahwa langkah-langkah dalam artikel ini mengasumsikan bahwa Anda sudah memiliki SQL Server yang berjalan di komputer virtual Azure. Jika tidak, lihat Menyediakan komputer virtual SQL Server di Azure. Untuk panduan lain tentang menjalankan SQL Server di Azure VM, lihat Gambaran Umum SQL Server di Azure Windows Virtual Machines.

Langkah berikutnya

Untuk informasi keamanan selengkapnya, tinjau Pertimbangan keamanan untuk SQL Server di Azure VM.