Membuat Aplikasi Terkelola Azure yang menyebarkan akun penyimpanan yang dienkripsi dengan kunci yang dikelola pelanggan
Artikel ini menjelaskan cara membuat Azure Managed Application yang menyebarkan akun penyimpanan yang dienkripsi menggunakan kunci yang dikelola pelanggan. Akun penyimpanan, Cosmos DB, dan Azure Database for Postgres mendukung enkripsi data tidak aktif menggunakan kunci yang dikelola pelanggan atau kunci yang dikelola Microsoft. Anda dapat menggunakan kunci enkripsi Anda sendiri untuk melindungi data di akun penyimpanan Anda. Saat Anda menentukan kunci yang dikelola pelanggan, kunci tersebut digunakan untuk melindungi dan mengontrol akses ke kunci yang mengenkripsi data Anda. Kunci yang dikelola pelanggan menawarkan fleksibilitas yang lebih besar untuk mengelola kontrol akses.
Prasyarat
- Akun Azure dengan langganan aktif dan izin ke sumber daya Microsoft Entra seperti pengguna, grup, atau perwakilan layanan. Jika Anda tidak memiliki akun, buat akun gratis sebelum memulai.
- Visual Studio Code dengan ekstensi Alat Azure Resource Manager terbaru. Untuk file Bicep, instal ekstensi Bicep untuk Visual Studio Code.
- Instal versi terbaru Azure PowerShell atau Azure CLI.
- Pahami cara membuat dan menyebarkan definisi katalog layanan.
Identitas Terkelola
Mengonfigurasi kunci yang dikelola pelanggan untuk akun penyimpanan yang disebarkan oleh aplikasi terkelola sebagai sumber daya dalam grup sumber daya terkelola memerlukan identitas terkelola yang ditetapkan pengguna. Identitas terkelola yang ditetapkan pengguna ini dapat digunakan untuk memberikan akses aplikasi terkelola ke sumber daya lain yang ada. Untuk mempelajari cara mengonfigurasi aplikasi terkelola Anda dengan identitas terkelola yang ditetapkan pengguna, buka Azure Managed Application dengan identitas terkelola.
Aplikasi Anda dapat diberikan dua jenis identitas:
- Identitas terkelola yang ditetapkan sistem ditetapkan ke aplikasi Anda dan dihapus jika aplikasi Anda dihapus. Aplikasi hanya dapat memiliki satu identitas terkelola yang ditetapkan sistem.
- Identitas terkelola yang ditetapkan pengguna adalah sumber daya Azure mandiri yang dapat ditetapkan ke aplikasi Anda. Aplikasi dapat memiliki beberapa identitas terkelola yang ditetapkan pengguna.
Untuk menyebarkan akun penyimpanan di grup sumber daya terkelola aplikasi terkelola Anda yang dienkripsi dengan kunci pelanggan dari brankas kunci yang ada, diperlukan lebih banyak konfigurasi. Identitas terkelola yang dikonfigurasi dengan aplikasi terkelola Anda memerlukan Kontrol akses berbasis peran Azure bawaan Operator Identitas Terkelola atas identitas terkelola yang memiliki akses ke brankas kunci. Untuk detail selengkapnya, buka peran Operator Identitas Terkelola.
Membuat brankas kunci dengan perlindungan penghapusan menyeluruh
- Masuk ke portal Azure.
- Dari menu portal Azure, atau dari halaman Beranda, pilih Buat sumber daya.
- Dalam kotak Pencarian, masukkan Key Vault.
- Dari daftar hasil, pilih Key Vault.
- Pada bagian Key Vault , pilih Buat.
- Pada bagian Buat brankas kunci, berikan informasi berikut:
- Langganan: Pilih langganan Anda.
- Grup Sumber Daya: Pilih Buat baru dan masukkan nama seperti demo-cmek-rg.
- Nama: Nama unik diperlukan, seperti demo-keyvault-cmek.
- Wilayah: Pilih lokasi seperti US Timur.
- Tingkat harga: Pilih Standar dari daftar drop-down.
- Perlindungan penghapusan menyeluruh: Pilih Aktifkan perlindungan penghapusan menyeluruh.
- Pilih Berikutnya dan buka tab Kebijakan Akses.
- Konfigurasi akses: Pilih kontrol akses berbasis peran Azure.
- Terima default untuk semua opsi lainnya.
- Pilih Tinjau + buat.
- Konfirmasi pengaturan sudah benar dan pilih Buat.
Setelah penyebaran berhasil, pilih Buka sumber daya. Pada tab Gambaran Umum , catat properti berikut ini:
- Nama Vault: Dalam contoh, nama vault adalah demo-keyvault-cmek. Anda akan menggunakan nama ini untuk langkah lainnya.
- URI vault: Dalam contoh, URI vault adalah
https://demo-keyvault-cmek.vault.azure.net/
.
Membuat identitas terkelola yang ditetapkan pengguna
Untuk membuat identitas terkelola yang ditetapkan pengguna, akun Anda memerlukan penetapan peran Kontributor identitas terkelola.
- Dalam kotak pencarian, masukkan identitas terkelola.
- Di bawah Layanan, pilih Identitas Terkelola.
- Pilih Buat dan masukkan nilai berikut pada tab Dasar :
- Langganan: Pilih langganan Anda.
- Grup sumber daya: Pilih grup sumber daya demo-cmek-rg yang Anda buat di langkah-langkah sebelumnya.
- Wilayah: Pilih wilayah seperti US Timur.
- Nama: Masukkan nama untuk identitas terkelola yang ditetapkan pengguna Anda, seperti demokeyvaultmi.
- Pilih Tinjau + buat.
- Setelah Validasi Lulus ditampilkan, pilih Buat.
Setelah penyebaran berhasil, pilih Buka sumber daya.
Membuat penetapan peran
Anda perlu membuat dua penetapan peran untuk brankas kunci Anda. Untuk detailnya, lihat Menetapkan peran Azure menggunakan portal Azure.
Memberikan izin kunci pada brankas kunci ke identitas terkelola
Buat penetapan peran untuk demokeyvaultmi identitas terkelola brankas kunci untuk membungkus dan membongkar kunci.
- Buka brankas kunci Anda demo-cmek-keyvault.
- Pilih Kontrol Akses (IAM) .
- Pilih Tambahkan Tambahkan>penetapan peran.
- Tetapkan peran berikut:
- Peran: Pengguna Enkripsi Layanan Kripto Key Vault
- Tetapkan Akses ke: Identitas terkelola
- Anggota: demokeyvaultmi
- Pilih Tinjau + tetapkan untuk melihat pengaturan Anda.
- Pilih Tinjau + tetapkan untuk membuat penetapan peran.
Membuat penetapan peran untuk akun Anda
Buat penetapan peran lain sehingga akun Anda dapat membuat kunci baru di brankas kunci Anda.
- Tetapkan peran berikut:
- Peran: Petugas Kripto Key Vault
- Tetapkan Akses ke: Pengguna, grup, atau perwakilan layanan
- Anggota: Akun Microsoft Entra Anda
- Pilih Tinjau + tetapkan untuk melihat pengaturan Anda.
- Pilih Tinjau + tetapkan untuk membuat penetapan peran.
Anda dapat memverifikasi penetapan peran brankas kunci dalam Penetapan peran kontrol akses (IAM).>
Membuat kunci
Anda perlu membuat kunci yang digunakan brankas kunci Anda untuk mengenkripsi akun penyimpanan.
- Buka brankas kunci Anda, demo-cmek-keyvault.
- Pilih Kunci.
- Pilih Buat/impor.
- Pada halaman Buat kunci , pilih nilai berikut ini:
- Opsi: Hasilkan
- Nama: demo-cmek-key
- Terima default untuk opsi lainnya.
- Pilih Buat.
Catat nama kunci. Anda menggunakannya saat menyebarkan aplikasi terkelola.
Membuat identitas terkelola yang ditetapkan pengguna untuk aplikasi terkelola
Buat identitas terkelola yang ditetapkan pengguna untuk digunakan sebagai identitas terkelola untuk aplikasi terkelola.
- Di kotak penelusuran, masukkan Identitas Terkelola.
- Di bawah Layanan, pilih Identitas Terkelola.
- Pilih Buat.
- Langganan: Pilih langganan Anda.
- Grup sumber daya: Pilih grup sumber daya demo-cmek-rg.
- Wilayah: Pilih wilayah seperti US Timur.
- Nama: Masukkan nama untuk identitas terkelola yang ditetapkan pengguna Anda, seperti demomanagedappmi.
- Pilih Tinjau + buat.
- Setelah Validasi Lulus ditampilkan, pilih Buat.
Setelah penyebaran berhasil, pilih Buka sumber daya.
Menetapkan izin peran ke identitas terkelola
Tetapkan peran Operator Identitas Terkelola ke identitas terkelola pada cakupan identitas terkelola yang ditetapkan pengguna bernama demokeyvaultmi.
- Buka identitas terkelola yang ditetapkan pengguna bernama demokeyvaultmi.
- Pilih Kontrol akses (IAM).
- Pilih Tambahkan>Tambahkan penetapan peran untuk membuka halaman Tambahkan penetapan peran.
- Tetapkan peran berikut.
- Peran: Operator Identitas Terkelola
- Tetapkan Akses ke: Identitas Terkelola
- Anggota: demomanagedappmi
- Pilih Tinjau + tetapkan untuk melihat pengaturan Anda.
- Pilih Tinjau + tetapkan untuk membuat penetapan peran.
Anda dapat memverifikasi penetapan peran untuk demokeyvaultmi dalam Penetapan peran Kontrol akses (IAM).>
Contoh templat aplikasi terkelola
Buat aplikasi terkelola yang menyebarkan akun penyimpanan di grup sumber daya terkelola dan gunakan kunci brankas kunci yang sudah ada sebelumnya untuk mengenkripsi data di akun penyimpanan.
Untuk menerbitkan aplikasi terkelola ke katalog layanan Anda, lakukan tugas berikut:
- Buat file creatUIDefinition.json dari sampel di artikel ini. Templat menentukan elemen antarmuka pengguna portal saat menyebarkan aplikasi terkelola.
- Buat templat Azure Resource Manager bernama mainTemplate.json dengan mengonversi file Bicep dalam artikel ini ke JSON. Templat menentukan sumber daya yang akan disebarkan dengan aplikasi terkelola.
- Buat paket .zip yang berisi file JSON yang diperlukan: createUiDefinition.json dan mainTemplate.json.
- Terbitkan definisi aplikasi terkelola sehingga tersedia di katalog layanan Anda. Untuk informasi selengkapnya, buka Mulai Cepat: Membuat dan menerbitkan definisi Azure Managed Application.
Membuat templat createUiDefinition.json
Templat berikut membuat identitas terkelola yang ditetapkan pengguna untuk aplikasi terkelola. Dalam contoh ini, kami menonaktifkan identitas terkelola yang ditetapkan sistem karena kami memerlukan identitas terkelola yang ditetapkan pengguna untuk dikonfigurasi terlebih dahulu dengan izin Operator Identitas Terkelola atas identitas terkelola brankas kunci.
- Buat file baru di Visual Studio Code bernama creatUIDefinition.json.
- Salin dan tempel kode berikut ke dalam file.
- Simpan file.
{
"$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
"handler": "Microsoft.Azure.CreateUIDef",
"version": "0.1.2-preview",
"parameters": {
"basics": [],
"steps": [
{
"name": "managedApplicationSetting",
"label": "Application Settings",
"subLabel": {
"preValidation": "Configure your application settings and Managed Identity for the application",
"postValidation": "Done"
},
"bladeTitle": "Application Settings - Config",
"elements": [
{
"name": "appIdentity",
"type": "Microsoft.ManagedIdentity.IdentitySelector",
"label": "Managed Identity Configuration for the Application (Needs Managed Identity Operator permissions over KV Managed Identity).",
"toolTip": {
"systemAssignedIdentity": "Enable system assigned identity to grant the managed application access to additional existing resources.",
"userAssignedIdentity": "Add user assigned identities to grant the managed application access to additional existing resources."
},
"defaultValue": {
"systemAssignedIdentity": "Off"
},
"options": {
"hideSystemAssignedIdentity": true,
"hideUserAssignedIdentity": false,
"readOnlySystemAssignedIdentity": true
},
"visible": true
}
]
},
{
"name": "configuration",
"type": "Microsoft.Common.Section",
"label": "Configuration",
"elements": [
{
"name": "cmek",
"type": "Microsoft.Common.Section",
"label": "Customer Managed Encryption Key (CMEK)",
"elements": [
{
"name": "cmekEnable",
"type": "Microsoft.Common.CheckBox",
"label": "Enable CMEK",
"toolTip": "Enable to provide a CMEK",
"constraints": {
"required": false
}
},
{
"name": "cmekKeyVaultUrl",
"type": "Microsoft.Common.TextBox",
"label": "Key Vault URL",
"toolTip": "Specify the CMEK Key Vault URL",
"defaultValue": "",
"constraints": {
"required": "[steps('configuration').cmek.cmekEnable]",
"regex": ".*",
"validationMessage": "The value must not be empty."
},
"visible": "[steps('configuration').cmek.cmekEnable]"
},
{
"name": "cmekKeyName",
"type": "Microsoft.Common.TextBox",
"label": "Key Name",
"toolTip": "Specify the key name from your key vault.",
"defaultValue": "",
"constraints": {
"required": "[steps('configuration').cmek.cmekEnable]",
"regex": ".*",
"validationMessage": "The value must not be empty."
},
"visible": "[steps('configuration').cmek.cmekEnable]"
},
{
"name": "cmekKeyIdentity",
"type": "Microsoft.ManagedIdentity.IdentitySelector",
"label": "Managed Identity Configuration for Key Vault Access",
"toolTip": {
"systemAssignedIdentity": "Enable system assigned identity to grant the managed application access to additional existing resources.",
"userAssignedIdentity": "Add user assigned identities to grant the managed application access to additional existing resources."
},
"defaultValue": {
"systemAssignedIdentity": "Off"
},
"options": {
"hideSystemAssignedIdentity": true,
"hideUserAssignedIdentity": false,
"readOnlySystemAssignedIdentity": true
},
"visible": "[steps('configuration').cmek.cmekEnable]"
}
],
"visible": true
}
]
}
],
"outputs": {
"location": "[location()]",
"managedIdentity": "[steps('managedApplicationSetting').appIdentity]",
"cmekConfig": {
"kvUrl": "[if(empty(steps('configuration').cmek.cmekKeyVaultUrl), '', steps('configuration').cmek.cmekKeyVaultUrl)]",
"keyName": "[if(empty(steps('configuration').cmek.cmekKeyName), '', steps('configuration').cmek.cmekKeyName)]",
"identityId": "[if(empty(steps('configuration').cmek.cmekKeyIdentity), '', steps('configuration').cmek.cmekKeyIdentity)]"
}
}
}
}
Membuat templat mainTemplate.json
File Bicep berikut adalah kode sumber untuk mainTemplate.json Anda. Templat menggunakan identitas terkelola yang ditetapkan pengguna yang ditentukan dalam file createUiDefinition.json .
- Buat file baru di Visual Studio Code bernama mainTemplate.bicep.
- Salin dan tempel kode berikut ke dalam file.
- Simpan file.
param cmekConfig object = {
kvUrl: ''
keyName: ''
identityId: {}
}
@description('Specify the Azure region to place the application definition.')
param location string = resourceGroup().location
/////////////////////////////////
// Common Resources Configuration
/////////////////////////////////
var commonproperties = {
name: 'cmekdemo'
displayName: 'Common Resources'
storage: {
sku: 'Standard_LRS'
kind: 'StorageV2'
accessTier: 'Hot'
minimumTlsVersion: 'TLS1_2'
}
}
var identity = items(cmekConfig.identityId.userAssignedIdentities)[0].key
resource storage 'Microsoft.Storage/storageAccounts@2022-05-01' = {
name: '${commonproperties.name}${uniqueString(resourceGroup().id)}'
location: location
sku: {
name: commonproperties.storage.sku
}
kind: commonproperties.storage.kind
identity: cmekConfig.identityId
properties: {
accessTier: commonproperties.storage.accessTier
minimumTlsVersion: commonproperties.storage.minimumTlsVersion
encryption: {
identity: {
userAssignedIdentity: identity
}
services: {
blob: {
enabled: true
}
table: {
enabled: true
}
file: {
enabled: true
}
}
keySource: 'Microsoft.Keyvault'
keyvaultproperties: {
keyname: '${cmekConfig.keyName}'
keyvaulturi: '${cmekConfig.kvUrl}'
}
}
}
}
Gunakan PowerShell atau Azure CLI untuk membangun file mainTemplate.json . Buka direktori tempat Anda menyimpan file Bicep dan jalankan build
perintah .
bicep build mainTemplate.bicep
Setelah file Bicep dikonversi ke JSON, file mainTemplate.json Anda harus cocok dengan contoh berikut. Anda mungkin memiliki nilai yang berbeda dalam metadata
properti untuk version
dan templateHash
.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.16.2.56959",
"templateHash": "1234567891234567890"
}
},
"parameters": {
"cmekConfig": {
"type": "object",
"defaultValue": {
"kvUrl": "",
"keyName": "",
"identityId": {}
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Specify the Azure region to place the application definition."
}
}
},
"variables": {
"commonproperties": {
"name": "cmekdemo",
"displayName": "Common Resources",
"storage": {
"sku": "Standard_LRS",
"kind": "StorageV2",
"accessTier": "Hot",
"minimumTlsVersion": "TLS1_2"
}
},
"identity": "[items(parameters('cmekConfig').identityId.userAssignedIdentities)[0].key]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-05-01",
"name": "[format('{0}{1}', variables('commonproperties').name, uniqueString(resourceGroup().id))]",
"location": "[parameters('location')]",
"sku": {
"name": "[variables('commonproperties').storage.sku]"
},
"kind": "[variables('commonproperties').storage.kind]",
"identity": "[parameters('cmekConfig').identityId]",
"properties": {
"accessTier": "[variables('commonproperties').storage.accessTier]",
"minimumTlsVersion": "[variables('commonproperties').storage.minimumTlsVersion]",
"encryption": {
"identity": {
"userAssignedIdentity": "[variables('identity')]"
},
"services": {
"blob": {
"enabled": true
},
"table": {
"enabled": true
},
"file": {
"enabled": true
}
},
"keySource": "Microsoft.Keyvault",
"keyvaultproperties": {
"keyname": "[format('{0}', parameters('cmekConfig').keyName)]",
"keyvaulturi": "[format('{0}', parameters('cmekConfig').kvUrl)]"
}
}
}
}
]
}
Menyebarkan aplikasi terkelola
Setelah definisi katalog layanan dibuat, Anda dapat menyebarkan aplikasi terkelola. Untuk informasi selengkapnya, buka Mulai Cepat: Menyebarkan aplikasi terkelola katalog layanan.
Selama penyebaran, Anda menggunakan identitas terkelola yang ditetapkan pengguna, nama brankas kunci, URL brankas kunci, nama kunci brankas kunci. File createUiDefinition.json membuat antarmuka penggunaan.
Misalnya, dalam penyebaran portal, pada tab Aplikasi Pengaturan, Anda menambahkan demomanagedappmi.
Pada tab Konfigurasi , Anda mengaktifkan kunci yang dikelola pelanggan dan menambahkan identitas terkelola yang ditetapkan pengguna untuk brankas kunci, demokeyvaultmi. Anda juga menentukan URL brankas kunci dan nama kunci brankas kunci yang Anda buat.
Verifikasi penyebaran
Setelah penyebaran selesai, Anda dapat memverifikasi penetapan identitas aplikasi terkelola. Demomanagedappmi identitas terkelola yang ditetapkan pengguna ditetapkan ke aplikasi terkelola.
- Buka grup sumber daya tempat Anda menyebarkan aplikasi terkelola.
- Di bawah Pengaturan> Identitas pilih Pengguna yang ditetapkan (pratinjau).
Anda juga dapat memverifikasi akun penyimpanan yang disebarkan aplikasi terkelola. Tab Enkripsi memperlihatkan kunci demo-cmek-key dan ID sumber daya untuk identitas terkelola yang ditetapkan pengguna.
- Buka grup sumber daya terkelola tempat akun penyimpanan aplikasi terkelola disebarkan.
- Di bawah Keamanan + jaringan pilih Enkripsi.
Langkah berikutnya
- Untuk informasi selengkapnya tentang enkripsi penyimpanan, buka Kunci yang dikelola pelanggan untuk enkripsi Azure Storage.
- Untuk informasi selengkapnya tentang identitas terkelola yang ditetapkan pengguna dengan izin untuk mengakses kunci di brankas kunci, buka Mengonfigurasi kunci yang dikelola pelanggan di penyewa yang sama untuk akun penyimpanan yang ada.