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


Руководство: добавление условия назначения роли для ограничения доступа к BLOB-объектам с помощью портала Azure

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

В этом руководстве описано следующее:

  • Добавление условия для назначения роли
  • Ограничение доступа к BLOB-объектам на основе тега индекса большого двоичного объекта

Внимание

Управление доступом на основе атрибутов Azure (Azure ABAC) общедоступен для управления доступом к Хранилище BLOB-объектов Azure, Azure Data Lake Storage 2-го поколения и очередям Azure с помощью request, resourceenvironmentа principal также атрибутов в уровнях производительности учетной записи хранения уровня "Стандартный" и "Премиум". В настоящее время атрибут ресурса метаданных контейнера и большой двоичный объект списка включают атрибут запроса в предварительной версии. Полные сведения о состоянии функции ABAC для служба хранилища Azure см. в разделе "Состояние функций условий" в служба хранилища Azure.

Юридические условия, применимые к функциям Azure, которые находятся в состоянии бета-версии, предварительной версии или иным образом еще не выпущены в общедоступной версии, см. на странице Дополнительные условия использования предварительных версий в Microsoft Azure.

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

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

Condition

В этом учебнике описано, как ограничивать доступ к BLOB-объектам с помощью определенного тега. Например, можно добавить условие к назначению роли, чтобы Чандра мог только считывать файлы с тегом Project=Cascade.

Схема назначения роли с условием.

Если Chandra пытается считывать большой двоичный объект без тега Project=Cascade, доступ не допускается.

Схема, показывающая доступ на чтение к BLOB-объектам с помощью тега Project=Cascade.

Вот как выглядит условие в коде:

(
    (
        !(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$>] StringEqualsIgnoreCase 'Cascade'
    )
)

Шаг 1. Создание пользователя

  1. Войдите на портал Azure в качестве владельца подписки.

  2. Выберите Microsoft Entra ID.

  3. Создайте нового или найдите имеющегося пользователя. В этом учебнике в качестве примера используется сотрудник с именем Чандра.

Шаг 2. Настройка хранилища

  1. Создайте учетную запись хранения, совместимую с функцией тегов индекса BLOB-объектов. Дополнительные сведения см. в статье Управление данными BLOB-объектов Azure и их поиск с помощью тегов индекса BLOB-объектов.

  2. Создайте контейнер в учетной записи хранения и задайте для анонимного уровня доступа значение Private (без анонимного доступа).

  3. В контейнере выберите "Отправить", чтобы открыть панель "Отправить BLOB-объект".

  4. Найдите текстовый файл для отправки.

  5. Выберите "Дополнительно" , чтобы развернуть область.

  6. В разделе Blob index tags (Теги индекса BLOB-объектов) добавьте следующий тег индекса BLOB-объекта в текстовый файл.

    Если раздел Blob index tags (Теги индекса BLOB-объектов) не отображается, а подписка только что зарегистрирована, возможно, потребуется подождать несколько минут для распространения изменений. Дополнительные сведения см. в статье Использование тегов индекса BLOB-объектов для поиска данных и управления ими в Хранилище BLOB-объектов Azure.

    Примечание.

    BLOB-объекты также поддерживают возможность хранения произвольных метаданных "ключ-значение", определяемых пользователем. Несмотря на то что метаданные похожи на теги индекса BLOB-объектов, необходимо использовать теги индекса BLOB-объектов с условиями.

    Ключ Значение
    Project Cascade

Снимок экрана, на котором показана область отправки большого двоичного объекта и раздел Blob index tags (Теги индекса BLOB-объектов).

  1. Нажмите кнопку "Отправить", чтобы отправить файл.

  2. Отправьте второй текстовый файл.

  3. Добавьте следующий тег индекса BLOB-объекта во второй текстовый файл.

    Ключ Значение
    Project Baker

Шаг 3. Назначение роли данных BLOB-объекта хранилища

  1. Откройте группу ресурсов.

  2. Выберите Управление доступом (IAM) .

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

  4. Выберите Добавить>Добавить назначение ролей. Откроется страница добавления назначения ролей:

Снимок экрана: меню добавления > назначения ролей.

  1. На вкладке Роли выберите роль Модуль чтения данных BLOB-объектов хранилища.

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

  1. На вкладке Члены выберите ранее созданного пользователя.

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

  1. (Необязательно.) В поле Описание введите Доступ на чтение к BLOB-объектам с тегом Project=Cascade.

  2. Выберите Далее.

Шаг 4. Добавление условия

  1. На вкладке "Условия" (необязательно) выберите "Добавить условие". Откроется страница "Добавить условие назначения ролей":

Снимок экрана: страница добавления условия назначения роли для нового условия.

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

    Отобразится область "Выберите действие". Эта область представляет собой отфильтрованный список действий с данными на основе назначения роли, который будет целевым объектом условия. Установите флажок рядом с чтением большого двоичного объекта, а затем нажмите кнопку "Выбрать":

Снимок экрана:  область

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

    Развернется раздел "Выражение".

  2. Укажите следующие параметры выражения:

    Параметр Значение
    Источник атрибута Ресурс
    Атрибут Теги индекса BLOB-объектов [значения в ключе]
    Ключ Project
    Оператор StringEqualsIgnoreCase
    Значение Cascade

Снимок экрана: раздел создания выражения для тегов индекса BLOB-объектов.

  1. Прокрутите до типа редактора и выберите "Код".

    Условие отобразится в виде кода. В этом редакторе кода можно внести в условие изменения. Чтобы вернуться к визуальному редактору, выберите Visual.

Снимок экрана: условие в редакторе кода.

  1. Нажмите кнопку "Сохранить", чтобы добавить условие и вернуться на страницу "Добавить назначение ролей".

  2. Выберите Далее.

  3. На вкладке "Рецензирование и назначение" выберите "Рецензирование" и " Назначить роль" условием.

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

Снимок экрана: список назначений ролей после назначения роли.

Шаг 5. Назначение роли читателя

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

    Примечание.

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

Шаг 6. Проверка условия

  1. В новом окне войдите на портал Azure.

  2. Войдите как пользователь, созданный ранее.

  3. Откройте созданную учетную запись хранения и контейнер.

  4. Убедитесь, что для метода проверки подлинности задана учетная запись пользователя Microsoft Entra, а не ключ доступа.

Снимок экрана: контейнер хранилища с тестовыми файлами.

  1. Выберите текстовый файл Бейкера.

    Вы не сможете просматривать или скачивать BLOB-объект, поэтому должно отобразиться сообщение о сбое авторизации.

  2. Выберите каскадный текстовый файл.

    Вы сможете просматривать и скачивать BLOB-объект.

Шаг 7. Очистка ресурсов

  1. Удалите добавленное назначения роли.

  2. Удалите созданную тестовую учетную запись хранения.

  3. Удалите пользователя, которого вы создали.

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