Membuat atau memperbarui peran kustom Azure menggunakan templat ARM

Jika Azure built-in roles tidak memenuhi kebutuhan spesifik organisasi, Anda dapat membuat peran kustom sendiri. Artikel ini menjelaskan cara membuat atau memperbarui peran kustom menggunakan templat Azure Resource Manager (templat ARM).

Templat Azure Resource Manager adalah file JavaScript Object Notation (JSON) yang menentukan infrastruktur dan konfigurasi untuk proyek Anda. Template tersebut menggunakan sintaksis deklaratif. Anda menjelaskan penyebaran yang Dimaksudkan tanpa menulis urutan perintah pemrograman untuk membuat penyebaran.

Untuk membuat peran kustom, Anda menentukan nama peran, izin, dan tempat peran dapat digunakan. Dalam artikel ini, Anda membuat peran bernama Custom Role - RG Reader dengan izin sumber daya yang dapat ditetapkan pada lingkup langganan atau yang lebih rendah.

Jika lingkungan Anda telah memenuhi prasyarat dan Anda terbiasa menggunakan templat ARM, pilih tombol Sebarkan ke Azure. Templat akan terbuka di portal Microsoft Azure.

Button to deploy the Resource Manager template to Azure.

Prasyarat

Untuk membuat peran kustom, Anda harus memiliki:

  • Izin untuk membuat peran kustom, seperti Administrator Akses Pengguna.

Anda harus menggunakan versi berikut:

  • 2018-07-01 atau yang lebih baru

Untuk informasi selengkapnya, lihat API versi REST API Azure RBAC.

Meninjau templat

Templat yang digunakan dalam artikel ini berasal dari Templat Azure Quickstart. Template memiliki empat parameter dan bagian sumber daya. Empat parameter tersebut adalah:

  • Array dari tindakan dengan nilai default ["Microsoft.Resources/subscriptions/resourceGroups/read"].
  • Array dari notActions dengan nilai default kosong.
  • Nama peran dengan nilai default Custom Role - RG Reader.
  • Deskripsi peran dengan nilai default dari Subscription Level Deployment of a Role Definition.

Lingkup di mana peran kustom ini dapat ditetapkan diatur ke langganan saat ini.

{
  "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.25.53.49325",
      "templateHash": "16704138909949665309"
    }
  },
  "parameters": {
    "actions": {
      "type": "array",
      "defaultValue": [
        "Microsoft.Resources/subscriptions/resourceGroups/read"
      ],
      "metadata": {
        "description": "Array of actions for the roleDefinition"
      }
    },
    "notActions": {
      "type": "array",
      "defaultValue": [],
      "metadata": {
        "description": "Array of notActions for the roleDefinition"
      }
    },
    "roleName": {
      "type": "string",
      "defaultValue": "Custom Role - RG Reader",
      "metadata": {
        "description": "Friendly name of the role definition"
      }
    },
    "roleDescription": {
      "type": "string",
      "defaultValue": "Subscription Level Deployment of a Role Definition",
      "metadata": {
        "description": "Detailed description of the role definition"
      }
    }
  },
  "variables": {
    "roleDefName": "[guid(parameters('roleName'))]"
  },
  "resources": [
    {
      "type": "Microsoft.Authorization/roleDefinitions",
      "apiVersion": "2022-04-01",
      "name": "[variables('roleDefName')]",
      "properties": {
        "roleName": "[parameters('roleName')]",
        "description": "[parameters('roleDescription')]",
        "type": "customRole",
        "permissions": [
          {
            "actions": "[parameters('actions')]",
            "notActions": "[parameters('notActions')]"
          }
        ],
        "assignableScopes": [
          "[subscription().id]"
        ]
      }
    }
  ]
}

Sumber daya yang ditentukan di templat adalah:

Menyebarkan templat

