PowerShell dan Azure CLI: Aktifkan Enkripsi Data Transparan dengan kunci yang dikelola pelanggan dari Azure Key Vault

Berlaku untuk:Azure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics

Artikel ini menjelaskan cara menggunakan kunci dari Azure Key Vault untuk enkripsi data transparan (TDE) di Azure SQL Database atau Azure Synapse Analytics. Untuk mempelajari selengkapnya tentang TDE dengan integrasi Azure Key Vault - Dukungan Bring Your Own Key (BYOK), kunjungi TDE dengan kunci yang dikelola pelanggan di Azure Key Vault. Jika Anda mencari petunjuk portal Azure tentang cara mengaktifkan TDE dengan kunci yang dikelola pelanggan dari Azure Key Vault, lihat Membuat server yang dikonfigurasi dengan identitas terkelola yang ditetapkan pengguna dan TDE yang dikelola pelanggan.

Artikel ini berlaku untuk Azure SQL Database, Azure SQL Managed Instance, dan Azure Synapse Analytics (kumpulan SQL khusus (sebelumnya SQL DW)). Untuk dokumentasi tentang Enkripsi Data Transparan untuk kumpulan SQL khusus di dalam ruang kerja Synapse, lihat enkripsi Azure Synapse Analytics.

Catatan

Azure SQL sekarang mendukung penggunaan kunci RSA yang disimpan dalam HSM Terkelola sebagai Pelindung TDE. Azure Key Vault Managed HSM adalah layanan cloud yang sepenuhnya terkelola, dengan ketersediaan tingkat tinggi, penyewa tunggal, dan memenuhi standar layanan cloud yang memungkinkan Anda melindungi kunci kriptografi untuk aplikasi cloud Anda, menggunakan HSM tervalidasi FIPS 140-2 Tingkat 3. Pelajari lebih lanjut tentang Managed HSMs.

Catatan

ID Microsoft Entra sebelumnya dikenal sebagai Azure Active Directory (Azure AD).

Prasyarat untuk PowerShell

  • Anda harus memiliki langganan Azure dan menjadi admin pada langganan tersebut.
  • [Direkomendasikan tetapi Opsional] Memiliki modul keamanan perangkat keras (HSM) atau penyimpanan kunci lokal untuk membuat salinan lokal materi kunci TDE Protector.
  • Anda harus memiliki Azure PowerShell yang diinstal dan bekerja.
  • Buat Azure Key Vault dan Kunci yang akan digunakan untuk TDE.
  • Kunci harus memiliki atribut berikut yang akan digunakan untuk TDE:
    • Tanggal aktivasi (jika ditetapkan) harus berupa tanggal dan waktu di masa lalu
    • Tanggal kedaluwarsa (jika ditetapkan) harus berupa tanggal dan waktu mendatang
    • Kunci harus dalam status Diaktifkan
    • Mampu melakukan operasi get, wrap key, unwrap key
  • Untuk menggunakan kunci HSM Terkelola, ikuti petunjuk untuk membuat dan mengaktifkan HSM Terkelola menggunakan Azure CLI

Untuk instruksi instalasi modul Az, lihat Instal Azure PowerShell. Untuk cmdlet khusus, lihat AzureRM.Sql.

Untuk detail tentang Key Vault, lihat instruksi PowerShell dari Key Vault dan Cara menggunakan penghapusan sementara Key Vault dengan PowerShell.

Penting

Modul PowerShell Azure Resource Manager (RM) masih didukung, tetapi semua pengembangan di masa depan adalah untuk modul Az.Sql. Modul AzureRM akan terus menerima perbaikan bug hingga setidaknya bulan Desember 2020. Argumen untuk perintah dalam modul Az dan dalam modul AzureRm secara substansial identik. Untuk informasi selengkapnya tentang kompatibilitas keduanya, lihat Memperkenalkan modul Azure PowerShell Az baru.

Menetapkan identitas Microsoft Entra ke server Anda

Jika Anda memiliki server yang sudah ada, gunakan yang berikut ini untuk menambahkan identitas Microsoft Entra ke server Anda:

$server = Set-AzSqlServer -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName> -AssignIdentity

Jika Anda membuat server, gunakan cmdlet New-AzSqlServer dengan tag -Identity untuk menambahkan identitas Microsoft Entra selama pembuatan server:

