Поделиться через


Добавление или изменение условий назначения ролей Azure с помощью REST API

Условие назначения ролей Azure — это дополнительная проверка, которую можно дополнительно добавить в назначение роли, чтобы обеспечить более точное управление доступом. Например, можно добавить условие, требующее, чтобы у объекта был конкретный тег, чтобы его можно было прочитать. В этой статье описывается, как добавлять, изменять, перечислять или удалять условия назначения ролей с помощью REST API.

Предпосылки

Необходимо использовать следующие версии:

  • 2020-03-01-preview или более поздняя версия.
  • 2020-04-01-preview или более поздней версии, если вы хотите использовать свойство description для назначения ролей
  • 2022-04-01 является первой стабильной версией

Дополнительные сведения о предварительных требованиях для добавления или изменения условий назначения ролей см. в разделе "Условия".

Добавить условие

Чтобы добавить условие назначения ролей, используйте задания ролей — создание REST API. Назначения ролей— создание включает следующие параметры, связанные с условиями.

Параметр Тип Описание
condition Струна Условие, при котором пользователю может быть предоставлено разрешение.
conditionVersion Струна Версия синтаксиса условия. Если condition задано без conditionVersion, версия устанавливается на значение по умолчанию 2.0.

Используйте следующий запрос и текст:

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}"
    }
}

В следующем примере показано, как назначить роль чтения данных BLOB-объектов хранилища с условием. Условие проверяет, совпадает ли имя контейнера с '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"
    }
}

Ниже приведен пример выходных данных:

{
    "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}"
}

Изменение условия

Чтобы изменить существующее условие назначения ролей, используйте те же Назначения ролей - Создать REST API, которые вы использовали для добавления условия назначения ролей. Ниже показан пример JSON, где condition и description обновляются. Только свойства condition, conditionVersion и description можно изменять. Чтобы соответствовать существующему назначению роли, необходимо указать другие свойства.

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"
    }
}

Перечислите условие

Чтобы получить список условий назначения ролей, используйте REST API получения или перечисления назначений ролей . Дополнительные сведения см. в разделе "Список назначений ролей Azure" с помощью REST API.

Удаление условия

Чтобы удалить условие назначения роли, измените условие назначения роли и задайте для версии условия пустую строку или null.

Кроме того, если вы хотите удалить назначение роли и условие, можно использовать назначение ролей — удалить API. Дополнительные сведения см. в статье Удаление назначений ролей Azure.

Дальнейшие действия