Ikuti langkah-langkah ini untuk menggunakan templat sebelumnya.

  1. Masuk ke portal Azure.

  2. Buka Azure Cloud Shell untuk PowerShell.

  3. Salin dan tempel skrip berikut ke Cloud Shell.

    $location = Read-Host -Prompt "Enter a location (i.e. centralus)"
    [string[]]$actions = Read-Host -Prompt "Enter actions as a comma-separated list (i.e. action1,action2)"
    $actions = $actions.Split(',')
    $templateUri = "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/subscription-deployments/create-role-def/azuredeploy.json"
    New-AzDeployment -Location $location -TemplateUri $templateUri -actions $actions
    
  4. Masukkan lokasi untuk penyebaran seperti centralus.

  5. Masukkan daftar tindakan untuk peran kustom sebagai daftar yang dipisahkan koma seperti Microsoft.Resources/resources/read,Microsoft.Resources/subscriptions/resourceGroups/read.

  6. Jika perlu, tekan Enter untuk menjalankan New-AzDeployment perintah.

    Perintah New-AzDeployment menggunakan templat untuk membuat peran kustom.

    Anda akan melihat output yang mirip dengan hal berikut:

    PS> New-AzDeployment -Location $location -TemplateUri $templateUri -actions $actions
    
    Id                      : /subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/azuredeploy
    DeploymentName          : azuredeploy
    Location                : centralus
    ProvisioningState       : Succeeded
    Timestamp               : 6/25/2020 8:08:32 PM
    Mode                    : Incremental
    TemplateLink            :
                              Uri            : https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/subscription-deployments/create-role-def/azuredeploy.json
                              ContentVersion : 1.0.0.0
    
    Parameters              :
                              Name               Type                       Value
                              =================  =========================  ==========
                              actions            Array                      [
                                "Microsoft.Resources/resources/read",
                                "Microsoft.Resources/subscriptions/resourceGroups/read"
                              ]
                              notActions         Array                      []
                              roleName           String                     Custom Role - RG Reader
                              roleDescription    String                     Subscription Level Deployment of a Role Definition
    
    Outputs                 :
    DeploymentDebugLogLevel :
    

Meninjau sumber daya yang disebarkan

Ikuti langkah-langkah ini untuk memverifikasi bahwa peran kustom dibuat.

  1. Jalankan perintah Get-AzRoleDefinition untuk mencantumkan peran kustom.

    Get-AzRoleDefinition "Custom Role - RG Reader" | ConvertTo-Json
    

    Anda akan melihat output yang mirip dengan hal berikut:

    {
      "Name": "Custom Role - RG Reader",
      "Id": "11111111-1111-1111-1111-111111111111",
      "IsCustom": true,
      "Description": "Subscription Level Deployment of a Role Definition",
      "Actions": [
        "Microsoft.Resources/resources/read",
        "Microsoft.Resources/subscriptions/resourceGroups/read"
      ],
      "NotActions": [],
      "DataActions": [],
      "NotDataActions": [],
      "AssignableScopes": [
        "/subscriptions/{subscriptionId}"
      ]
    }
    
  2. Di portal Azure, buka langganan Anda.

  3. Di menu sebelah kiri, pilih Kontrol akses (IAM).

  4. Pilih tab Peran.

  5. Atur daftar Tipe ke CustomRole.

  6. Verifikasi bahwa peran dari Peran Kustom - Pembaca RG dicantumkan.

    New custom role in Azure portal

Perbarui peran kustom

Mirip dengan membuat peran kustom, Anda dapat memperbarui peran kustom yang ada dengan menggunakan templat. Untuk memperbarui peran kustom, Anda harus menentukan peran yang ingin Anda perbarui.

Berikut adalah perubahan yang perlu Anda lakukan pada templat Quickstart sebelumnya untuk memperbarui peran kustom.

  • Sertakan ID peran sebagai parameter.

        ...
        "roleDefName": {
          "type": "string",
          "metadata": {
            "description": "ID of the role definition"
          }
        ...
    
  • Sertakan parameter ID peran dalam definisi peran.

      ...
      "resources": [
        {
          "type": "Microsoft.Authorization/roleDefinitions",
          "apiVersion": "2022-04-01",
          "name": "[parameters('roleDefName')]",
          "properties": {
            ...
    

Berikut ini contoh cara menggunakan templat.

$location = Read-Host -Prompt "Enter a location (i.e. centralus)"
[string[]]$actions = Read-Host -Prompt "Enter actions as a comma-separated list (i.e. action1,action2)"
$actions = $actions.Split(',')
$roleDefName = Read-Host -Prompt "Enter the role ID to update"
$templateFile = "rg-reader-update.json"
New-AzDeployment -Location $location -TemplateFile $templateFile -actions $actions -roleDefName $roleDefName

Membersihkan sumber daya

Untuk menghapus peran kustom, ikuti langkah-langkah ini.

  1. Jalankan perintah berikut untuk menghapus peran kustom.

    Get-AzRoleDefinition -Name "Custom Role - RG Reader" | Remove-AzRoleDefinition
    
  2. Masukkan Y untuk mengonfirmasi bahwa Anda ingin menghapus peran kustom.

Langkah berikutnya