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

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

Необходимые компоненты

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

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

Чтобы добавить условие назначения роли, используйте az role assignment create. Команда az role assignment create включает следующие параметры, относящиеся к условиям.

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

В нижеприведенном примере показано, как назначить роль Читатель данных больших двоичных объектов хранилища с условием. Условие проверяет, равно ли имя контейнера значению "blobs-example-container".

az role assignment create --role "Storage Blob Data Reader" --scope /subscriptions/mySubscriptionID/resourceGroups/myResourceGroupName --assignee "user1@contoso.com" \
--description "Read access if container name equals blobs-example-container" \
--condition "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers:name] StringEquals 'blobs-example-container'))" \
--condition-version "2.0"

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

{
    "canDelegate": null,
    "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",
    "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
    "name": "{roleAssignmentId}",
    "principalId": "{userObjectId}",
    "principalType": "User",
    "resourceGroup": "{resourceGroup}",
    "roleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
    "scope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}",
    "type": "Microsoft.Authorization/roleAssignments"
}

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

Чтобы изменить существующее условие назначения ролей, используйте az role assignment update и файл JSON в качестве входных данных. Ниже приведен пример файла JSON, в котором обновлены условие и описание. Изменять можно только свойства condition, conditionVersion и description. Необходимо указать все свойства, чтобы обновить условие назначения ролей.

{
    "canDelegate": null,
    "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",
    "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
    "name": "{roleAssignmentId}",
    "principalId": "{userObjectId}",
    "principalType": "User",
    "resourceGroup": "{resourceGroup}",
    "roleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
    "scope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}",
    "type": "Microsoft.Authorization/roleAssignments"
}

Используйте az role assignment update, чтобы обновить условие для назначения роли.

az role assignment update --role-assignment "./path/roleassignment.json"

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

{
    "canDelegate": null,
    "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",
    "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Authorization/roleAssignments/{roleAssignmentId}",
    "name": "{roleAssignmentId}",
    "principalId": "{userObjectId}",
    "principalType": "User",
    "resourceGroup": "{resourceGroup}",
    "roleDefinitionId": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
    "scope": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}",
    "type": "Microsoft.Authorization/roleAssignments"
}

Просмотр условия

Чтобы вывести список условий назначения ролей, используйте az role assignment list. Дополнительные сведения см. в разделе Список назначений ролей Azure с помощью Azure CLI.

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

Чтобы удалить условие назначения роли, измените его, задав для свойств condition иcondition-version пустую строку ("") или значение null.

В качестве альтернативы, если вы хотите удалить и назначение роли, и условие, вы можете использовать команду az role assignment delete. Дополнительные сведения см. в статье Удаление назначений ролей Azure.

Следующие шаги