Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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/writehak akses, seperti Administrator Kontrol Akses Berbasis Peran - Bash di Azure Cloud Shell atau Azure CLI
Langkah-langkah untuk menetapkan peran Microsoft Azure
Untuk menetapkan peran terdiri dari tiga elemen: prinsip keamanan, definisi peran, dan cakupan.
Langkah 1: Menentukan siapa yang membutuhkan akses
Anda dapat menetapkan peran kepada 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 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 perintah 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 yang dikelola
Untuk identitas terkelola yang ditetapkan sistem atau ditetapkan pengguna, Anda memerlukan ID objek. Untuk mendapatkan ID objek, Anda dapat menggunakan perintah az ad sp list.
az ad sp list --all --filter "servicePrincipalType eq 'ManagedIdentity'"
Untuk hanya mencantumkan identitas terkelola yang ditetapkan pengguna, Anda dapat menggunakan az identity list.
az identity list
Langkah 2: Pilih peran yang sesuai
Izin dikelompokkan bersama ke dalam peran. Anda dapat memilih dari daftar beberapa peran bawaan Azure atau Anda dapat 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 daftar definisi peran az.
az role definition list --query "[].{name:name, roleType:roleType, roleName:roleName}" --output tsv
Berikut 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, jadi hindari menetapkan peran pada cakupan 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. 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 Anda bisa menggunakan daftar grup az.
az group list --query "[].{name:name}" --output tsv
Cakupan Langganan
Untuk cakupan langganan, Anda memerlukan ID langganan. Anda dapat menemukan ID di halaman Langganan di portal Microsoft Azure atau Anda bisa menggunakan daftar akun az.
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 Anda bisa menggunakan az account management-group list.
az account management-group list --query "[].{name:name, id:id}" --output tsv
Langkah 4: Tetapkan peran
Untuk menetapkan 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 menunjukkan 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
Tetapkan peran untuk semua kontainer blob dalam cakupan sumber daya akun penyimpanan
Menetapkan peran Kontributor Data Blob Penyimpanan kepada service principal dengan ID objek 55555555-5555-5555-5555-555555555555 dalam 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 lingkup sumber daya kontainer blob tertentu
Memberikan peran Kontributor Data Blob Penyimpanan kepada perwakilan layanan dengan ID objek 55555555-5555-5555-5555-555555555555 dalam cakupan sumber daya untuk kontainer blob yang 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 Mesin Virtual ke grup Ann Mack Team dengan ID 22222222-2222-2222-2222-222222222222 pada lingkup sumber daya 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"
Menetapkan peran 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
Ada beberapa kali nama peran mungkin berubah, misalnya:
- Anda menggunakan peran kustom Anda sendiri dan Anda memutuskan untuk mengubah nama.
- Anda menggunakan peran pratinjau yang memiliki (Pratinjau) dalam nama. Ketika peran dirilis, peran diganti namanya.
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 nama sebuah peran diubah, kemungkinan besar skrip Anda akan tetap 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"
Tetapkan peran untuk semua wadah blob di lingkup grup sumber daya
Menetapkan peran Kontributor Data Blob Penyimpanan ke perwakilan layanan dengan ID objek 55555555-5555-5555-5555-555555555555 dalam lingkup 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 Mesin Virtual ke aplikasi dengan ID objek prinsipal layanan 44444444-4444-4444-4444-444444444444 di cakupan kelompok 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"
Tetapkan peran untuk principal layanan baru dalam cakupan grup sumber daya.
Jika Anda membuat perwakilan layanan baru dan segera mencoba menetapkan peran ke perwakilan layanan tersebut, penetapan peran tersebut dapat gagal dalam beberapa kasus. Misalnya, jika Anda menggunakan skrip untuk membuat identitas terkelola baru lalu mencoba menetapkan peran ke perwakilan layanan tersebut, penetapan peran mungkin gagal. Alasan kegagalan ini kemungkinan adalah penundaan replikasi. Perwakilan layanan dibuat di satu wilayah; namun, penetapan peran mungkin terjadi di wilayah lain yang belum mereplikasi perwakilan layanan. Untuk mengatasi skenario ini, Anda harus menentukan jenis utama saat membuat penetapan peran.
Untuk menetapkan peran, gunakan buat penetapan peran az, 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 ke identitas terkelola msi-test di cakupan grup sumber daya penjualan farmasi :
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"
Menugaskan peran kepada pengguna dalam lingkup langganan
Menetapkan peran Pembaca kepada pengguna annm@example.com dalam lingkup 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 kepada grup Ann Mack Team dengan ID 22222222-2222-2222-2222-222222222222 dalam 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 pada cakupan langganan
Menetapkan peran Pembaca Data Blob Penyimpanan kepada pengguna alain@example.com 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"