$server = New-AzSqlServer -ResourceGroupName <SQLDatabaseResourceGroupName> -Location <RegionName> `
    -ServerName <LogicalServerName> -ServerVersion "12.0" -SqlAdministratorCredentials <PSCredential> -AssignIdentity

Memberikan izin Key Vault ke server Anda

Gunakan cmdlet Set-AzKeyVaultAccessPolicy untuk memberikan akses server Anda ke key vault sebelum menggunakan kunci darinya untuk TDE.

Set-AzKeyVaultAccessPolicy -VaultName <KeyVaultName> `
    -ObjectId $server.Identity.PrincipalId -PermissionsToKeys get, wrapKey, unwrapKey

Untuk menambahkan izin ke server Anda di HSM Terkelola, tambahkan peran RBAC lokal 'Pengguna Enkripsi Layanan Kripto HSM Terkelola' ke server. Ini akan memungkinkan server untuk melakukan operasi kunci get, wrap key, unwrap pada kunci di Managed HSM. Instruksi provisi akses server pada Managed HSM

Tambahkan kunci Key Vault ke server dan atur TDE Protector

Catatan

Untuk kunci HSM Terkelola, gunakan PowerShell versi Az.Sql 2.11.1.

Catatan

Panjang gabungan untuk nama key vault dan nama kunci tidak boleh lebih dari 94 karakter.

Tip

Contoh KeyId dari Key Vault: https://contosokeyvault.vault.azure.net/keys/Key1/1a1a2b2b3c3c4d4d5e5e6f6f7g7g8h8h

Contoh KeyId dari Managed HSM:
https://contosoMHSM.managedhsm.azure.net/keys/myrsakey

# add the key from Key Vault to the server
Add-AzSqlServerKeyVaultKey -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName> -KeyId <KeyVaultKeyId>

# set the key as the TDE protector for all resources under the server
Set-AzSqlServerTransparentDataEncryptionProtector -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName> `
   -Type AzureKeyVault -KeyId <KeyVaultKeyId>

# confirm the TDE protector was configured as intended
Get-AzSqlServerTransparentDataEncryptionProtector -ResourceGroupName <SQLDatabaseResourceGroupName> -ServerName <LogicalServerName>

Mengaktifkan TDE

Gunakan cmdlet Set-AzSqlDatabaseTransparentDataEncryption untuk mengaktifkan TDE.

Set-AzSqlDatabaseTransparentDataEncryption -ResourceGroupName <SQLDatabaseResourceGroupName> `
   -ServerName <LogicalServerName> -DatabaseName <DatabaseName> -State "Enabled"

Sekarang database atau gudang data telah mengaktifkan TDE dengan kunci enkripsi di Vault Kunci.

Memeriksa status enkripsi dan aktivitas enkripsi

Gunakan Get-AzSqlDatabaseTransparentDataEncryption untuk mendapatkan status enkripsi untuk database atau gudang data.

# get the encryption state of the database
Get-AzSqlDatabaseTransparentDataEncryption -ResourceGroupName <SQLDatabaseResourceGroupName> `
   -ServerName <LogicalServerName> -DatabaseName <DatabaseName> `

cmdlet PowerShell yang berguna

  • Gunakan cmdlet Set-AzSqlDatabaseTransparentDataEncryption untuk menonaktifkan TDE.

    Set-AzSqlDatabaseTransparentDataEncryption -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName> `
        -DatabaseName <DatabaseName> -State "Disabled"
    
  • Gunakan cmdlet Get-AzSqlServerKeyVaultKey untuk mengembalikan daftar kunci Key Vault yang ditambahkan ke server.

    # KeyId is an optional parameter, to return a specific key version
    Get-AzSqlServerKeyVaultKey -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
    
  • Gunakan Remove-AzSqlServerKeyVaultKey untuk menghapus kunci Key Vault dari server.

    # the key set as the TDE Protector cannot be removed
    Remove-AzSqlServerKeyVaultKey -KeyId <KeyVaultKeyId> -ServerName <LogicalServerName> -ResourceGroupName <SQLDatabaseResourceGroupName>
    

Pemecahan Masalah

Periksa hal berikut jika terjadi masalah:

  • Jika key vault tidak dapat ditemukan, pastikan Anda berada dalam langganan yang tepat.

    Get-AzSubscription -SubscriptionId <SubscriptionId>
    

  • Jika kunci baru tidak dapat ditambahkan ke server, atau kunci baru tidak dapat diperbarui sebagai Pelindung TDE, periksa hal berikut:
    • Kunci tidak boleh memiliki tanggal kedaluwarsa
    • Kunci harus mengaktifkan operasi get, wrap key, dan unwrap key.

Langkah berikutnya