Gunakan identitas terkelola dalam Azure API Management
BERLAKU UNTUK: Semua tingkatAN API Management
Artikel ini memperlihatkan cara membuat identitas terkelola untuk instans Azure API Management dan cara mengakses sumber daya lainnya. Identitas terkelola yang dihasilkan oleh MICROSOFT Entra ID memungkinkan instans API Management Anda mengakses sumber daya yang dilindungi Microsoft Entra lainnya dengan mudah dan aman, seperti Azure Key Vault. Azure mengelola identitas ini, sehingga Anda tidak perlu menyediakan atau memutar rahasia apa pun. Untuk informasi selengkapnya tentang identitas terkelola, lihat Apa yang dimaksud dengan identitas terkelola untuk sumber daya Azure?.
Anda dapat memberikan dua jenis identitas ke instans API Management:
- Identitas yang ditetapkan sistem terkait dengan layanan Anda dan dihapus jika layanan Anda dihapus. Layanan ini hanya dapat memiliki satu identitas yang ditetapkan sistem.
- Identitas yang ditetapkan pengguna adalah sumber daya Azure mandiri yang dapat ditetapkan ke layanan Anda. Layanan dapat memiliki beberapa identitas yang ditetapkan pengguna.
Catatan
Identitas terkelola khusus untuk penyewa Microsoft Entra tempat langganan Azure Anda dihosting. Mereka tidak diperbarui jika langganan dipindahkan ke direktori lain. Jika langganan dipindahkan, Anda harus membuat ulang dan mengonfigurasi identitas.
Catatan
Saat ini, fitur ini tidak tersedia di ruang kerja.
Buat identitas terkelola yang ditetapkan sistem
Portal Azure
Untuk menyiapkan identitas terkelola di portal Microsoft Azure, Anda akan terlebih dahulu membuat instans API Management lalu mengaktifkan fitur tersebut.
Buat instans API Management di portal seperti biasa. Telusuri instans tersebut di portal.
Di menu sebelah kiri, di bawah Keamanan, pilih Identitas terkelola.
Pada tab Sistem yang ditetapkan, alihkan Status ke Aktif. Pilih Simpan.
Azure PowerShell
Catatan
Sebaiknya Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Untuk memulai, lihat Menginstal Azure PowerShell. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.
Langkah-langkah berikut memandu Anda membuat instans API Management dan menetapkannya sebagai identitas dengan menggunakan Azure PowerShell.
Jika diperlukan, instal Azure PowerShell menggunakan instruksi yang terdapat dalam panduan Azure PowerShell. Lalu jalankan
Connect-AzAccount
untuk membuat koneksi dengan Azure.Gunakan kode berikut untuk membuat instans dengan identitas terkelola yang ditetapkan sistem. Untuk contoh selengkapnya tentang cara menggunakan Azure PowerShell dengan instans API Management, lihat sampel API Management PowerShell.
# Create a resource group. New-AzResourceGroup -Name $resourceGroupName -Location $location # Create an API Management Consumption Sku service. New-AzApiManagement -ResourceGroupName $resourceGroupName -Name consumptionskuservice -Location $location -Sku Consumption -Organization contoso -AdminEmail contoso@contoso.com -SystemAssignedIdentity
Anda juga dapat memperbarui instans yang ada untuk membuat identitas:
# Get an API Management instance
$apimService = Get-AzApiManagement -ResourceGroupName $resourceGroupName -Name $apiManagementName
# Update an API Management instance
Set-AzApiManagement -InputObject $apimService -SystemAssignedIdentity
Templat Azure Resource Manager
Anda dapat membuat instans API Management dengan identitas yang ditetapkan sistem dengan menyertakan properti berikut dalam definisi sumber daya:
"identity" : {
"type" : "SystemAssigned"
}
Properti ini memberi tahu Azure untuk membuat dan mengelola identitas instans API Management Anda.
Misalnya, templat Azure Resource Manager lengkap mungkin terlihat seperti berikut ini:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "0.9.0.0",
"resources": [{
"apiVersion": "2021-08-01",
"name": "contoso",
"type": "Microsoft.ApiManagement/service",
"location": "[resourceGroup().location]",
"tags": {},
"sku": {
"name": "Developer",
"capacity": "1"
},
"properties": {
"publisherEmail": "admin@contoso.com",
"publisherName": "Contoso"
},
"identity": {
"type": "systemAssigned"
}
}]
}
Saat instans dibuat, instans tersebut memiliki properti tambahan berikut:
"identity": {
"type": "SystemAssigned",
"tenantId": "<TENANTID>",
"principalId": "<PRINCIPALID>"
}
Properti tenantId
mengidentifikasi penyewa Microsoft Entra tempat identitas berada. Properti principalId
adalah pengidentifikasi unik untuk identitas baru instans. Dalam ID Microsoft Entra, perwakilan layanan memiliki nama yang sama dengan yang Anda berikan ke instans API Management Anda.
Catatan
Instans API Management dapat memiliki identitas yang ditetapkan sistem dan ditetapkan pengguna secara bersamaan. Dalam kasus ini, properti type
akan menjadi SystemAssigned,UserAssigned
.
Mengonfigurasi akses Key Vault menggunakan identitas terkelola
Konfigurasi berikut diperlukan agar API Management mengakses rahasia dan sertifikat dari brankas kunci Azure.
Mengonfigurasi akses ke brankas kunci
Di portal, arahkan ke brankas kunci Anda.
Di menu sebelah kiri, pilih Konfigurasi akses, dan perhatikan Model izin yang dikonfigurasi.
Bergantung pada model izin, konfigurasikan kebijakan akses brankas kunci atau akses Azure RBAC untuk identitas terkelola API Management.
Untuk menambahkan kebijakan akses brankas kunci:
- Di menu sebelah kiri, pilih Kebijakan akses.
- Pada halaman Kebijakan akses, pilih + Buat.
- Pada tab Izin , di bawah Izin rahasia, pilih Dapatkan dan Daftar, lalu pilih Berikutnya.
- Pada tab Utama , Pilih prinsipal, cari nama sumber daya identitas terkelola Anda, lalu pilih Berikutnya. Jika Anda menggunakan identitas yang ditetapkan sistem, prinsipal adalah nama instans API Management Anda.
- Pilih Berikutnya lagi. Di tab Tinjau + buat, pilih Buat.
Untuk mengonfigurasi akses Azure RBAC:
- Di menu sebelah kiri, pilih Kontrol akses (IAM).
- Pada halaman Kontrol akses (IAM), pilih Tambahkan penetapan peran.
- Pada tab Peran , pilih Pengguna Sertifikat Key Vault.
- Pada tab Anggota, pilih Identitas> terkelola+ Pilih anggota.
- Pada halaman Pilih identitas terkelola, pilih identitas terkelola yang ditetapkan sistem atau identitas terkelola yang ditetapkan pengguna yang terkait dengan instans API Management Anda, lalu pilih Pilih.
- Pilih Tinjau + tetapkan.
Persyaratan untuk firewall Key Vault
Jika firewall Key Vault diaktifkan pada brankas kunci Anda, berikut ini adalah persyaratan tambahan:
Anda harus menggunakan identitas terkelola yang ditetapkan sistem oleh instans API Management untuk mengakses brankas kunci.
Di firewall Key Vault, aktifkan opsi Izinkan Layanan Microsoft Tepercaya untuk melewati firewall ini.
Pastikan bahwa alamat IP klien lokal Anda diizinkan untuk mengakses brankas kunci untuk sementara saat Anda memilih sertifikat atau rahasia untuk ditambahkan ke Azure API Management. Untuk informasi lebih lanjut, lihat Mengonfigurasi pengaturan jaringan Azure Key Vault.
Setelah menyelesaikan konfigurasi, Anda dapat memblokir alamat klien Anda di firewall brankas kunci.
Persyaratan jaringan virtual
Jika instance Manajemen API diterapkan di jaringan virtual, konfigurasikan juga pengaturan jaringan berikut:
- Aktifkan titik akhir layanan ke Azure Key Vault pada subnet API Management.
- Mengonfigurasi aturan grup keamanan jaringan (NSG) untuk memungkinkan lalu lintas keluar ke tag layanan AzureKeyVault dan AzureActiveDirectory.
Untuk detailnya, lihat Konfigurasi jaringan saat menyiapkan Azure API Management di VNet.
Skenario yang didukung menggunakan identitas yang ditetapkan sistem
Mendapatkan sertifikat TLS/SSL kustom untuk instans API Management dari Azure Key Vault
Anda dapat menggunakan identitas yang ditetapkan sistem dari instans API Management untuk mengambil sertifikat TLS/SSL kustom yang disimpan di Azure Key Vault. Anda kemudian dapat menetapkan sertifikat ini ke domain kustom di instans API Management. Ingatlah pertimbangan ini:
- Jenis konten rahasia harus application/x-pkcs12. Pelajari lebih lanjut tentang persyaratan sertifikat domain kustom.
- Gunakan titik akhir rahasia sertifikat Key Vault, yang berisi rahasia.
Penting
Jika Anda tidak menyediakan versi objek sertifikat, API Management akan secara otomatis mendapatkan versi sertifikat yang lebih baru dalam waktu empat jam setelah diperbarui di Key Vault.
Contoh berikut menunjukkan templat Azure Resource Manager yang menggunakan identitas terkelola yang ditetapkan sistem dari instans layanan API Management untuk mengambil sertifikat domain kustom dari Key Vault.
Prasyarat
- Instans layanan API Management dikonfigurasi dengan identitas terkelola yang ditetapkan sistem. Untuk membuat instans, Anda dapat menggunakan Templat Mulai Cepat Azure.
- Instans Azure Key Vault dalam grup sumber daya yang sama, menghosting sertifikat yang akan digunakan sebagai sertifikat domain kustom di API Management.
Template berikut berisi langkah-langkah berikut.
- Perbarui kebijakan akses instans Azure Key Vault dan izinkan instans API Management untuk mendapatkan rahasia darinya.
- Perbarui instans API Management dengan mengatur nama domain kustom melalui sertifikat dari instans Key Vault.
Saat Anda menjalankan templat, berikan nilai parameter yang sesuai untuk lingkungan Anda.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"apiManagementServiceName": {
"type": "string",
"minLength": 8,
"metadata":{
"description": "The name of the API Management service"
}
},
"publisherEmail": {
"type": "string",
"minLength": 1,
"metadata": {
"description": "The email address of the owner of the service"
}
},
"publisherName": {
"type": "string",
"minLength": 1,
"metadata": {
"description": "The name of the owner of the service"
}
},
"sku": {
"type": "string",
"allowedValues": ["Developer",
"Standard",
"Premium"],
"defaultValue": "Developer",
"metadata": {
"description": "The pricing tier of this API Management service"
}
},
"skuCount": {
"type": "int",
"defaultValue": 1,
"metadata": {
"description": "The instance size of this API Management service."
}
},
"keyVaultName": {
"type": "string",
"metadata": {
"description": "Name of the key vault"
}
},
"proxyCustomHostname1": {
"type": "string",
"metadata": {
"description": "Gateway custom hostname 1. Example: api.contoso.com"
}
},
"keyVaultIdToCertificate": {
"type": "string",
"metadata": {
"description": "Reference to the key vault certificate. Example: https://contoso.vault.azure.net/secrets/contosogatewaycertificate"
}
}
},
"variables": {
"apimServiceIdentityResourceId": "[concat(resourceId('Microsoft.ApiManagement/service', parameters('apiManagementServiceName')),'/providers/Microsoft.ManagedIdentity/Identities/default')]"
},
"resources": [
{
"apiVersion": "2021-08-01",
"name": "[parameters('apiManagementServiceName')]",
"type": "Microsoft.ApiManagement/service",
"location": "[resourceGroup().location]",
"tags": {
},
"sku": {
"name": "[parameters('sku')]",
"capacity": "[parameters('skuCount')]"
},
"properties": {
"publisherEmail": "[parameters('publisherEmail')]",
"publisherName": "[parameters('publisherName')]"
},
"identity": {
"type": "systemAssigned"
}
},
{
"type": "Microsoft.KeyVault/vaults/accessPolicies",
"name": "[concat(parameters('keyVaultName'), '/add')]",
"apiVersion": "2018-02-14",
"properties": {
"accessPolicies": [{
"tenantId": "[reference(variables('apimServiceIdentityResourceId'), '2018-11-30').tenantId]",
"objectId": "[reference(variables('apimServiceIdentityResourceId'), '2018-11-30').principalId]",
"permissions": {
"secrets": ["get", "list"]
}
}]
}
},
{
"apiVersion": "2021-04-01",
"type": "Microsoft.Resources/deployments",
"name": "apimWithKeyVault",
"dependsOn": [
"[resourceId('Microsoft.ApiManagement/service', parameters('apiManagementServiceName'))]"
],
"properties": {
"mode": "incremental",
"template": {
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"resources": [{
"apiVersion": "2021-08-01",
"name": "[parameters('apiManagementServiceName')]",
"type": "Microsoft.ApiManagement/service",
"location": "[resourceGroup().location]",
"tags": {
},
"sku": {
"name": "[parameters('sku')]",
"capacity": "[parameters('skuCount')]"
},
"properties": {
"publisherEmail": "[parameters('publisherEmail')]",
"publisherName": "[parameters('publisherName')]",
"hostnameConfigurations": [{
"type": "Proxy",
"hostName": "[parameters('proxyCustomHostname1')]",
"keyVaultId": "[parameters('keyVaultIdToCertificate')]"
}]
},
"identity": {
"type": "systemAssigned"
}
}]
}
}
}
]
}
Menyimpan dan mengelola nilai bernama dari Azure Key Vault
Anda dapat menggunakan identitas terkelola yang ditetapkan sistem untuk mengakses Azure Key Vault untuk menyimpan dan mengelola rahasia untuk digunakan dalam kebijakan API Management. Untuk informasi selengkapnya,lihat Menggunakan nilai bernama dalam kebijakan Azure API Management.
Mengautentikasi ke backend dengan menggunakan identitas API Management
Anda dapat menggunakan identitas yang ditetapkan sistem untuk mengautentikasi ke backend melalui kebijakan identitas yang dikelola autentikasi.
Menyambungkan ke sumber daya Azure di belakang firewall IP menggunakan identitas terkelola yang ditetapkan sistem
API Management adalah layanan Microsoft tepercaya untuk sumber daya berikut. Ini memungkinkan layanan untuk terhubung ke sumber daya berikut di balik firewall. Setelah Anda secara eksplisit menetapkan peran Azure yang sesuai ke identitas terkelola yang ditetapkan sistem untuk instans sumber daya tersebut, cakupan akses untuk instans tersebut sesuai dengan peran Azure yang ditetapkan untuk identitas terkelola.
Layanan Azure | Tautan |
---|---|
Azure Key Vault | Trusted-access-to-azure-key-vault |
Azure Storage | Trusted-access-to-azure-storage |
Azure Service Bus | Trusted-access-to-azure-service-bus |
Azure Event Hubs | Trusted-access-to-azure-event-hub |
Mencatat peristiwa ke pusat aktivitas
Anda dapat mengonfigurasi dan menggunakan identitas terkelola yang ditetapkan sistem untuk mengakses pusat aktivitas untuk peristiwa pengelogan dari instans API Management. Untuk informasi selengkapnya, lihat Cara mencatat peristiwa ke Azure Event Hubs di Azure API Management.
Membuat identitas terkelola yang ditetapkan pengguna
Catatan
Anda dapat mengaitkan instans API Management dengan hingga 10 identitas terkelola yang ditetapkan pengguna.
Portal Azure
Untuk menyiapkan identitas terkelola di portal, Anda harus membuat instans API Management terlebih dahulu dan membuat identitas yang ditetapkan pengguna. Kemudian, aktifkan fitur tersebut.
Buat instans API Management di portal seperti biasa. Telusuri instans tersebut di portal.
Di menu sebelah kiri, di bawah Keamanan, pilih Identitas terkelola.
Pada tab Ditetapkan pengguna, pilih Tambahkan.
Cari identitas yang Anda buat sebelumnya dan pilih identitas tersebut. Pilih Tambahkan.
Azure PowerShell
Catatan
Sebaiknya Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Untuk memulai, lihat Menginstal Azure PowerShell. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.
Langkah-langkah berikut memandu Anda membuat instans API Management dan menetapkannya sebagai identitas dengan menggunakan Azure PowerShell.
Jika diperlukan, instal Azure PowerShell menggunakan instruksi yang terdapat dalam panduan Azure PowerShell. Lalu jalankan
Connect-AzAccount
untuk membuat koneksi dengan Azure.Gunakan kode berikut untuk membuat instans. Untuk contoh selengkapnya tentang cara menggunakan Azure PowerShell dengan instans API Management, lihat sampel API Management PowerShell.
# Create a resource group. New-AzResourceGroup -Name $resourceGroupName -Location $location # Create a user-assigned identity. This requires installation of the "Az.ManagedServiceIdentity" module. $userAssignedIdentity = New-AzUserAssignedIdentity -Name $userAssignedIdentityName -ResourceGroupName $resourceGroupName # Create an API Management Consumption Sku service. $userIdentities = @($userAssignedIdentity.Id) New-AzApiManagement -ResourceGroupName $resourceGroupName -Location $location -Name $apiManagementName -Organization contoso -AdminEmail admin@contoso.com -Sku Consumption -UserAssignedIdentity $userIdentities
Anda juga dapat memperbarui layanan yang ada untuk menetapkan identitas ke layanan:
# Get an API Management instance
$apimService = Get-AzApiManagement -ResourceGroupName $resourceGroupName -Name $apiManagementName
# Create a user-assigned identity. This requires installation of the "Az.ManagedServiceIdentity" module.
$userAssignedIdentity = New-AzUserAssignedIdentity -Name $userAssignedIdentityName -ResourceGroupName $resourceGroupName
# Update an API Management instance
$userIdentities = @($userAssignedIdentity.Id)
Set-AzApiManagement -InputObject $apimService -UserAssignedIdentity $userIdentities
Templat Azure Resource Manager
Anda dapat membuat instans API Management dengan identitas dengan menyertakan properti berikut dalam definisi sumber daya:
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<RESOURCEID>": {}
}
}
Tambahkan jenis yang ditetapkan pengguna, yang memberi tahu Azure untuk menggunakan identitas yang ditetapkan pengguna yang ditentukan untuk instans Anda.
Misalnya, templat Azure Resource Manager lengkap mungkin terlihat seperti berikut ini:
{
"$schema": "https://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
"contentVersion": "0.9.0.0",
"resources": [{
"apiVersion": "2021-08-01",
"name": "contoso",
"type": "Microsoft.ApiManagement/service",
"location": "[resourceGroup().location]",
"tags": {},
"sku": {
"name": "Developer",
"capacity": "1"
},
"properties": {
"publisherEmail": "admin@contoso.com",
"publisherName": "Contoso"
},
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('identityName'))]": {}
}
},
"dependsOn": [
"[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('identityName'))]"
]
}]
}
Saat instans dibuat, instans tersebut memiliki properti tambahan berikut:
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"<RESOURCEID>": {
"principalId": "<PRINCIPALID>",
"clientId": "<CLIENTID>"
}
}
}
Properti principalId
adalah pengidentifikasi unik untuk identitas yang digunakan untuk administrasi Microsoft Entra. Properti clientId
ini adalah pengidentifikasi unik untuk identitas baru aplikasi yang digunakan untuk menentukan identitas mana yang akan digunakan selama panggilan runtime.
Catatan
Instans API Management dapat memiliki identitas yang ditetapkan sistem dan ditetapkan pengguna secara bersamaan. Dalam kasus ini, properti type
akan menjadi SystemAssigned,UserAssigned
.
Skenario yang didukung menggunakan identitas terkelola yang ditetapkan pengguna
Mendapatkan sertifikat TLS/SSL kustom untuk instans API Management dari Azure Key Vault
Anda dapat menggunakan identitas yang ditetapkan pengguna untuk membangun kepercayaan antara instans API Management dan KeyVault. Kepercayaan ini kemudian dapat digunakan untuk mengambil sertifikat TLS/SSL kustom yang disimpan di Azure Key Vault. Anda kemudian dapat menetapkan sertifikat ini ke domain kustom di instans API Management.
Penting
Jika Firewall Key Vault diaktifkan di brankas kunci, Anda tidak dapat menggunakan identitas yang ditetapkan pengguna untuk akses dari API Management. Anda dapat menggunakan identitas yang ditetapkan sistem sebagai gantinya. Di firewall Key Vault, opsi Izinkan Layanan Microsoft Tepercaya untuk melewati firewall ini juga harus diaktifkan.
Ingatlah pertimbangan ini:
- Jenis konten rahasia harus application/x-pkcs12.
- Gunakan titik akhir rahasia sertifikat Key Vault, yang berisi rahasia.
Penting
Jika Anda tidak menyediakan versi objek sertifikat, API Management akan secara otomatis mendapatkan versi sertifikat yang lebih baru dalam waktu empat jam setelah diperbarui di Key Vault.
Menyimpan dan mengelola nilai bernama dari Azure Key Vault
Anda dapat menggunakan identitas terkelola yang ditetapkan pengguna untuk mengakses Azure Key Vault untuk menyimpan dan mengelola rahasia untuk digunakan dalam kebijakan API Management. Untuk informasi selengkapnya,lihat Menggunakan nilai bernama dalam kebijakan Azure API Management.
Catatan
Jika Firewall Key Vault diaktifkan di brankas kunci, Anda tidak dapat menggunakan identitas yang ditetapkan pengguna untuk akses dari API Management. Anda dapat menggunakan identitas yang ditetapkan sistem sebagai gantinya. Di firewall Key Vault, opsi Izinkan Layanan Microsoft Tepercaya untuk melewati firewall ini juga harus diaktifkan.
Mengautentikasi ke backend dengan menggunakan identitas yang ditetapkan pengguna
Anda dapat menggunakan identitas yang ditetapkan pengguna untuk mengautentikasi ke backend melalui kebijakan identitas yang dikelola autentikasi.
Mencatat peristiwa ke pusat aktivitas
Anda dapat mengonfigurasi dan menggunakan identitas terkelola yang ditetapkan pengguna untuk mengakses hub peristiwa untuk peristiwa pengelogan dari instans API Management. Untuk informasi selengkapnya, lihat Cara mencatat peristiwa ke Azure Event Hubs di Azure API Management.
Menghapus sebuah identitas
Anda dapat menghapus identitas yang ditetapkan sistem dengan menonaktifkan fitur melalui portal atau templat Azure Resource Manager dengan cara yang sama seperti yang dibuat. Identitas yang ditetapkan pengguna dapat dihapus satu per satu. Untuk menghapus semua identitas, atur jenis identitas ke "None"
.
Menghapus identitas yang ditetapkan sistem dengan cara ini juga akan menghapusnya dari ID Microsoft Entra. Identitas yang ditetapkan sistem juga secara otomatis dihapus dari ID Microsoft Entra saat instans API Management dihapus.
Untuk menghapus semua identitas dengan menggunakan templat Azure Resource Manager, perbarui bagian ini:
"identity": {
"type": "None"
}
Penting
Jika instans API Management dikonfigurasi dengan sertifikat SSL kustom dari Key Vault dan Anda mencoba untuk menonaktifkan identitas terkelola, permintaan akan gagal.
Anda dapat membuka blokir sendiri dengan beralih dari sertifikat Azure Key Vault ke sertifikat yang dikodekan sebaris, lalu menonaktifkan identitas terkelola. Untuk informasi selengkapnya, lihat Mengonfigurasi nama domain kustom.
Langkah berikutnya
Pelajari selengkapnya tentang identitas terkelola untuk sumber daya Azure: