Menetapkan peran Azure menggunakan templat Azure Resource Manager
Artikel
Kontrol akses berbasis peran Azure (Azure RBAC) adalah sistem otorisasi yang Anda gunakan untuk mengelola akses ke sumber daya Azure. Untuk memberikan akses, Anda menetapkan peran kepada pengguna, grup, perwakilan layanan, atau identitas terkelola pada cakupan tertentu. Selain menggunakan Azure PowerShell atau Azure CLI, Anda dapat menetapkan peran menggunakan templat Azure Resource Manager. Templat dapat membantu jika Anda ingin menerapkan sumber daya secara konsisten dan berulang kali. Artikel ini menjelaskan cara menetapkan peran menggunakan templat.
Catatan
Bicep adalah bahasa baru untuk menentukan sumber daya Azure Anda. Ini memiliki pengalaman penulisan yang lebih sederhana daripada JSON, bersama dengan fitur lain yang membantu meningkatkan kualitas infrastruktur Anda sebagai kode. Kami menyarankan agar siapa pun yang baru menggunakan infrastruktur sebagai kode di Azure menggunakan Bicep, bukan JSON.
Untuk menetapkan peran, Anda perlu menentukan ID pengguna, grup, atau aplikasi mana yang ingin Anda tetapkan perannya. ID memiliki format: 11111111-1111-1111-1111-111111111111. Anda bisa mendapatkan ID menggunakan portal Microsoft Azure, Azure PowerShell, atau Azure CLI.
objectid=$(az ad sp list --display-name<Azure resource name>--query[].id --output tsv)
Aplikasi
Untuk mendapatkan ID perwakilan layanan (identitas yang digunakan oleh aplikasi), Anda dapat menggunakan perintah Get-AzADServicePrincipal atau daftar az ad sp. Untuk perwakilan layanan, gunakan ID objek dan bukan ID aplikasi.
az deployment group create --resource-group ExampleGroup --template-file rbac-test.json
Berikut ini memperlihatkan contoh penetapan peran Pembaca kepada pengguna untuk grup sumber daya setelah menerapkan templat.
Cakupan grup sumber daya atau langganan
Templat sebelumnya tidak terlalu fleksibel. Templat berikut menggunakan parameter dan dapat digunakan pada cakupan yang berbeda. Templat berikut ini menunjukkan:
Cara menetapkan peran untuk pengguna, grup, atau aplikasi di lingkup grup sumber daya atau langganan
Cara menentukan peran Pemilik, Kontributor, dan Pembaca sebagai parameter
Untuk menggunakan templat, Anda harus menentukan input berikut:
ID pengguna, grup, identitas terkelola, atau aplikasi untuk menetapkan peran
ID unik yang akan digunakan untuk penetapan peran, atau Anda dapat menggunakan ID default
JSON
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"principalId": {
"type": "string",
"metadata": {
"description": "The principal to assign the role to"
}
},
"builtInRoleType": {
"type": "string",
"allowedValues": [
"Owner",
"Contributor",
"Reader"
],
"metadata": {
"description": "Built-in role to assign"
}
},
"roleNameGuid": {
"type": "string",
"defaultValue": "[newGuid()]",
"metadata": {
"description": "A new GUID used to identify the role assignment"
}
}
},
"variables": {
"Owner": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', '8e3af657-a8ff-443c-a75c-2fe8c4bcb635')]",
"Contributor": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]",
"Reader": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]"
},
"resources": [
{
"type": "Microsoft.Authorization/roleAssignments",
"apiVersion": "2022-04-01",
"name": "[parameters('roleNameGuid')]",
"properties": {
"roleDefinitionId": "[variables(parameters('builtInRoleType'))]",
"principalId": "[parameters('principalId')]"
}
}
]
}
Catatan
Templat ini tidak demoten kecuali nilai roleNameGuid yang sama disediakan sebagai parameter untuk setiap penerapan templat. Jika roleNameGuid tidak disediakan, secara default GUID baru dihasilkan pada setiap penerapan dan penerapan berikutnya akan gagal dengan kesalahan Conflict: RoleAssignmentExists.
Untuk menggunakan templat sebelumnya, Anda harus menggunakan perintah grup sumber daya. Berikut adalah contoh perintah New-AzResourceGroupDeployment dan membuat grup penerapan az tentang cara memulai penerapan dalam grup sumber daya.
az deployment group create --resource-group ExampleGroup --template-file rbac-test.json --parametersprincipalId=$objectid builtInRoleType=Contributor
Contoh berikut ini memperlihatkan tentang penetapan peran Kontributor untuk akun penyimpanan setelah menerapkan templat.
Perwakilan layanan baru
Jika Anda membuat perwakilan layanan baru dan ingin segera mencoba menetapkan peran untuk perwakilan layanan tersebut, penetapan peran tersebut dapat gagal pada beberapa kasus. Misalnya, jika Anda membuat identitas terkelola baru lalu mencoba menetapkan peran ke perwakilan layanan tersebut dalam templat Azure Resource Manager yang sama, penetapan peran mungkin gagal. Penyebab kegagalan ini kemungkinan adalah penundaan replikasi. Perwakilan layanan dibuat di satu wilayah; namun, penetapan peran mungkin dilakukan di wilayah lain yang belum mereplikasi perwakilan layanan.
Untuk mengatasi skenario ini, Anda harus mengatur properti principalType ke ServicePrincipal saat membuat penetapan peran. Anda juga harus mengatur apiVersion dari penetapan peran ke 2018-09-01-preview atau setelahnya. 2022-04-01 adalah versi stabil pertama.
Templat berikut ini menunjukkan:
Cara membuat perwakilan layanan identitas terkelola baru
Cara menentukan principalType
Cara menetapkan peran Kontributor ke perwakilan layanan tersebut di lingkup grup sumber daya
Untuk menggunakan templat, Anda harus menentukan input berikut:
Nama dasar identitas terkelola, atau Anda bisa menggunakan string default
Menjelajahi cara menggunakan peran Azure bawaan, identitas terkelola, dan kebijakan RBAC untuk mengontrol akses ke sumber daya Azure. Identitas adalah kunci untuk mengamankan solusi.
Sintaksis dan properti Azure Microsoft.Authorization/roleAssignments untuk digunakan dalam templat Azure Resource Manager untuk menyebarkan sumber daya. Versi API terbaru
Pelajari cara memberikan akses ke sumber daya Azure untuk pengguna di lingkup grup sumber daya menggunakan templat Azure Resource Manager dan kontrol akses berbasis peran Azure (Azure RBAC).
Sintaksis dan properti Azure Microsoft.Authorization/roleDefinitions untuk digunakan dalam templat Azure Resource Manager untuk menyebarkan sumber daya. Versi API terbaru
Pelajari cara memberikan akses ke sumber daya Azure untuk pengguna di cakupan grup sumber daya menggunakan Bicep dan kontrol akses berbasis peran Azure (Azure RBAC).
Sintaksis dan properti Azure Microsoft.Authorization/roleAssignments untuk digunakan dalam templat Azure Resource Manager untuk menyebarkan sumber daya. API versi 2022-04-01
Sintaks dan properti Azure Microsoft.Resources/deployments untuk digunakan dalam templat Azure Resource Manager untuk menyebarkan sumber daya. Versi API terbaru