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


Устранение неполадок с условиями назначения ролей Azure

Общие проблемы

Симптом — условие не соблюдается

Причина 1

Субъекты безопасности имеют одно или несколько назначений ролей в той же или более широкой области.

Решение 1

Убедитесь, что субъекты безопасности не имеют нескольких назначений ролей (с условиями или без них), которые предоставляют доступ к одному и тому же действию данных, что приводит к неисполнениям условий. Сведения о логике оценки см. в статье "Как Azure RBAC определяет, имеет ли пользователь доступ к ресурсу".

Причина 2

Назначение роли содержит несколько действий, которые предоставляют разрешение, и ваше условие не охватывает все эти действия. Например, можно создать объект Blob, если у вас есть либо /blobs/write, либо /blobs/add/action для работы с данными. Если ваше назначение роли содержит оба действия с данными, и вы нацеливаетесь только на одно из них в условии, назначение роли предоставит разрешение на создание BLOB и обойдет условие.

Решение 2

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

Причина 3

При добавлении условия к назначению ролей может потребоваться до 5 минут для принудительного применения условия. При добавлении условия поставщики ресурсов (например, хранилище Майкрософт) уведомляются об обновлении. Поставщики ресурсов немедленно обновляют локальные кэши, чтобы убедиться, что они имеют последние назначения ролей. Этот процесс выполняется в течение 1 или 2 минут, но может занять до 5 минут.

Решение 3

Подождите 5 минут и проверьте условие еще раз.

Ошибка: Условие некорректно при добавлении условия

При попытке добавить назначение роли с условием вы получите ошибку, аналогичную следующей:

The given role assignment condition is invalid.

Причина 1

Для conditionVersion свойства задано значение "1.0".

Решение 1

Задайте conditionVersion для свойства значение "2.0".

Причина 2

Условие не отформатировано правильно.

Решение 2

Исправьте любые проблемы с форматом условия или синтаксисом . Кроме того, добавьте условие с помощью визуального редактора на портале Azure.

Проблемы в визуальном редакторе

Симптом — редактор условий отображается при редактировании условия

Вы создали условие с помощью шаблона, описанного в разделе "Делегирование управления назначением ролей Azure" другим пользователям с условиями. При попытке изменить условие отображается редактор расширенных условий.

Снимок экрана редактора условий, в котором показаны параметры изменения условия.

Когда вы ранее редактировали условие, вы редактировали его с помощью шаблона условия.

Снимок экрана: шаблоны условий с включенным шаблоном сопоставления.

Причина

Условие не соответствует шаблону для макета.

Решение 1

Измените условие, чтобы оно соответствовало одному из следующих шаблонов.

Шаблон Состояние
Ограничение ролей Пример: ограничение ролей
Ограничение ролей и типов субъектов Пример. Ограничение ролей и типов субъектов
Ограничение ролей и субъектов Пример. Ограничение ролей и определенных групп
Разрешить все, кроме определенных ролей Пример. Разрешить большинство ролей, но не разрешать другим пользователям назначать роли

Решение 2

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

Симптом. Субъект не отображается в источнике атрибутов

При попытке добавить назначение роли с условием, Принципал не отображается в списке источник атрибута.

Снимок экрана, показывающий принципала в списке атрибутов источника при добавлении условия.

Вместо этого отображается сообщение:

