Menambahkan kondisi penetapan peran Azure menggunakan templat Azure Resource Manager

Kondisi penetapan peran Azure adalah pemeriksaan tambahan yang dapat Anda tambahkan secara opsional ke penetapan peran milik Anda untuk memberikan kontrol akses yang lebih terperinci. Misalnya, Anda dapat menambahkan kondisi yang mengharuskan objek memiliki tag tertentu untuk membaca objek. Artikel ini menjelaskan cara menambahkan kondisi untuk penetapan peran Anda menggunakan templat Azure Resource Manager.

Prasyarat

Anda harus menggunakan versi berikut:

  • 2020-03-01-preview atau yang lebih baru
  • 2020-04-01-preview atau yang lebih baru jika Anda ingin menggunakan description properti untuk penetapan peran
  • 2022-04-01 adalah versi stabil pertama

Untuk informasi selengkapnya tentang prasyarat untuk menambahkan kondisi penetapan peran, lihat Prasyarat kondisi.

Menambahkan kondisi

Templat berikut menunjukkan cara menetapkan peran Pembaca Data Blob Penyimpanan dengan kondisi. Kondisi memeriksa apakah nama kontainer sama dengan 'blobs-example-container'.

Untuk menggunakan templat, Anda harus menentukan input berikut:

  • ID pengguna, grup, identitas terkelola, atau aplikasi yang akan ditetapkan perannya.
  • Jenis perwakilan, seperti User, Group, atau ServicePrincipal. Untuk informasi selengkapnya, lihat Perwakilan layanan baru.
{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "principalId": {
            "type": "string",
            "metadata": {
                "description": "Principal ID to assign the role to"
            }
        },
        "principalType": {
            "type": "string",
            "metadata": {
                "description": "Type of principal"
            }
        },
        "roleAssignmentGuid": {
            "type": "string",
            "defaultValue": "[newGuid()]",
            "metadata": {
                "description": "New GUID used to identify the role assignment"
            }
        }
    },
    "variables": {
        "StorageBlobDataReader": "[concat(subscription().Id, '/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1')]" // ID for Storage Blob Data Reader role, but can be any valid role ID
    },
    "resources": [
        {
            "name": "[parameters('roleAssignmentGuid')]",
            "type": "Microsoft.Authorization/roleAssignments",
            "apiVersion": "2022-04-01", // API version to call the role assignment PUT.
            "properties": {
                "roleDefinitionId": "[variables('StorageBlobDataReader')]",
                "principalId": "[parameters('principalId')]",
                "principalType": "[parameters('principalType')]",
                "description": "Role assignment condition created with an ARM template",
                "condition": "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container'))", // Role assignment condition
                "conditionVersion": "2.0"
            }
        }
    ]
}

Lingkup penetapan peran ditentukan dari tingkat penerapan. Berikut adalah contoh perintah New-AzResourceGroupDeployment dan membuat grup penerapan az tentang cara memulai penerapan dalam grup sumber daya.

New-AzResourceGroupDeployment -ResourceGroupName example-group -TemplateFile rbac-test.json -principalId $principalId -principalType "User"
az deployment group create --resource-group example-group --template-file rbac-test.json --parameters principalId=$principalId principalType="User"

Langkah berikutnya