Přidání podmínek přiřazení rolí Azure pomocí šablon Azure Resource Manageru

Podmínka přiřazení role Azure je další kontrola, kterou můžete volitelně přidat do přiřazení role, abyste zajistili podrobnější řízení přístupu. Můžete například přidat podmínku, která vyžaduje, aby objekt měl ke čtení objektu určitou značku. Tento článek popisuje, jak přidat podmínky pro přiřazení rolí pomocí šablon Azure Resource Manageru.

Předpoklady

Musíte použít následující verze:

  • 2020-03-01-preview nebo novější
  • 2020-04-01-preview nebo novější, pokud chcete vlastnost využít description pro přiřazení rolí
  • 2022-04-01 je první stabilní verze.

Další informace o požadavcích pro přidání podmínek přiřazení role naleznete v tématu Požadavky na podmínky.

Přidat podmínku

Následující šablona ukazuje, jak přiřadit roli Čtenář dat objektů blob služby Storage s podmínkou. Podmínka zkontroluje, jestli se název kontejneru rovná objektům blobs-example-container.

Pokud chcete šablonu použít, musíte zadat následující vstup:

  • ID uživatele, skupiny, spravované identity nebo aplikace pro přiřazení role.
  • Typ objektu zabezpečení, například User, Groupnebo ServicePrincipal. Další informace najdete v tématu Nový instanční objekt.
{
    "$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"
            }
        }
    ]
}

Rozsah přiřazení role se určuje z úrovně nasazení. Tady je příklad New-AzResourceGroupDeployment a az deployment group create commands for how to start the deployment at a resource group scope.

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"

Další kroky