Azure Managed Application dengan identitas terkelola
Catatan
Dukungan identitas terkelola untuk Azure Managed Applications saat ini dalam pratinjau. Gunakan versi api 2018-09-01-preview untuk menggunakan identitas terkelola.
Pelajari cara mengonfigurasi aplikasi terkelola untuk berisi identitas terkelola. Identitas terkelola dapat digunakan untuk memungkinkan pelanggan memberikan akses aplikasi terkelola ke sumber daya yang ada. Platform Azure mengelola identitas dan tidak mengharuskan Anda untuk menyediakan atau memutar rahasia apa pun. Untuk informasi selengkapnya tentang identitas terkelola di ID Microsoft Entra, lihat Identitas terkelola untuk sumber daya Azure.
Aplikasi Anda dapat diberikan dua jenis identitas:
- Identitas terkelola yang ditetapkan sistem terkait dengan 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.
Cara menggunakan identitas terkelola
Identitas terkelola memungkinkan banyak skenario untuk aplikasi terkelola. Beberapa skenario umum yang dapat diselesaikan adalah:
- Menyebarkan aplikasi terkelola yang ditautkan ke sumber daya Azure yang ada. Contohnya adalah menyebarkan komputer virtual (VM) Azure dalam aplikasi terkelola yang dilampirkan ke antarmuka jaringan yang ada.
- Memberikan aplikasi terkelola dan akses penerbit ke sumber daya Azure di luar grup sumber daya terkelola.
- Menyediakan identitas operasional aplikasi terkelola untuk Log Aktivitas dan layanan lain dalam Azure.
Menambahkan identitas terkelola
Membuat aplikasi terkelola dengan identitas terkelola mengharuskan properti lain diatur pada sumber daya Azure. Contoh berikut menunjukkan sampel properti identitas:
{
"identity": {
"type": "SystemAssigned, UserAssigned",
"userAssignedIdentities": {
"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/testRG/providers/Microsoft.ManagedIdentity/userassignedidentites/myuserassignedidentity": {}
}
}
}
Ada dua cara umum untuk membuat aplikasi terkelola dengan identity
: createUiDefinition.json dan templat Azure Resource Manager. Untuk skenario pembuatan tunggal sederhana, createUiDefinition harus digunakan untuk mengaktifkan identitas terkelola, karena memberikan pengalaman yang lebih kaya. Namun, saat berhadapan dengan sistem tingkat lanjut atau kompleks yang memerlukan penyebaran aplikasi otomatis atau beberapa terkelola, templat dapat digunakan.
Menggunakan createUiDefinition
Aplikasi terkelola dapat dikonfigurasi dengan identitas terkelola melalui createUiDefinition.json. Di bagian output, kunci managedIdentity
dapat digunakan untuk mengambil alih properti identitas templat aplikasi terkelola. Sampel berikut memungkinkan identitas terkelola yang ditetapkan sistem pada aplikasi terkelola. Objek identitas yang lebih kompleks dapat dibentuk dengan menggunakan elemen createUiDefinition untuk meminta input kepada konsumen. Input ini dapat digunakan untuk membangun aplikasi terkelola dengan identitas terkelola yang ditetapkan pengguna.
"outputs": {
"managedIdentity": { "Type": "SystemAssigned" }
}
Kapan menggunakan createUiDefinition untuk identitas terkelola
Berikut ini adalah beberapa rekomendasi tentang kapan menggunakan createUiDefinition untuk mengaktifkan identitas terkelola pada aplikasi terkelola.
- Pembuatan aplikasi terkelola melewati portal Azure atau Marketplace Azure.
- Identitas terkelola memerlukan input konsumen yang kompleks.
- Identitas terkelola diperlukan pada pembuatan aplikasi terkelola.
Kontrol createUiDefinition identitas terkelola
createUiDefinition.json mendukung kontrol identitas terkelola bawaan.
{
"$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": "applicationSettings",
"label": "Application Settings",
"subLabel": {
"preValidation": "Configure your application settings",
"postValidation": "Done"
},
"bladeTitle": "Application Settings",
"elements": [
{
"name": "appName",
"type": "Microsoft.Common.TextBox",
"label": "Managed application Name",
"toolTip": "Managed application instance name",
"visible": true
},
{
"name": "appIdentity",
"type": "Microsoft.ManagedIdentity.IdentitySelector",
"label": "Managed Identity Configuration",
"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": false,
"hideUserAssignedIdentity": false,
"readOnlySystemAssignedIdentity": false
},
"visible": true
}
]
}
],
"outputs": {
"applicationResourceName": "[steps('applicationSettings').appName]",
"location": "[location()]",
"managedIdentity": "[steps('applicationSettings').appIdentity]"
}
}
}
Menggunakan templat Azure Resource Manager
Catatan
Templat aplikasi terkelola Marketplace secara otomatis dihasilkan untuk pelanggan yang melalui pengalaman portal Azure buat.
Untuk skenario ini, managedIdentity
kunci output pada createUiDefinition harus digunakan untuk mengaktifkan identitas.
Identitas terkelola juga dapat diaktifkan melalui templat Azure Resource Manager. Sampel berikut memungkinkan identitas terkelola yang ditetapkan sistem pada aplikasi terkelola. Objek identitas yang lebih kompleks dapat dibentuk dengan menggunakan parameter templat Azure Resource Manager untuk menyediakan input. Input ini dapat digunakan untuk membangun aplikasi terkelola dengan identitas terkelola yang ditetapkan pengguna.
Kapan menggunakan templat Azure Resource Manager untuk identitas terkelola
Berikut ini adalah beberapa rekomendasi tentang kapan menggunakan templat Azure Resource Manager untuk mengaktifkan identitas terkelola pada aplikasi terkelola.
- Aplikasi terkelola dapat disebarkan secara terprogram berdasarkan templat.
- Penetapan peran kustom untuk identitas terkelola diperlukan untuk menyediakan aplikasi terkelola.
- Aplikasi terkelola tidak memerlukan alur pembuatan portal Azure dan Marketplace.
Templat SystemAssigned
Templat Azure Resource Manager dasar yang menyebarkan aplikasi terkelola dengan identitas terkelola yang ditetapkan sistem.
"resources": [
{
"type": "Microsoft.Solutions/applications",
"name": "[parameters('applicationName')]",
"apiVersion": "2018-09-01-preview",
"location": "[parameters('location')]",
"identity": {
"type": "SystemAssigned"
},
"properties": {
"ManagedResourceGroupId": "[parameters('managedByResourceGroupId')]",
"parameters": { }
}
}
]
Templat UserAssigned
Templat Azure Resource Manager dasar yang menyebarkan aplikasi terkelola dengan identitas terkelola yang ditetapkan pengguna.
"resources": [
{
"type": "Microsoft.ManagedIdentity/userAssignedIdentities",
"name": "[parameters('managedIdentityName')]",
"apiVersion": "2018-11-30",
"location": "[parameters('location')]"
},
{
"type": "Microsoft.Solutions/applications",
"name": "[parameters('applicationName')]",
"apiVersion": "2018-09-01-preview",
"location": "[parameters('location')]",
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"[resourceID('Microsoft.ManagedIdentity/userAssignedIdentities/',parameters('managedIdentityName'))]": {}
}
},
"properties": {
"ManagedResourceGroupId": "[parameters('managedByResourceGroupId')]",
"parameters": { }
}
}
]
Memberikan akses ke sumber daya Azure
Setelah aplikasi terkelola diberikan identitas, aplikasi tersebut dapat diberikan akses ke sumber daya Azure yang ada dengan membuat penetapan peran.
Untuk melakukannya, cari dan pilih nama aplikasi terkelola atau identitas terkelola yang ditetapkan pengguna, lalu pilih Kontrol akses (IAM). Untuk langkah-langkah mendetail, lihat Menetapkan peran Azure menggunakan portal Azure.
Menautkan sumber daya Azure yang sudah ada
Catatan
Identitas terkelola yang ditetapkan pengguna harus dikonfigurasi sebelum menyebarkan aplikasi terkelola. Selain itu, penyebaran sumber daya tertaut dari aplikasi terkelola hanya didukung untuk jenis Marketplace .
Identitas terkelola juga dapat digunakan untuk menyebarkan aplikasi terkelola yang memerlukan akses ke sumber daya yang ada selama penyebarannya. Ketika pelanggan menyediakan aplikasi terkelola, identitas terkelola yang ditetapkan pengguna dapat ditambahkan untuk memberikan lebih banyak otorisasi ke penyebaran mainTemplate .
Menulis createUiDefinition dengan sumber daya tertaut
Saat Anda menautkan penyebaran aplikasi terkelola ke sumber daya yang ada, sumber daya Azure yang ada dan identitas terkelola yang ditetapkan pengguna dengan penetapan peran yang berlaku pada sumber daya tersebut harus disediakan.
Contoh createUiDefinition.json yang memerlukan dua input: ID sumber daya antarmuka jaringan dan ID sumber daya identitas terkelola yang ditetapkan pengguna.
{
"$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": "Managed Application Settings",
"subLabel": {
"preValidation": "Managed Application Settings",
"postValidation": "Done"
},
"bladeTitle": "Managed Application Settings",
"elements": [
{
"name": "networkInterfaceId",
"type": "Microsoft.Common.TextBox",
"label": "Network interface resource ID",
"defaultValue": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/testRG/providers/Microsoft.Network/networkInterfaces/existingnetworkinterface",
"toolTip": "Must represent the identity as an Azure Resource Manager resource identifier format ex. /subscriptions/sub1/resourcegroups/myGroup/providers/Microsoft.Network/networkInterfaces/networkinterface1",
"visible": true
},
{
"name": "userAssignedId",
"type": "Microsoft.Common.TextBox",
"label": "User-assigned managed identity resource ID",
"defaultValue": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/testRG/providers/Microsoft.ManagedIdentity/userassignedidentites/myuserassignedidentity",
"toolTip": "Must represent the identity as an Azure Resource Manager resource identifier format ex. /subscriptions/sub1/resourcegroups/myGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity1",
"visible": true
}
]
}
],
"outputs": {
"existingNetworkInterfaceId": "[steps('managedApplicationSetting').networkInterfaceId]",
"managedIdentity": "[parse(concat('{\"Type\":\"UserAssigned\",\"UserAssignedIdentities\":{',string(steps('managedApplicationSetting').userAssignedId),':{}}}'))]"
}
}
}
Ini createUiDefinition.json menghasilkan pengalaman buat pengguna yang memiliki dua bidang. Bidang pertama memungkinkan pengguna untuk memasukkan ID sumber daya Azure untuk sumber daya yang ditautkan ke penyebaran aplikasi terkelola. Yang kedua adalah bagi konsumen untuk memasukkan ID sumber daya Azure identitas terkelola yang ditetapkan pengguna, yang memiliki akses ke sumber daya Azure yang ditautkan. Pengalaman yang dihasilkan akan terlihat seperti:
Penulisan mainTemplate dengan sumber daya yang ditautkan
Selain memperbarui createUiDefinition, templat utama juga perlu diperbarui untuk menerima yang diteruskan dalam ID sumber daya tertaut. Templat utama dapat diperbarui untuk menerima output baru dengan menambahkan parameter baru. managedIdentity
Karena output mengambil alih nilai pada templat aplikasi terkelola yang dihasilkan, output tidak diteruskan ke templat utama dan tidak boleh disertakan di bagian parameter.
Contoh templat utama yang mengatur profil jaringan ke antarmuka jaringan yang ada yang disediakan oleh createUiDefinition.json.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"existingNetworkInterfaceId": { "type": "string" }
},
"variables": {
},
"resources": [
{
"apiVersion": "2016-04-30-preview",
"type": "Microsoft.Compute/virtualMachines",
"name": "myLinkedResourceVM",
"location": "[resourceGroup().location]",
"properties": {
…,
"networkProfile": {
"networkInterfaces": [
{
"id": "[parameters('existingNetworkInterfaceId')]"
}
]
}
}
}
]
}
Menggunakan aplikasi terkelola dengan sumber daya tertaut
Setelah paket aplikasi terkelola dibuat, aplikasi terkelola dapat dikonsumsi melalui portal Azure. Sebelum dapat digunakan, ada beberapa langkah prasyarat.
- Instans sumber daya Azure yang ditautkan yang diperlukan harus dibuat.
- Identitas terkelola yang ditetapkan pengguna harus dibuat dan diberikan penetapan peran ke sumber daya yang ditautkan.
- ID sumber daya tertaut yang ada dan ID identitas terkelola yang ditetapkan pengguna disediakan untuk createUiDefinition.
Mengakses token identitas terkelola
Token aplikasi terkelola sekarang dapat diakses melalui listTokens
API dari penyewa penerbit. Contoh permintaan mungkin terlihat seperti:
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Solutions/applications/{applicationName}/listTokens?api-version=2018-09-01-preview HTTP/1.1
{
"authorizationAudience": "https://management.azure.com/",
"userAssignedIdentities": [
"/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{userAssignedIdentityName}"
]
}
Parameter Isi Permintaan:
Parameter | Wajib | Deskripsi |
---|---|---|
authorizationAudience |
no | URI ID Aplikasi dari sumber daya target. Ini juga merupakan klaim aud (audiens) dari token yang dikeluarkan. Nilai default adalah "https://management.azure.com/" |
userAssignedIdentities |
no | Daftar identitas terkelola yang ditetapkan pengguna untuk mengambil token. Jika tidak ditentukan, listTokens mengembalikan token untuk identitas terkelola yang ditetapkan sistem. |
Sampel respons mungkin terlihat seperti:
HTTP/1.1 200 OK
Content-Type: application/json
{
"value": [
{
"access_token": "eyJ0eXAi…",
"expires_in": "2…",
"expires_on": "1557…",
"not_before": "1557…",
"authorizationAudience": "https://management.azure.com/",
"resourceId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Solutions/applications/{applicationName}",
"token_type": "Bearer"
}
]
}
Respons berisi array token di value
bawah properti :
Parameter | Deskripsi |
---|---|
access_token |
Token akses yang diminta. |
expires_in |
Jumlah detik token akses valid. |
expires_on |
Rentang waktu kapan token akses kedaluwarsa. Nilai ini dinyatakan sebagai jumlah detik dari epoch. |
not_before |
Rentang waktu kapan token akses berlaku. Nilai ini dinyatakan sebagai jumlah detik dari epoch. |
authorizationAudience |
aud (audiens) yang diminta token akses. Nilai ini sama dengan apa yang disediakan dalam listTokens permintaan. |
resourceId |
ID sumber daya Azure untuk token yang dikeluarkan. Nilai ini adalah ID aplikasi terkelola atau ID identitas terkelola yang ditetapkan pengguna. |
token_type |
Jenis token. |