To use principal (user) attributes, you must have Microsoft Entra permissions (such as the [Attribute Assignment Administrator](../active-directory/roles/permissions-reference.md#attribute-assignment-administrator) role) and custom security attributes defined in Microsoft Entra ID.

Причина

Вы не соответствуете предварительным требованиям. Чтобы использовать основные атрибуты, необходимо иметь следующее:

  • Разрешения Microsoft Entra для вошедшего пользователя на чтение как минимум одного набора атрибутов
  • Настраиваемые атрибуты безопасности, определенные в идентификаторе Microsoft Entra

Решение

  1. Откройте Microsoft Entra ID>настраиваемые атрибуты безопасности.

    Если вы видите страницу Начать, у вас нет разрешений на чтение хотя бы одного набора атрибутов, или кастомизированные атрибуты безопасности еще не были определены.

    Снимок экрана: страница

  2. Если настраиваемые атрибуты безопасности определены, назначьте одну из следующих ролей на уровне арендатора или уровне набора атрибутов. Дополнительные сведения см. в разделе "Управление доступом к пользовательским атрибутам безопасности" в идентификаторе Microsoft Entra.

    Это важно

    По умолчанию у глобального администратора и других ролей администратора нет разрешений на чтение, определение и назначение настраиваемых атрибутов безопасности.

  3. Если настраиваемые атрибуты безопасности еще не определены, назначьте роль администратора определения атрибутов в области клиента и добавьте настраиваемые атрибуты безопасности. Дополнительные сведения см. в разделе "Добавление или отключение настраиваемых атрибутов безопасности" в идентификаторе Microsoft Entra ID.

    По завершении вы сможете прочитать по крайней мере один набор атрибутов.

    Снимок экрана, на котором показан атрибут, который пользователь может прочитать.

    Principal должен теперь отображаться в списке источника атрибута при добавлении назначения роли с условием.

Симптом: Главный элемент не отображается в источнике атрибутов при использовании PIM.

При попытке назначения роли с условием с помощью Microsoft Entra Privileged Identity Management (PIM)Главный не отображается в списке атрибутов источника.

Скриншот, показывающий основное лицо в списке источников атрибутов при добавлении условия через управление привилегиями.

Причина

В настоящее время PIM не поддерживает использование основного атрибута в условии назначения ролей.

Сообщения об ошибках в визуальном редакторе

Симптом — состояние не распознано

После использования редактора кода перейдите в визуальный редактор и получите следующее сообщение:

The current expression cannot be recognized. Switch to the code editor to edit the expression or delete the expression and add a new one.

Причина

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

Решение

Исправьте любые проблемы с форматом условия или синтаксисом . Кроме того, можно удалить условие и повторить попытку.

Ошибка симптома: атрибут не применяется для ранее сохраненного условия.

При открытии ранее сохраненного условия в визуальном редакторе вы получите следующее сообщение:

Attribute does not apply for the selected actions. Select a different set of actions.

Причина

В мае 2022 г. действие чтения BLOB было изменено со следующего формата:

!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'})

Чтобы исключить подоперацию Blob.List.

!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})

Если вы создали условие с действием чтения большого двоичного объекта до мая 2022 г., в визуальном редакторе может появиться это сообщение об ошибке.

Решение

Откройте область Выберите действие и повторно выберите действие Читать BLOB.

Симптом: Атрибут не может быть применен, ошибка

При выборе одного или нескольких действий в визуальном редакторе с существующим выражением вы получите следующее сообщение и ранее выбранный атрибут удаляется:

Attribute does not apply for the selected actions. Select a different set of actions.

Причина

Ранее выбранный атрибут больше не применяется к выбранным действиям.

Решение 1

В разделе "Добавление действия" выберите действие, которое применяется к выбранному атрибуту. Список действий, поддерживаемых каждым атрибутом хранилища, можно найти в разделе "Действия и атрибуты" для условий назначения ролей Azure для хранилища BLOB-объектов Azure и в разделе "Действия и атрибуты" для условий назначения ролей Azure для очередей Azure.

Решение 2

В разделе "Выражение сборки" выберите атрибут, который применяется к выбранным в данный момент действиям. Список атрибутов хранилища, которые поддерживаются каждым действием хранилища, см. в разделах "Действия и атрибуты для условий назначения ролей Azure для Azure Blob Storage" и "Действия и атрибуты для условий назначения ролей Azure для Azure Queue.".

Симптом - Атрибут не применяется в этом предупреждении о контексте

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

Attribute does not apply in this context. Use a different role assignment scope or remove the expression.

Причина

Указанный атрибут недоступен в текущем контексте, например, в учетной записи хранения с включенным иерархическим пространством имен, используя Version ID.

Решение

Если вы хотите использовать текущий атрибут, создайте условие назначения ролей в другой области, например область группы ресурсов. Или удалите и повторно создайте выражение с помощью выбранных в данный момент действий.

Симптом - ошибка распознавания атрибута

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

Attribute is not recognized. Select a valid attribute or remove the expression.

Причина

Указанный атрибут не распознается, возможно, из-за опечатки.

Решение

В редакторе кода исправьте опечатку. Или удалите существующее выражение и используйте визуальный редактор для выбора атрибута.

Симптом. Значение атрибута является недопустимой ошибкой

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

Attribute value is invalid. Select another attribute or value.

Причина

Правая часть выражения содержит атрибут или значение, которое не является допустимым.

Решение

Используйте визуальный редактор, чтобы выбрать атрибут или указать значение.

Симптом - ошибка "Не выбрано действие"

При удалении всех действий в визуальном редакторе вы получите следующее сообщение:

No actions selected. Select one or more actions to edit expressions.

Причина

Существует существующее выражение, но никакие действия не были выбраны в качестве целевого объекта.

Решение

В разделе "Добавление действия" добавьте одно или несколько действий, на которые должно быть нацелено выражение.

Ошибка - Недоступно никаких вариантов

