Menetapkan peran Microsoft Azure menggunakan Azure CLI
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. Artikel ini menjelaskan cara menetapkan peran menggunakan Azure CLI.
Prasyarat
Untuk menetapkan peran, Anda harus memiliki:
Microsoft.Authorization/roleAssignments/write
izin, seperti Administrator Kontrol Akses Berbasis Peran- Bash di Azure Cloud Shell atau Azure CLI
Langkah-langkah untuk menetapkan peran Microsoft Azure
Untuk menetapan peran yang terdiri atas tiga elemen: prinsip keamanan, penentuan peran, dan cakupan.
Langkah 1: Menentukan siapa yang membutuhkan akses
Anda dapat menetapkan peran ke pengguna, grup, perwakilan layanan, atau identitas terkelola. Untuk menetapkan peran, Anda mungkin perlu menentukan ID unik objek. ID memiliki format: 11111111-1111-1111-1111-111111111111
. Anda bisa mendapatkan ID-nya menggunakan portal Microsoft Azure atau Azure CLI.
Pengguna
Untuk pengguna Microsoft Entra, dapatkan nama utama pengguna, seperti patlong@contoso.com atau ID objek pengguna. Untuk mendapatkan ID objek, Anda dapat menggunakan az ad user show.
az ad user show --id "{principalName}" --query "id" --output tsv
Grup
Untuk grup Microsoft Entra, Anda memerlukan ID objek grup. Untuk mendapatkan ID objek, Anda dapat menggunakan az ad group show atau az ad group list.
az ad group show --group "{groupName}" --query "id" --output tsv
Prinsipal layanan
Untuk perwakilan layanan Microsoft Entra (identitas yang digunakan oleh aplikasi), Anda memerlukan ID objek perwakilan layanan. Untuk mendapatkan ID objek, Anda dapat menggunakan az ad sp list. Untuk perwakilan layanan, gunakan ID objek dan bukan ID aplikasi.
az ad sp list --all --query "[].{displayName:displayName, id:id}" --output tsv
az ad sp list --display-name "{displayName}"
Identitas terkelola
Untuk identitas terkelola yang ditetapkan sistem atau yang ditetapkan pengguna, Anda memerlukan ID objek. Untuk mendapatkan ID objek, Anda dapat menggunakan az ad sp list.
az ad sp list --all --filter "servicePrincipalType eq 'ManagedIdentity'"
Anda juga dapat menggunakan az identity list untuk hanya mencantumkan identitas terkelola yang ditetapkan pengguna.
az identity list
Langkah 2: Pilih peran yang sesuai
Izin dikelompokkan bersama menjadi peran. Anda dapat memilih dari daftar beberapa peran bawaan Azure atau menggunakan peran kustom Anda sendiri. Ini adalah praktik terbaik untuk memberikan akses dengan hak istimewa paling sedikit yang diperlukan, jadi hindari menetapkan peran yang lebih luas.
Untuk mencantumkan peran dan mendapatkan ID peran unik, Anda dapat menggunakan az role definition list.
az role definition list --query "[].{name:name, roleType:roleType, roleName:roleName}" --output tsv
Berikut ini adalah cara mencantumkan detail peran tertentu.
az role definition list --name "{roleName}"
Untuk informasi selengkapnya, lihat Membuat daftar definisi peran Azure.
Langkah 3: Mengidentifikasi cakupan yang diperlukan
Azure menyediakan empat tingkat cakupan: sumber daya, grup sumber daya, langganan, dan grup manajemen. Ini adalah praktik terbaik untuk memberikan akses dengan hak istimewa paling sedikit yang diperlukan untuk menghindari penetapan peran yang lebih luas. Untuk informasi selengkapnya tentang cakupan, lihat Memahami cakupan.
Cakupan sumber daya
Untuk cakupan sumber daya, Anda memerlukan ID sumber daya untuk sumber daya tersebut. Anda dapat menemukan ID sumber daya dengan melihat properti sumber daya di portal Microsoft Azure. ID sumber daya memiliki format berikut.
/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{providerName}/{resourceType}/{resourceSubType}/{resourceName}
Cakupan grup sumber daya
Untuk cakupan grup sumber daya, Anda memerlukan nama grup sumber daya. Anda dapat menemukan nama di halaman Grup sumber daya di portal Microsoft Azure atau menggunakan az group list.
az group list --query "[].{name:name}" --output tsv
Cakupan langganan
Untuk cakupan langganan, Anda memerlukan ID langganan. Anda dapat menemukan ID pada halaman Langganan portal Microsoft Azure atau menggunakan az account list.
az account list --query "[].{name:name, id:id}" --output tsv
Cakupan grup manajemen
Untuk cakupan grup manajemen, Anda memerlukan nama grup manajemen. Anda dapat menemukan nama di halaman Grup manajemen di portal Microsoft Azure atau menggunakan az accound management-group list.
az account management-group list --query "[].{name:name, id:id}" --output tsv
Langkah 4: Tetapkan peran
Untuk metapkan peran, gunakan perintah az role assignment create. Bergantung pada cakupannya, perintah biasanya memiliki salah satu format berikut.
Cakupan sumber daya
az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/{providerName}/{resourceType}/{resourceSubType}/{resourceName}"
Cakupan grup sumber daya
az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}"
Cakupan langganan
az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}"
Cakupan grup manajemen
az role assignment create --assignee "{assignee}" \
--role "{roleNameOrId}" \
--scope "/providers/Microsoft.Management/managementGroups/{managementGroupName}"
Berikut ini memperlihatkan contoh output saat Anda menetapkan peran Kontributor Komputer Virtual kepada pengguna di cakupan grup sumber daya.
{
"canDelegate": null,
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
"name": "{roleAssignmentId}",
"principalId": "{principalId}",
"principalType": "User",
"resourceGroup": "{resourceGroupName}",
"roleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/9980e02c-c2be-4d73-94e8-173b1dc7cf3c",
"scope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}",
"type": "Microsoft.Authorization/roleAssignments"
}
Menetapkan contoh peran
Menetapkan peran untuk semua kontainer blob dalam cakupan sumber daya akun penyimpanan
Menetapkan peran Kontributor Data Blob Penyimpanan ke perwakilan layanan dengan objek ID 55555555-5555-5555-5555-555555555555 pada cakupan sumber daya untuk akun penyimpanan bernama storage12345.
az role assignment create --assignee "55555555-5555-5555-5555-555555555555" \
--role "Storage Blob Data Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345"
Menetapkan peran untuk cakupan sumber daya kontainer blob tertentu
Menetapkan peran Kontributor Data Blob Penyimpanan ke perwakilan layanan dengan objek ID 55555555-5555-5555-5555-555555555555 pada cakupan sumber daya untuk akun penyimpanan bernama blob-container-01.
az role assignment create --assignee "55555555-5555-5555-5555-555555555555" \
--role "Storage Blob Data Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/Example-Storage-rg/providers/Microsoft.Storage/storageAccounts/storage12345/blobServices/default/containers/blob-container-01"
Menetapkan peran untuk grup dalam cakupan sumber daya jaringan virtual tertentu
Menetapkan peran Kontributor Komputer Virtual ke grup Ann Mack Team dengan ID 22222222-2222-2222-2222-222222222222 di cakupan sumber daya untuk jaringan virtual bernama pharma-sales-project-network.
az role assignment create --assignee "22222222-2222-2222-2222-222222222222" \
--role "Virtual Machine Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales/providers/Microsoft.Network/virtualNetworks/pharma-sales-project-network"
Memberikan akses untuk pengguna di cakupan grup sumber daya
Menetapkan peran Kontributor Komputer Virtual untuk patlong@contoso.com pengguna di cakupan grup sumber daya penjualan farmasi.
az role assignment create --assignee "patlong@contoso.com" \
--role "Virtual Machine Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales"
Menetapkan peran untuk pengguna menggunakan ID peran unik di cakupan grup sumber daya
Nama peran dapat berubah beberapa kali, misalnya:
- Anda menggunakan peran kustom Anda sendiri dan Anda memutuskan untuk mengubah namanya.
- Anda menggunakan peran pratinjau yang memiliki (Pratinjau) dalam namanya. Ketika peran dirilis, nama peran diganti.
Meskipun peran diganti namanya, ID peran tidak berubah. Jika Anda menggunakan skrip atau otomasi untuk membuat tugas peran, ini adalah praktik terbaik untuk menggunakan ID peran unik, alih-alih nama peran. Oleh karena itu, jika peran diganti namanya, skrip Anda kemungkinan akan berfungsi.
Contoh berikut menetapkan peran Kontributor Komputer Virtual kepada patlong@contoso.com pengguna di cakupan grup sumber daya penjualan farmasi.
az role assignment create --assignee "patlong@contoso.com" \
--role "9980e02c-c2be-4d73-94e8-173b1dc7cf3c" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales"
Menetapkan peran untuk semua kontainer blob di cakupan grup sumber daya
Menetapkan peran Kontributor Data Blob Penyimpanan ke perwakilan layanan dengan ID objek 55555555-5555-5555-5555-555555555555 pada cakupan grup sumber daya Example-Storage-rg.
az role assignment create --assignee "55555555-5555-5555-5555-555555555555" \
--role "Storage Blob Data Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/Example-Storage-rg"
Menetapkan peran untuk aplikasi di cakupan grup sumber daya
Menetapkan peran Kontributor Komputer Virtual ke aplikasi dengan ID objek perwakilan layanan 44444444-4444-4444-4444-444444444444 di cakupan grup sumber daya pharma-sales.
az role assignment create --assignee "44444444-4444-4444-4444-444444444444" \
--role "Virtual Machine Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales"
Menetapkan peran untuk perwakilan layanan baru di cakupan grup sumber daya
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 menggunakan skrip untuk membuat identitas terkelola baru lalu mencoba menetapkan peran ke perwakilan layanan tersebut, 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 menangani skenario ini, Anda harus menentukan jenis perwakilan saat membuat penetapan peran.
Untuk menetapkan peran, gunakan az role assignment create, tentukan nilai untuk --assignee-object-id
, lalu atur --assignee-principal-type
ke ServicePrincipal
.
az role assignment create --assignee-object-id "{assigneeObjectId}" \
--assignee-principal-type "{assigneePrincipalType}" \
--role "{roleNameOrId}" \
--scope "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}"
Contoh berikut menetapkan peran Kontributor Komputer Virtual untuk identitas terkelola msi-test di cakupan grup sumber daya pharma-sales:
az role assignment create --assignee-object-id "33333333-3333-3333-3333-333333333333" \
--assignee-principal-type "ServicePrincipal" \
--role "Virtual Machine Contributor" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/pharma-sales"
Menetapkan peran untuk pengguna di cakupan langganan
Menetapkan peran Pembaca kepada annm@example.com pengguna di cakupan langganan.
az role assignment create --assignee "annm@example.com" \
--role "Reader" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000"
Menetapkan peran untuk grup di cakupan langganan
Menetapkan peran Pembaca ke grup Ann Mack Team dengan ID 22222222-2222-2222-2222-222222222222 pada cakupan langganan.
az role assignment create --assignee "22222222-2222-2222-2222-222222222222" \
--role "Reader" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000"
Menetapkan peran untuk semua kontainer blob di cakupan langganan
Menetapkan peran Pembaca Data Blob Penyimpanan kepada alain@example.com pengguna di cakupan langganan.
az role assignment create --assignee "alain@example.com" \
--role "Storage Blob Data Reader" \
--scope "/subscriptions/00000000-0000-0000-0000-000000000000"
Menetapkan peran untuk pengguna di cakupan grup manajemen
Menetapkan peran Pembaca Penagihan kepada alain@example.com pengguna di cakupan grup manajemen.
az role assignment create --assignee "alain@example.com" \
--role "Billing Reader" \
--scope "/providers/Microsoft.Management/managementGroups/marketing-group"