Mengonfigurasi kunci lintas penyewa yang dikelola pelanggan untuk akun Azure Cosmos DB Anda dengan Azure Key Vault
BERLAKU UNTUK: NoSQL MongoDB Cassandra Gremlin Meja
Data yang disimpan di akun Azure Cosmos DB Anda dienkripsi secara otomatis dan mulus dengan kunci yang dikelola layanan yang dikelola oleh Microsoft. Namun, Anda dapat memilih untuk menambahkan enkripsi lapisan kedua dengan kunci yang Anda kelola. Kunci ini dikenal sebagai kunci yang dikelola pelanggan (atau CMK). Kunci yang dikelola pelanggan disimpan dalam instans Azure Key Vault.
Artikel ini menjelaskan cara mengonfigurasi enkripsi dengan kunci yang dikelola pelanggan pada saat Anda membuat akun Azure Cosmos DB. Dalam contoh skenario lintas penyewa ini, akun Azure Cosmos DB berada di penyewa yang dikelola oleh Vendor Perangkat Lunak Independen (ISV) yang disebut sebagai penyedia layanan. Kunci yang digunakan untuk enkripsi akun Azure Cosmos DB berada di brankas kunci di penyewa berbeda yang dikelola oleh pelanggan.
Tentang kunci yang dikelola pelanggan lintas penyewa
Banyak penyedia layanan yang membuat penawaran Software as a Service (SaaS) di Azure ingin menawarkan opsi kepada pelanggan mereka untuk mengelola kunci enkripsi mereka sendiri. Kunci yang dikelola pelanggan memungkinkan penyedia layanan mengenkripsi data pelanggan menggunakan kunci enkripsi yang dikelola oleh pelanggan penyedia layanan dan yang tidak dapat diakses oleh penyedia layanan. Di Azure, pelanggan penyedia layanan dapat menggunakan Azure Key Vault untuk mengelola kunci enkripsi mereka di penyewa dan langganan Microsoft Entra mereka sendiri.
Layanan platform Azure dan sumber daya yang dimiliki oleh penyedia layanan dan yang berada di penyewa penyedia layanan memerlukan akses ke kunci dari penyewa pelanggan untuk melakukan operasi enkripsi/dekripsi.
Gambar di bawah ini menunjukkan enkripsi data tidak aktif dengan identitas federasi dalam alur kerja kunci yang dikelola pelanggan lintas penyewa yang mencakup penyedia layanan dan pelanggannya.
Dalam contoh di atas, ada dua penyewa Microsoft Entra: penyewa penyedia layanan independen (Penyewa 1), dan penyewa pelanggan (Penyewa 2). Penyewa 1 menghosting layanan platform Azure dan Penyewa 2 menghosting brankas kunci pelanggan.
Pendaftaran aplikasi multipenyewa dibuat oleh penyedia layanan di Penyewa 1. Kredensial identitas federasi dibuat pada aplikasi ini menggunakan identitas terkelola yang ditetapkan pengguna. Lalu, ID aplikasi dan nama dari aplikasi tersebut dibagikan kepada pelanggan.
Pengguna dengan izin yang sesuai menginstal aplikasi penyedia layanan di penyewa pelanggan, Penyewa 2. Lalu pengguna memberikan perwakilan layanan yang terkait dengan akses aplikasi yang diinstal ke key vault pelanggan. Pelanggan juga menyimpan kunci enkripsi, atau kunci yang dikelola pelanggan, di key vault. Pelanggan berbagi lokasi kunci (URL kunci) dengan penyedia layanan.
Penyedia layanan kini memiliki:
- ID aplikasi untuk aplikasi multipenyewa yang diinstal di penyewa pelanggan, yang telah diberikan akses ke kunci yang dikelola pelanggan.
- Identitas terkelola yang dikonfigurasi sebagai kredensial pada aplikasi multipenyewa.
- Lokasi kunci di key vault pelanggan.
Dengan ketiga parameter ini, penyedia layanan menyediakan sumber daya Azure di Penyewa 1 yang dapat dienkripsi dengan kunci yang dikelola pelanggan di Penyewa 2.
Mari kita bagi solusi menyeluruh di atas menjadi tiga fase:
- Penyedia layanan mengonfigurasikan identitas.
- Pelanggan memberikan akses aplikasi multipenyewa penyedia layanan ke kunci enkripsi di Azure Key Vault.
- Penyedia layanan mengenkripsi data dalam sumber daya Azure menggunakan CMK.
Operasi dalam Fase 1 akan menjadi penyiapan satu kali untuk sebagian besar aplikasi penyedia layanan. Operasi dalam Fase 2 dan 3 akan diulang untuk setiap pelanggan.
Fase 1 - Penyedia layanan mengonfigurasi aplikasi Microsoft Entra
Langkah | Deskripsi | Peran minimum di Azure RBAC | Peran minimum dalam Microsoft Entra RBAC |
---|---|---|---|
1. | Buat pendaftaran aplikasi Microsoft Entra multipenyewa baru atau mulailah dengan pendaftaran aplikasi yang ada. Perhatikan bahwa ID aplikasi (ID klien) pendaftaran aplikasi menggunakan portal Azure, Microsoft Graph API, Azure PowerShell, atau Azure CLI | Tidak | Pengembang Aplikasi |
2. | Buat identitas terkelola yang ditetapkan pengguna (untuk digunakan sebagai Kredensial Identitas Gabungan). Portal Azure / Azure CLI / Azure PowerShell/ Template Azure Resource Manager |
Kontributor identitas terkelola | Tidak |
3. | Konfigurasikan identitas terkelola yang ditetapkan pengguna sebagai kredensial identitas gabungan pada aplikasi, sehingga dapat meniru identitas aplikasi. Referensi Graph API/ portal Azure/ Azure CLI/ Azure PowerShell |
Tidak | Pemilik aplikasi |
4. | Bagikan nama aplikasi dan ID aplikasi kepada pelanggan, sehingga mereka dapat menginstal dan mengotorisasi aplikasi. | Tidak | Tidak |
Pertimbangan untuk penyedia layanan
- Templat Azure Resource Manager (ARM) tidak disarankan untuk membuat aplikasi Microsoft Entra.
- Aplikasi multipenyewa yang sama dapat digunakan untuk mengakses kunci di sejumlah penyewa, seperti Penyewa 2, Penyewa 3, Penyewa 4, dan sebagainya. Di setiap penyewa, instans independen aplikasi dibuat yang memiliki ID aplikasi yang sama, tetapi ID objeknya berbeda. Dengan demikian setiap instans aplikasi ini diotorisasi secara independen. Pertimbangkan cara objek aplikasi yang digunakan untuk fitur ini digunakan guna mempartisi aplikasi Anda di semua pelanggan.
- Aplikasi dapat memiliki maksimal 20 kredensial identitas federasi, yang mengharuskan penyedia layanan untuk berbagi identitas federasi di antara pelanggannya. Untuk informasi selengkapnya tentang pertimbangan dan pembatasan desain identitas federasi, lihat Mengonfigurasi aplikasi untuk mempercayai penyedia identitas eksternal
- Dalam skenario yang jarang terjadi, penyedia layanan mungkin menggunakan satu objek Aplikasi per pelanggannya, tetapi itu memerlukan biaya pemeliharaan yang signifikan untuk mengelola aplikasi dalam skala besar di semua pelanggan.
- Di penyewa penyedia layanan, tidak dimungkinkan untuk mengotomatiskan Verifikasi Penerbit.
Fase 2 - Pelanggan mengotorisasi akses ke key vault
Langkah | Deskripsi | Peran Azure RBAC dengan hak istimewa paling sedikit | Peran Microsoft Entra dengan hak istimewa paling sedikit |
---|---|---|---|
1. | Tidak | Pengguna dengan izin untuk menginstal aplikasi | |
2. | Buat Azure Key Vault dan kunci yang digunakan sebagai kunci yang dikelola pelanggan. | Pengguna harus diberi peran Kontributor Key Vault untuk membuat brankas kunci Pengguna harus diberi peran Petugas Kripto Key Vault untuk menambahkan kunci ke key vault |
Tidak |
3. | Berikan akses identitas aplikasi yang disetujui ke key vault Azure dengan menetapkan peran Pengguna Enkripsi Layanan Kripto Key Vault | Untuk menetapkan peran Pengguna Enkripsi Layanan Kripto Key Vault ke aplikasi, Anda harus diberi peran Administrator Akses Pengguna. | Tidak |
4. | Salin URL key vault dan nama kunci ke dalam konfigurasi kunci yang dikelola pelanggan dari penawaran SaaS. | Tidak | Tidak ada |
Catatan
Untuk mengotorisasi akses ke HSM Terkelola untuk enkripsi menggunakan CMK, lihat contoh untuk Akun Penyimpanan di sini. Untuk informasi selengkapnya tentang mengelola kunci dengan HSM Terkelola, lihat Mengelola HSM Terkelola menggunakan Azure CLI
Pertimbangan untuk pelanggan penyedia layanan
- Di penyewa pelanggan, Penyewa 2, admin dapat mengatur kebijakan untuk memblokir pengguna non-admin agar tidak menginstal aplikasi. Kebijakan ini dapat mencegah pengguna non-admin membuat perwakilan layanan. Jika kebijakan seperti itu dikonfigurasi, maka pengguna dengan izin untuk membuat perwakilan layanan perlu terlibat.
- Akses ke Azure Key Vault dapat diotorisasi menggunakan Azure RBAC atau kebijakan akses. Saat memberikan akses ke key vault, pastikan untuk menggunakan mekanisme aktif untuk key vault Anda.
- Pendaftaran aplikasi Microsoft Entra memiliki ID aplikasi (ID klien). Saat aplikasi diinstal di penyewa Anda, perwakilan layanan dibuat. Perwakilan layanan berbagi ID aplikasi yang sama dengan pendaftaran aplikasi, tetapi membuat ID objeknya sendiri. Saat Anda mengotorisasi aplikasi untuk memiliki akses ke sumber daya, Anda mungkin perlu menggunakan perwakilan
Name
layanan atauObjectID
properti.
Fase 3 - Penyedia layanan mengenkripsi data dalam sumber daya Azure menggunakan kunci yang dikelola pelanggan
Setelah fase 1 dan 2 selesai, penyedia layanan dapat mengonfigurasi enkripsi pada sumber daya Azure dengan kunci dan brankas kunci di penyewa pelanggan dan sumber daya Azure di penyewa ISV. Penyedia layanan dapat mengonfigurasi kunci yang dikelola pelanggan lintas penyewa dengan alat klien yang didukung oleh sumber daya Azure tersebut, dengan templat ARM, atau dengan REST API.
Mengonfigurasi kunci yang dikelola pelanggan lintas penyewa
Bagian ini menjelaskan cara mengonfigurasi kunci yang dikelola pelanggan (CMK) lintas penyewa dan mengenkripsi data pelanggan. Anda akan mempelajari cara mengenkripsi data pelanggan dalam sumber daya di Tenant1 menggunakan CMK yang disimpan dalam brankas kunci di Tenant2. Anda dapat menggunakan portal Azure, Azure PowerShell, atau Azure CLI.
Masuk ke portal Azure dan ikuti langkah-langkah berikut.
Penyedia layanan mengonfigurasi identitas
Langkah-langkah berikut dilakukan oleh penyedia layanan di penyewa penyedia layanan Tenant1.
Penyedia layanan membuat pendaftaran aplikasi multi-penyewa baru
Anda dapat membuat pendaftaran aplikasi Microsoft Entra multi-penyewa baru atau mulai dengan pendaftaran aplikasi multi-penyewa yang ada. Jika memulai dengan pendaftaran aplikasi yang ada, perhatikan ID aplikasi (ID klien) aplikasi.
Untuk membuat pendaftaran baru:
Cari ID Microsoft Entra di kotak pencarian. Temukan dan pilih ekstensi ID Microsoft Entra.
Pilih Kelola > Pendaftaran aplikasi dari panel kiri.
Pilih + Pendaftaran baru.
Berikan nama untuk pendaftaran aplikasi dan pilih Akun di direktori organisasi apa pun (Direktori Microsoft Entra apa pun – Multipenyewa).
Pilih Daftarkan.
Perhatikan ApplicationId/ClientId aplikasi.
Penyedia layanan membuat identitas terkelola yang ditetapkan pengguna
Buat identitas terkelola yang ditetapkan pengguna untuk digunakan sebagai kredensial identitas federasi.
Cari Identitas Terkelola di kotak pencarian. Temukan dan pilih ekstensi Identitas Terkelola.
Pilih + Buat.
Menyediakan grup sumber daya, wilayah, dan nama untuk identitas terkelola.
Pilih Tinjau + buat.
Pada penyebaran yang berhasil, perhatikan Azure ResourceId dari identitas terkelola yang ditetapkan pengguna, yang tersedia di bagian Properti. Contohnya:
/subscriptions/tttttttt-0000-tttt-0000-tttt0000tttt/resourcegroups/XTCMKDemo/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ConsotoCMKDemoUA
Penyedia layanan mengonfigurasi identitas terkelola yang ditetapkan pengguna sebagai kredensial federasi pada aplikasi
Konfigurasikan identitas terkelola yang ditetapkan pengguna sebagai kredensial identitas federasi pada aplikasi, sehingga dapat meniru identitas aplikasi.
Navigasikan ke ID > Microsoft Entra Pendaftaran aplikasi > aplikasi Anda.
Pilih Sertifikat & rahasia.
Pilih Kredensial federasi.
Pilih + Tambahkan kredensial.
Di bagian Skenario kredensial federasi, pilih Kunci yang Dikelola Pelanggan.
Klik Pilih identitas terkelola. Dari panel, pilih langganan. Di bagian Identitas terkelola, pilih Identitas terkelola yang ditetapkan pengguna. Di kotak Pilih, cari identitas terkelola yang Anda buat sebelumnya, lalu klik Pilih di bagian bawah panel.
Di bagian Detail kredensial, berikan nama dan deskripsi opsional untuk kredensial, lalu pilih Tambahkan.
Penyedia layanan berbagi ID aplikasi dengan pelanggan
Temukan ID aplikasi (ID klien) aplikasi multi-penyewa dan bagikan dengan pelanggan.
Pelanggan memberikan akses aplikasi penyedia layanan ke kunci di brankas kunci
Langkah-langkah berikut dilakukan oleh pelanggan di penyewa pelanggan Tenant2. Pelanggan dapat menggunakan portal Azure, Azure PowerShell, atau Azure CLI.
Pengguna yang menjalankan langkah-langkah harus menjadi administrator dengan peran istimewa seperti Administrator Aplikasi, Administrator Aplikasi Cloud, atau Administrator Global.
Masuk ke portal Azure dan ikuti langkah-langkah berikut.
Pelanggan menginstal aplikasi penyedia layanan di penyewa pelanggan
Untuk menginstal aplikasi terdaftar penyedia layanan di penyewa pelanggan, buat perwakilan layanan dengan ID aplikasi dari aplikasi terdaftar. Anda dapat membuat perwakilan layanan dengan salah satu cara berikut:
- Gunakan Microsoft Graph, Microsoft Graph PowerShell, Azure PowerShell, atau Azure CLI untuk membuat perwakilan layanan secara manual.
- Buat URL persetujuan admin dan berikan persetujuan seluruh penyewa untuk membuat perwakilan layanan. Anda harus memberikan AppId Anda kepada mereka.
Pelanggan membuat brankas kunci
Untuk membuat brankas kunci, akun pengguna harus diberi peran Kontributor Key Vault atau peran lain yang mengizinkan pembuatan brankas kunci.
Dari menu portal Azure, atau dari halaman Beranda, pilih + Buat sumber daya. Di kotak Pencarian, masukkan Brankas kunci. Dari daftar hasil, pilih Brankas kunci. Pada halaman Brankas kunci, pilih Buat.
Pada tab Dasar-dasar, pilih langganan. Di bagian Grup sumber daya, pilih Buat baru dan masukkan nama grup sumber daya.
Masukkan nama unik untuk brankas kunci.
Pilih wilayah dan tingkat harga.
Aktifkan perlindungan penghapusan menyeluruh untuk brankas kunci baru.
Pada tab Kebijakan akses, pilih Kontrol akses berbasis peran Azure untuk Model izin.
Pilih Ulas + buat, lalu pilih Buat.
Perhatikan nama brankas kunci dan Aplikasi URI yang mengakses brankas kunci Anda harus menggunakan URI ini.
Untuk informasi selengkapnya, lihat Mulai Cepat - Membuat Azure Key Vault dengan portal Azure.
Pelanggan menetapkan peran Petugas Kripto Key Vault ke akun pengguna
Langkah ini memastikan bahwa Anda dapat membuat kunci enkripsi.
- Buka brankas kunci Anda dan pilih Access Control (IAM) dari panel kiri.
- Di bagian Berikan akses ke sumber daya ini, pilih Tambahkan penetapan peran.
- Cari dan pilih Petugas Kripto Key Vault.
- Di bagian Anggota, pilih Pengguna, grup, atau perwakilan layanan.
- Pilih Anggota dan cari akun pengguna Anda.
- Pilih Tinjau + Tetapkan.
Pelanggan membuat kunci enkripsi
Untuk membuat kunci enkripsi, akun pengguna harus diberi peran Petugas Kripto Key Vault atau peran lain yang mengizinkan pembuatan kunci.
- Pada halaman properti Key Vault, pilih Kunci.
- Pilih Buat/impor.
- Pada layar Buat kunci, tentukan nama untuk kunci. Biarkan nilai lainnya mengikuti default.
- Pilih Buat.
- Salin URI kunci.
Pelanggan memberikan akses aplikasi penyedia layanan ke brankas kunci
Tetapkan peran Azure RBAC Pengguna Enkripsi Layanan Kripto Key Vault ke aplikasi terdaftar penyedia layanan sehingga dapat mengakses brankas kunci.
- Buka brankas kunci Anda dan pilih Access Control (IAM) dari panel kiri.
- Di bagian Berikan akses ke sumber daya ini, pilih Tambahkan penetapan peran.
- Cari dan pilih Pengguna Enkripsi Layanan Kripto Key Vault.
- Di bagian Anggota, pilih Pengguna, grup, atau perwakilan layanan.
- Pilih Anggota dan cari nama aplikasi di aplikasi yang Anda instal dari penyedia layanan.
- Pilih Tinjau + Tetapkan.
Sekarang Anda dapat mengonfigurasi kunci yang dikelola pelanggan dengan kunci dan URI brankas kunci.
Membuat akun Azure Cosmos DB baru yang dienkripsi dengan kunci dari penyewa yang berbeda
Hingga saat ini, Anda telah mengonfigurasi aplikasi multi-penyewa pada penyewa penyedia layanan. Anda juga telah menginstal aplikasi pada penyewa pelanggan dan mengonfigurasi brankas kunci dan kunci pada penyewa pelanggan. Selanjutnya Anda dapat membuat akun Azure Cosmos DB di penyewa penyedia layanan dan mengonfigurasi kunci yang dikelola pelanggan dengan kunci dari penyewa pelanggan.
Saat membuat akun Azure Cosmos DB dengan kunci yang dikelola pelanggan, kita harus memastikan bahwa akun tersebut memiliki akses ke kunci yang digunakan pelanggan. Dalam skenario penyewa tunggal, berikan akses brankas kunci langsung ke perwakilan Azure Cosmos DB atau gunakan identitas terkelola tertentu. Dalam skenario lintas penyewa, kita tidak dapat lagi bergantung pada akses langsung ke brankas kunci seperti di penyewa lain yang dikelola oleh pelanggan. Kendala ini adalah alasan di bagian sebelumnya kami membuat aplikasi lintas penyewa dan mendaftarkan identitas terkelola di dalam aplikasi untuk memberinya akses ke brankas kunci pelanggan. Identitas terkelola ini, ditambah dengan ID aplikasi lintas penyewa, adalah apa yang akan kita gunakan saat membuat Akun CMK Azure Cosmos DB lintas penyewa. Untuk informasi selengkapnya, lihat bagian Fase 3 - Penyedia layanan mengenkripsi data di sumber daya Azure menggunakan bagian kunci yang dikelola pelanggan di artikel ini.
Setiap kali versi baru kunci tersedia di brankas kunci, kunci akan diperbarui secara otomatis pada akun Azure Cosmos DB.
Menggunakan templat JSON Azure Resource Manager
Sebarkan templat ARM dengan parameter tertentu berikut:
Catatan
Jika Anda membuat ulang sampel ini di salah satu templat Azure Resource Manager Anda, gunakan apiVersion
dari 2022-05-15
.
Parameter | Deskripsi | Contoh nilai |
---|---|---|
keyVaultKeyUri |
Pengidentifikasi kunci yang dikelola pelanggan yang berada di brankas kunci penyedia layanan. | https://my-vault.vault.azure.com/keys/my-key |
identity |
Objek yang menentukan bahwa identitas terkelola harus ditetapkan ke akun Azure Cosmos DB. | "identity":{"type":"UserAssigned","userAssignedIdentities":{"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/my-resource-group/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-identity":{}}} |
defaultIdentity |
Kombinasi ID sumber daya identitas terkelola dan ID aplikasi aplikasi Microsoft Entra multi-penyewa. | UserAssignedIdentity=/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/my-resource-group/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-identity&FederatedClientId=11111111-1111-1111-1111-111111111111 |
Berikut adalah contoh segmen templat dengan tiga parameter yang dikonfigurasi:
{
"kind": "GlobalDocumentDB",
"location": "East US 2",
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/my-resource-group/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-identity": {}
}
},
"properties": {
"locations": [
{
"locationName": "East US 2",
"failoverPriority": 0,
"isZoneRedundant": false
}
],
"databaseAccountOfferType": "Standard",
"keyVaultKeyUri": "https://my-vault.vault.azure.com/keys/my-key",
"defaultIdentity": "UserAssignedIdentity=/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/my-resource-group/providers/Microsoft.ManagedIdentity/userAssignedIdentities/my-identity&FederatedClientId=11111111-1111-1111-1111-111111111111"
}
}
Penting
Fitur ini belum didukung di Azure PowerShell, Azure CLI, atau portal Azure.
Anda tidak dapat mengonfigurasi kunci yang dikelola pelanggan dengan versi kunci tertentu saat membuat akun Azure Cosmos DB baru. Kunci itu sendiri harus diteruskan tanpa versi dan tidak ada garis miring terbalik berikutnya.
Untuk Mencabut atau Menonaktifkan kunci yang dikelola pelanggan, lihat mengonfigurasi kunci yang dikelola pelanggan untuk akun Azure Cosmos DB Anda dengan Azure Key Vault