При попытке добавить выражение вы получите следующее сообщение:

No options available

Причина

Вы выбрали несколько действий в качестве целевых, и нет атрибутов, которые применимы ко всем выбранным в данный момент действиям.

Решение

В разделе "Добавление действия" выберите меньше действий для целевого объекта. Чтобы сосредоточиться на действиях, которые вы удалили, добавьте несколько условий.

Симптом — идентификаторы определения ролей не найдены

При попытке добавить выражение вы получите следующее сообщение:

Cannot find built-in or custom role definitions with IDs: <role IDs>. These IDs were removed. Check that the IDs are valid and try to add again. You can also refresh the page or sign out and sign in again.

Причина

Один или несколько идентификаторов определений ролей, которые вы пытались добавить для атрибута идентификатора определения роли, не найдены или не имеют правильного формата GUID: 00000000-0000-0000-0000-000000000000

Решение

Используйте редактор условий для выбора роли. Если вы недавно добавили пользовательскую роль, обновите страницу или выйдите и снова войдите.

Симптом — идентификаторы принципалов не найдены

При попытке добавить выражение вы получите следующее сообщение:

Cannot find users, groups, or service principals in Azure Active Directory with principal IDs: <principal IDs>. These IDs were removed. Check that the IDs are valid and try to add again. You can also refresh the page or sign out and sign in again.

Причина

Один или несколько идентификаторов субъектов, которые вы пытались добавить для атрибута идентификатора субъекта, не найдены или не имеют правильного формата GUID: 00000000-0000-0000-0000-000000000000

Решение

Используйте редактор условий, чтобы выбрать принципала. Если вы недавно добавили главного пользователя, обновите страницу или выйдите из системы и войдите снова.

Сообщения об ошибках в Azure PowerShell

Симптом - ошибка: атрибут ресурса недопустим

При попытке добавить назначение ролей с условием с помощью Azure PowerShell возникает ошибка, аналогичная следующим:

New-AzRoleAssignment : Resource attribute
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$> is not valid.

Причина

Если условие включает знак доллара ($), необходимо префиксить его с помощью обратной символики (').

Решение

Добавьте обратную кавычку (`) перед каждым знаком доллара. Ниже показан пример. Дополнительные сведения о правилах кавычек в PowerShell см. в разделе "О правилах кворирования".

$condition = "((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<`$key_case_sensitive`$>] StringEquals 'Cascade'))"

Симптом — Ошибка при копировании и вставке условия

Причина

Если вы используете PowerShell и копируете условие из документа, это может включать специальные символы, которые вызывают следующую ошибку. Некоторые редакторы (например, Microsoft Word) добавляют символы элемента управления при форматировании текста, который не отображается.

The given role assignment condition is invalid.

Решение

Если вы скопировали условие из редактора форматированного текста и уверены, что оно правильно, удалите все пробелы и переносы строк, а затем добавьте соответствующие пробелы. Кроме того, используйте обычный текстовый редактор или редактор кода, например Visual Studio Code.

Сообщения об ошибках в Azure CLI

Симптом. Недопустимый атрибут ресурса

При попытке добавить назначение ролей с условием с помощью Azure CLI вы получите ошибку, аналогичную следующим:

Resource attribute Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$> is not valid.

Причина

Если условие включает знак доллара ($), необходимо префиксить его с обратной косой чертой (\).

Решение

Добавьте обратную косую черту (\) перед каждым знаком доллара. Ниже показан пример. Дополнительные сведения о правилах кавычек в Bash см. в разделе "Двойные кавычки".

condition="((!(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'} AND NOT SubOperationMatches{'Blob.List'})) OR (@Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<\$key_case_sensitive\$>] StringEquals 'Cascade'))"

Признак — ошибка нераспознанных аргументов

При попытке добавить назначение ролей с условием с помощью Azure CLI вы получите ошибку, аналогичную следующим:

az: error: unrecognized arguments: --description {description} --condition {condition} --condition-version 2.0

Причина

Скорее всего, вы используете более раннюю версию Azure CLI, которая не поддерживает параметры условия назначения ролей.

Решение

Обновите до последней версии Azure CLI (2.18 или более поздней версии). Дополнительные сведения см. в статье Установка Azure CLI.

Симптом. Ошибка при назначении строки условия переменной в Bash

При попытке присвоить условную строку переменной в Bash вы получите bash: !: event not found сообщение.

Причина

Когда в Bash включено расширение истории, из-за восклицательного знака (!) может появиться сообщение bash: !: event not found.

Решение

Отключите расширение журнала с помощью команды set +H. Чтобы повторно включить расширение журнала, используйте set -H.

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