CMK TDE Tingkat Database tersedia untuk Azure SQL Database (semua edisi SQL Database). Ini tidak tersedia untuk Azure SQL Managed Instance, SQL Server lokal, Azure VM, dan Azure Synapse Analytics (kumpulan SQL khusus (sebelumnya SQL DW)).
Panduan yang sama dapat diterapkan untuk mengonfigurasi kunci yang dikelola pelanggan tingkat database di penyewa yang sama dengan mengecualikan parameter ID klien federasi. Untuk informasi selengkapnya tentang kunci yang dikelola pelanggan tingkat database, lihat Enkripsi data transparan (TDE) dengan kunci yang dikelola pelanggan di tingkat database.
Dalam panduan ini, kita melalui langkah-langkah untuk membuat, memperbarui, dan mengambil Azure SQL Database dengan enkripsi data transparan (TDE) dan kunci yang dikelola pelanggan (CMK) di tingkat database, menggunakan identitas terkelola yang ditetapkan pengguna untuk mengakses Azure Key Vault. Azure Key Vault berada di penyewa Microsoft Entra yang berbeda dari Azure SQL Database. Untuk informasi selengkapnya, lihat Kunci yang dikelola pelanggan lintas penyewa dengan enkripsi data transparan.
Catatan
ID Microsoft Entra sebelumnya dikenal sebagai Azure Active Directory (Azure AD).
Prasyarat
Panduan ini mengasumsikan bahwa Anda memiliki dua penyewa Microsoft Entra.
Yang pertama terdiri dari sumber daya Azure SQL Database, aplikasi Microsoft Entra multi-penyewa, dan identitas terkelola yang ditetapkan pengguna.
Penyewa kedua menampung Azure Key Vault.
Untuk instruksi komprehensif tentang menyiapkan CMK lintas penyewa dan izin RBAC yang diperlukan untuk mengonfigurasi aplikasi Microsoft Entra dan Azure Key Vault, lihat salah satu panduan berikut:
Modul Az PowerShell versi 10.3.0 atau yang lebih tinggi.
Izin RBAC yang diperlukan untuk CMK tingkat database adalah izin yang sama yang diperlukan untuk CMK tingkat server. Secara khusus, izin RBAC yang sama yang berlaku saat menggunakan Azure Key Vault, identitas terkelola, dan CMK lintas penyewa untuk TDE di tingkat server berlaku di tingkat database. Untuk informasi selengkapnya tentang manajemen kunci dan kebijakan akses, lihat Manajemen kunci.
Sumber daya yang diperlukan pada penyewa pertama
Untuk tujuan tutorial ini, kita akan menganggap penyewa pertama milik vendor perangkat lunak independen (ISV), dan penyewa kedua berasal dari klien mereka. Untuk informasi selengkapnya tentang skenario ini, lihat Kunci yang dikelola pelanggan lintas penyewa dengan enkripsi data transparan.
Sebelum kita dapat mengonfigurasi TDE untuk Azure SQL Database dengan CMK lintas penyewa, kita harus memiliki aplikasi Microsoft Entra multi-penyewa yang dikonfigurasi dengan identitas terkelola yang ditetapkan pengguna yang ditetapkan sebagai kredensial identitas federasi untuk aplikasi. Ikuti salah satu panduan dalam Prasyarat.
Pada penyewa pertama tempat Anda ingin membuat Azure SQL Database, buat dan konfigurasikan aplikasi Microsoft Entra multi-penyewa.
Rekam nama aplikasi dan ID aplikasi. Ini dapat ditemukan di aplikasi Portal Azure> Microsoft Entra ID>Enterprise dan mencari aplikasi yang dibuat.
Sumber daya yang diperlukan pada penyewa kedua
Catatan
Modul Azure ACTIVE Directory dan MSOnline PowerShell tidak digunakan lagi per 30 Maret 2024. Untuk mempelajari lebih lanjut, baca pembaruan penghentian. Setelah tanggal ini, dukungan untuk modul ini terbatas pada bantuan migrasi ke Microsoft Graph PowerShell SDK dan perbaikan keamanan. Modul yang tidak digunakan lagi akan terus berfungsi hingga Maret, 30 2025.
Sebaiknya migrasi ke Microsoft Graph PowerShell untuk berinteraksi dengan ID Microsoft Entra (sebelumnya Microsoft Azure AD). Untuk pertanyaan umum tentang migrasi, lihat Tanya Jawab Umum Migrasi. Catatan: MSOnline versi 1.0.x mungkin mengalami gangguan setelah 30 Juni 2024.
Pada penyewa kedua tempat Azure Key Vault berada, buat perwakilan layanan (aplikasi) menggunakan ID aplikasi dari aplikasi terdaftar dari penyewa pertama. Berikut adalah beberapa contoh cara mendaftarkan aplikasi multi-penyewa. Ganti <TenantID> dan <ApplicationID> dengan ID Penyewa klien dari ID Microsoft Entra dan ID Aplikasi dari aplikasi multi-penyewa, masing-masing:
Membuat Azure SQL Database baru dengan kunci yang dikelola pelanggan tingkat database
Berikut ini adalah contoh untuk membuat database di Azure SQL Database dengan identitas terkelola yang ditetapkan pengguna, dan cara mengatur kunci terkelola pelanggan lintas penyewa di tingkat database. Identitas terkelola yang ditetapkan pengguna diperlukan untuk menyiapkan kunci yang dikelola pelanggan untuk enkripsi data transparan selama fase pembuatan database.
Jika Anda belum masuk ke portal Azure, masuk jika diminta.
Di bawah database SQL, biarkan Jenis sumber daya diatur ke Database tunggal dan pilih Buat.
Pada tab Dasar dari formulir Buat SQL Database, di bawah Detail proyek, pilih Langganan Azure, Grup sumber daya, dan Server yang diinginkan untuk database Anda. Kemudian, gunakan nama unik untuk nama Database Anda. Jika Anda belum membuat server logis untuk Azure SQL Database, lihat Membuat server yang dikonfigurasi dengan TDE dengan kunci yang dikelola pelanggan (CMK) lintas penyewa untuk referensi.
Saat Anda masuk ke tab Keamanan , pilih Konfigurasikan enkripsi data transparan.
Pada menu Enkripsi data transparan, pilih Kunci terkelola pelanggan tingkat database (CMK).
Untuk Identitas Terkelola yang Ditetapkan Pengguna, pilih Konfigurasikan untuk mengaktifkan identitas Database dan Tambahkan identitas terkelola yang ditetapkan pengguna ke sumber daya jika identitas yang diinginkan tidak tercantum di menu Identitas. Lalu, pilih Terapkan.
Pada menu Enkripsi data transparan, pilih Ubah kunci. Pilih Langganan yang diinginkan, Brankas kunci, Kunci, dan Versi untuk kunci yang dikelola pelanggan yang akan digunakan untuk TDE. Pilih tombol Pilih. Setelah memilih kunci, Anda juga dapat menambahkan kunci database tambahan sesuai kebutuhan menggunakan URI brankas Kunci Azure (pengidentifikasi objek) di menu Enkripsi data transparan.
Rotasi kunci otomatis juga dapat diaktifkan pada tingkat database dengan menggunakan kotak centang Putar kunci otomatis di menu Enkripsi data transparan.
Pilih Terapkan untuk terus membuat database.
Pilih Tinjau + buat di bagian bawah halaman
Pada halaman Tinjau + buat, setelah mengulas, pilih Buat.
Catatan
Pembuatan database akan gagal jika identitas terkelola yang ditetapkan pengguna tidak memiliki izin yang tepat yang diaktifkan pada brankas kunci. Identitas terkelola yang ditetapkan pengguna akan memerlukan izin Get, wrapKey, dan unwrapKey pada brankas kunci. Untuk informasi selengkapnya, lihat Identitas terkelola untuk enkripsi data transparan dengan kunci yang dikelola pelanggan.
Untuk informasi tentang penginstalan rilis Azure CLI saat ini, lihat artikel Menginstal Azure CLI.
Buat database yang dikonfigurasi dengan identitas terkelola yang ditetapkan pengguna dan TDE yang dikelola pelanggan lintas penyewa menggunakan perintah az sql db create . Pengidentifikasi Kunci dari penyewa kedua dapat digunakan di encryption-protector bidang . ID Aplikasi dari aplikasi multi-penyewa dapat digunakan di federated-client-id bidang . Parameter --encryption-protector-auto-rotation dapat digunakan untuk mengaktifkan rotasi kunci otomatis pada tingkat database.
Untuk mendapatkan ID Sumber Daya identitas terkelola yang ditetapkan oleh pengguna, telusuri Identitas Terkelola di portal Microsoft Azure. Temukan identitas terkelola Anda, dan buka Properti. Contoh ID Sumber Daya UMI Anda terlihat seperti/subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>
Buat database yang dikonfigurasi dengan identitas terkelola yang ditetapkan pengguna dan TDE yang dikelola pelanggan lintas penyewa di tingkat database menggunakan PowerShell.
<ResourceGroupName>: Nama grup sumber daya untuk server logis Azure SQL Anda
<DatabaseName>: Gunakan nama database Azure SQL yang unik
<ServerName>: Gunakan nama server logis Azure SQL yang unik
<UserAssignedIdentityId>: Daftar identitas terkelola yang ditetapkan pengguna untuk ditetapkan ke server (bisa satu atau beberapa)
<CustomerManagedKeyId>: Pengidentifikasi Kunci dari Key Vault penyewa kedua
<FederatedClientId>: ID Aplikasi dari aplikasi multi-penyewa
-EncryptionProtectorAutoRotation: Dapat digunakan untuk mengaktifkan rotasi kunci otomatis pada tingkat database
Untuk mendapatkan ID Sumber Daya identitas terkelola yang ditetapkan oleh pengguna, telusuri Identitas Terkelola di portal Microsoft Azure. Temukan identitas terkelola Anda, dan buka Properti. Contoh ID Sumber Daya UMI Anda terlihat seperti/subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>
# create a server with user-assigned managed identity and cross-tenant customer-managed TDE with automatic key rotation enabled
$params = @{
ResourceGroupName = '<ResourceGroupName>'
ServerName = '<ServerName>'
DatabaseName = '<DatabaseName>'
AssignIdentity = $true
UserAssignedIdentityId = '<UserAssignedIdentityId>'
EncryptionProtector = '<CustomerManagedKeyId>'
FederatedClientId = '<FederatedClientId>'
EncryptionProtectorAutoRotation = $true
}
New-AzSqlDatabase @params
Berikut adalah contoh templat ARM yang membuat Azure SQL Database dengan identitas terkelola yang ditetapkan pengguna dan TDE yang dikelola pelanggan di tingkat database. Untuk CMK lintas penyewa, gunakan Pengidentifikasi Kunci dari brankas kunci penyewa kedua, dan ID Aplikasi dari aplikasi multi-penyewa.
Untuk mendapatkan ID Sumber Daya identitas terkelola yang ditetapkan oleh pengguna, telusuri Identitas Terkelola di portal Microsoft Azure. Temukan identitas terkelola Anda, dan buka Properti. Contoh ID Sumber Daya UMI Anda terlihat seperti /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>.
Memperbarui Azure SQL Database yang sudah ada dengan kunci yang dikelola pelanggan tingkat database
Berikut ini adalah contoh memperbarui database yang sudah ada di Azure SQL Database dengan identitas terkelola yang ditetapkan pengguna, dan cara mengatur kunci yang dikelola pelanggan lintas penyewa di tingkat database. Identitas terkelola yang ditetapkan pengguna diperlukan untuk menyiapkan kunci yang dikelola pelanggan untuk enkripsi data transparan selama fase pembuatan database.
Di portal Azure, navigasikan ke sumber daya database SQL yang ingin Anda perbarui dengan kunci yang dikelola pelanggan tingkat database.
Di bawah Keamanan, pilih Identitas. Tambahkan Identitas terkelola yang ditetapkan Pengguna untuk database ini, lalu pilih Simpan
Sekarang buka menu Enkripsi Data di bawah Keamanan untuk database Anda. Pilih Kunci terkelola pelanggan tingkat database (CMK). Identitas Database untuk database harus sudah Diaktifkan karena Anda telah mengonfigurasi identitas di langkah terakhir.
Pilih Ubah kunci. Pilih Langganan yang diinginkan, Brankas kunci, Kunci, dan Versi untuk kunci yang dikelola pelanggan yang akan digunakan untuk TDE. Pilih tombol Pilih. Setelah memilih kunci, Anda juga dapat menambahkan kunci database tambahan sesuai kebutuhan menggunakan URI brankas Kunci Azure (pengidentifikasi objek) di menu Enkripsi Data.
Pilih kotak centang Putar otomatis kunci jika Anda ingin mengaktifkan rotasi kunci otomatis pada tingkat database.
Pilih Simpan.
Untuk informasi tentang penginstalan rilis Azure CLI saat ini, lihat artikel Menginstal Azure CLI.
Perbarui database yang dikonfigurasi dengan identitas terkelola yang ditetapkan pengguna dan TDE yang dikelola pelanggan lintas penyewa menggunakan perintah az sql db create . Pengidentifikasi Kunci dari penyewa kedua dapat digunakan di encryption-protector bidang . ID Aplikasi dari aplikasi multi-penyewa dapat digunakan di federated-client-id bidang .
Untuk mendapatkan ID Sumber Daya identitas terkelola yang ditetapkan oleh pengguna, telusuri Identitas Terkelola di portal Microsoft Azure. Temukan identitas terkelola Anda, dan buka Properti. Contoh ID Sumber Daya UMI Anda terlihat seperti /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>. Parameter --encryption-protector-auto-rotation dapat digunakan untuk mengaktifkan rotasi kunci otomatis pada tingkat database.
Daftar $keys adalah daftar kunci yang dipisahkan spasi yang akan ditambahkan pada database dan $keysToRemove merupakan daftar kunci yang dipisahkan spasi yang harus dihapus dari database
Perbarui database yang dikonfigurasi dengan identitas terkelola yang ditetapkan pengguna dan TDE yang dikelola pelanggan lintas penyewa di tingkat database menggunakan PowerShell.
<ResourceGroupName>: Nama grup sumber daya untuk server logis Azure SQL Anda
<DatabaseName>: Gunakan nama database Azure SQL yang unik
<ServerName>: Gunakan nama server logis Azure SQL yang unik
<UserAssignedIdentityId>: Daftar identitas terkelola yang ditetapkan pengguna untuk ditetapkan ke server (bisa satu atau beberapa)
<CustomerManagedKeyId>: Pengidentifikasi Kunci dari Key Vault penyewa kedua
<FederatedClientId>: ID Aplikasi dari aplikasi multi-penyewa
<ListOfKeys>: Daftar kunci yang dikelola pelanggan tingkat database yang dipisahkan koma untuk ditambahkan ke database
<ListOfKeysToRemove>: Daftar kunci yang dikelola pelanggan tingkat database yang dipisahkan koma yang akan dihapus dari database
-EncryptionProtectorAutoRotation: Dapat digunakan untuk mengaktifkan rotasi kunci otomatis pada tingkat database
Untuk mendapatkan ID Sumber Daya identitas terkelola yang ditetapkan oleh pengguna, telusuri Identitas Terkelola di portal Microsoft Azure. Temukan identitas terkelola Anda, dan buka Properti. Contoh ID Sumber Daya UMI Anda terlihat seperti /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>.
Berikut adalah contoh templat ARM yang memperbarui Azure SQL Database dengan identitas terkelola yang ditetapkan pengguna dan TDE yang dikelola pelanggan di tingkat database. Untuk CMK lintas penyewa, gunakan Pengidentifikasi Kunci dari Key Vault penyewa kedua, dan ID Aplikasi dari aplikasi multi-penyewa.
Untuk mendapatkan ID Sumber Daya identitas terkelola yang ditetapkan oleh pengguna, telusuri Identitas Terkelola di portal Microsoft Azure. Temukan identitas terkelola Anda, dan buka Properti. Contoh ID Sumber Daya UMI Anda terlihat seperti /subscriptions/<subscriptionId>/resourceGroups/<ResourceGroupName>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managedIdentity>.
Untuk menghapus kunci dari database, nilai kamus kunci kunci tertentu harus diteruskan sebagai null. Contohnya,"https://yourvault.vault.azure.net/keys/yourkey1/fd021f84a0d94d43b8ef33154bca0000": null.
Menampilkan pengaturan kunci yang dikelola pelanggan tingkat database di Azure SQL Database
Berikut ini adalah contoh pengambilan kunci yang dikelola pelanggan tingkat database untuk database. Sumber daya Microsoft.Sql/servers/databases ARM secara default hanya memperlihatkan pelindung TDE dan identitas terkelola yang dikonfigurasi pada database. Untuk memperluas daftar lengkap kunci, gunakan parameter , -ExpandKeyList. Selain itu, filter seperti -KeysFilter "current" dan nilai titik waktu (misalnya, 2023-01-01) dapat digunakan untuk mengambil kunci saat ini yang digunakan dan kunci yang digunakan di masa lalu pada titik waktu tertentu. Filter ini hanya didukung untuk kueri database individual dan bukan untuk kueri tingkat server.
Untuk melihat kunci yang dikelola pelanggan tingkat database di portal Azure, buka menu Enkripsi Data sumber daya database SQL.
Untuk informasi tentang penginstalan rilis Azure CLI saat ini, lihat artikel Menginstal Azure CLI.
# Retrieve the basic database level customer-managed key settings from a database
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase
# Retrieve the basic database level customer-managed key settings from a database and all the keys ever added
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --expand-keys
# Retrieve the basic database level customer-managed key settings from a database and the current keys in use
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --expand-keys --keys-filter current
# Retrieve the basic database level customer-managed key settings from a database and the keys in use at a particular point in time
az sql db show --resource-group $resourceGroupName --server $serverName --name mySampleDatabase --expand-keys --keys-filter 01-01-2015
# Retrieve all the databases in a server to check which ones are configured with database level customer-managed keys
az sql db list --resource-group $resourceGroupName --server $serverName
# Retrieve the basic database level customer-managed key settings from a database
Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName>
# Retrieve the basic database level customer-managed key settings from a database and all the keys ever added
Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName> -ExpandKeyList
# Retrieve the basic database level customer-managed key settings from a database and the current keys in use
Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName> -ExpandKeyList -KeysFilter "current"
# Retrieve the basic database level customer-managed key settings from a database and the keys in use at a particular point in time
Get-AzSqlDatabase -ResourceGroupName <ResourceGroupName> -ServerName <ServerName> -DatabaseName <DatabaseName> -ExpandKeyList -KeysFilter '2023-02-03 00:00:00'
# Retrieve all the databases in a server to check which ones are configured with database level customer-managed keys
Get-AzSqlDatabase -resourceGroupName <ResourceGroupName> -ServerName <ServerName> | Select DatabaseName, EncryptionProtector
Gunakan REST API pratinjau 2022-08-01 untuk Azure SQL Database.
Ambil pengaturan kunci yang dikelola pelanggan tingkat database dasar dari database.
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}?api-version=2022-08-01-preview
Mengambil pengaturan kunci dasar yang dikelola pelanggan tingkat database dari database dan semua kunci yang pernah ditambahkan
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}?api-version=2022-08-01-preview&$expand=keys
Mengambil pengaturan kunci dasar tingkat database yang dikelola pelanggan dari database dan kunci saat ini yang digunakan
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}?api-version=2022-08-01-preview&$expand=keys($filter=pointInTime('current'))
Mengambil pengaturan kunci dasar yang dikelola pelanggan tingkat database dari database dan kunci yang digunakan pada titik waktu tertentu
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}?api-version=2022-08-01-preview&$expand=keys($filter=pointInTime('2023-02-04T01:57:42.49Z'))
Mencantumkan semua kunci di server logis
Untuk mengambil daftar semua kunci (dan bukan hanya pelindung utama) yang digunakan oleh setiap database di bawah server, itu harus dikueri secara individual dengan filter kunci. Berikut ini adalah contoh kueri PowerShell untuk mencantumkan setiap kunci di bawah server logis.
Memvalidasi ulang kunci yang dikelola pelanggan tingkat database pada Azure SQL Database
Dalam kasus pelindung TDE yang tidak dapat diakses seperti yang dijelaskan dalam Transparent Data Encryption (TDE) dengan CMK, setelah akses kunci diperbaiki, operasi kunci validasi ulang dapat digunakan untuk membuat database dapat diakses. Lihat instruksi atau perintah berikut untuk contohnya.
Dengan menggunakan portal Azure, temukan sumber daya database SQL Anda. Setelah Anda memilih sumber daya database SQL Anda, buka tab Enkripsi Data Transparan dari menu Enkripsi Data di bawah pengaturan Keamanan . Jika database kehilangan akses ke Azure Key Vault, tombol Validasi ulang kunci akan muncul, dan Anda akan memiliki opsi untuk memvalidasi ulang kunci yang ada dengan memilih Coba lagi kunci yang ada, atau kunci lain dengan memilih Pilih kunci cadangan.
Untuk informasi tentang penginstalan rilis Azure CLI saat ini, lihat artikel Menginstal Azure CLI.
az sql db tde key revalidate --resource-group $resourceGroupName --server $serverName --database mySampleDatabase
Gunakan REST API pratinjau 2022-08-01 untuk Azure SQL Database.
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/encryptionProtector/current/revalidate?api-version=2022-08-01-preview
Mengembalikan kunci yang dikelola pelanggan tingkat database pada Azure SQL Database
Database yang dikonfigurasi dengan CMK tingkat database dapat dikembalikan ke enkripsi tingkat server jika server dikonfigurasi dengan kunci yang dikelola layanan menggunakan perintah berikut.
Untuk menggunakan pengaturan kunci enkripsi tingkat Server untuk database individual, server logis untuk Azure SQL Database harus dikonfigurasi untuk menggunakan Kunci yang dikelola layanan untuk TDE.
Untuk informasi tentang penginstalan rilis Azure CLI saat ini, lihat artikel Menginstal Azure CLI.
az sql db tde key revert --resource-group $resourceGroupName --server $serverName --name mySampleDatabase
Gunakan REST API pratinjau 2022-08-01 untuk Azure SQL Database.
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Sql/servers/{serverName}/databases/{databaseName}/encryptionProtector/current/revert?api-version=2022-08-01-preview
Langkah berikutnya
Periksa dokumentasi berikut tentang berbagai operasi CMK tingkat database: