Přidání nebo úprava podmínek přiřazení rolí Azure pomocí rozhraní REST API

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, upravit, vypsat nebo odstranit podmínky pro přiřazení rolí pomocí rozhraní REST API.

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í nebo úpravu podmínek přiřazení role naleznete v tématu Požadavky na podmínky.

Přidat podmínku

Pokud chcete přidat podmínku přiřazení role, použijte přiřazení rolí – Vytvoření rozhraní REST API. Přiřazení rolí – Vytvoření zahrnuje následující parametry související s podmínkami.

Parametr Typ Description
condition Řetězec Podmínka, pod kterou může uživatel udělit oprávnění.
conditionVersion Řetězec Verze syntaxe podmínky Pokud condition je zadána bez conditionVersion, verze je nastavena na výchozí hodnotu 2.0.

Použijte následující požadavek a text:

PUT https://management.azure.com/{scope}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}?api-version=2022-04-01
{
    "properties": {
        "roleDefinitionId": "/{scope}/providers/Microsoft.Authorization/roleDefinitions/{roleDefinitionId}",
        "principalId": "{principalId}",
        "condition": "{condition}",
        "conditionVersion": "2.0",
        "description": "{description}"
    }
}

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

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}?api-version=2022-04-01
{
    "properties": {
        "roleDefinitionId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
        "principalId": "{principalId}",
        "condition": "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container'))",
        "conditionVersion": "2.0",
        "description": "Read access if container name equals blobs-example-container"
    }
}

Následuje příklad výstupu:

{
    "properties": {
        "roleDefinitionId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
        "principalId": "{principalId}",
        "principalType": "User",
        "scope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}",
        "condition": "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container'))",
        "conditionVersion": "2.0",
        "createdOn": "2022-07-20T06:20:44.0205560Z",
        "updatedOn": "2022-07-20T06:20:44.2955371Z",
        "createdBy": null,
        "updatedBy": "{updatedById}",
        "delegatedManagedIdentityResourceId": null,
        "description": "Read access if container name equals blobs-example-container"
    },
    "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
    "type": "Microsoft.Authorization/roleAssignments",
    "name": "{roleAssignmentId}"
}

Úprava podmínky

Pokud chcete upravit existující podmínku přiřazení role, použijte stejná přiřazení rolí – vytvořte rozhraní REST API, které jste použili k přidání podmínky přiřazení role. Následující příklad ukazuje JSON, kde condition a description jsou aktualizovány. conditionLze upravit pouze objekty , conditionVersiona description vlastnosti. Je nutné zadat další vlastnosti, které odpovídají existujícímu přiřazení role.

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}?api-version=2022-04-01
{
    "properties": {
        "roleDefinitionId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
        "principalId": "{principalId}",
        "condition": "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container' OR @Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container2'))",
        "conditionVersion": "2.0",
        "description": "Read access if container name equals blobs-example-container or blobs-example-container2"
    }
}

Výpis podmínky

Pokud chcete vypsat podmínku přiřazení role, použijte rozhraní REST API získání nebo výpisu přiřazení rolí. Další informace najdete v tématu Výpis přiřazení rolí Azure pomocí rozhraní REST API.

Odstranění podmínky

Pokud chcete odstranit podmínku přiřazení role, upravte podmínku přiřazení role a nastavte verzi podmínky i podmínky na prázdný řetězec nebo hodnotu null.

Pokud chcete také odstranit přiřazení role i podmínku, můžete použít rozhraní API pro odstranění rolí. Další informace najdete v tématu věnovaném odebrání přiřazení rolí v Azure.

Další kroky