Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Условие назначения ролей 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.