Azure Назначение доступа к IAM на уровне контейнера при вызове REST - PullRequest
0 голосов
/ 11 февраля 2020

Я пытаюсь предоставить пользователю AD доступ IAM (устройство чтения данных BLOB-объектов хранилища) к контейнеру по вызову API REST.

Моя структура хранения выглядит следующим образом: - Подписка >> ResourceGroup >> Ресурс (т.е. учетная запись хранения) >>
Множество контейнеров >> Некоторые BLOB-объекты в каждом контейнере

Может предоставить доступ Reader для пользователя (который находится в моей Active Directory) к уровню StorageAccount через вызов REST, используя: -

<a href="https://management.azure.com/subscriptions/SUBSCRIPTION-ID/resourceGroups/RESOURCE-GROUP-NAME/providers/Microsoft.Storage/storageAccounts/STORAGE-ACCOUNT-NAME/providers/Microsoft.Authorization/roleAssignments/ANY-UNIQUE-GUID?api-version=2015-07-01" rel="nofollow noreferrer">https://management.azure.com/subscriptions/SUBSCRIPTION-ID/resourceGroups/RESOURCE-GROUP-NAME/providers/Microsoft.Storage/storageAccounts/STORAGE-ACCOUNT-NAME/providers/Microsoft.Authorization/roleAssignments/ANY-UNIQUE-GUID?api-version=2015-07-01</a> <strong>HEADER:</strong> [{"key":"Content-Type","value":"application/json"}] [{"key":"Authorization","value":"Bearer Token"}] <strong>BODY:</strong> { "properties": { "roleDefinitionId": "/subscriptions/SUBSCRIPTION-ID/resourceGroups/RESOURCE-GROUP-NAME/providers/Microsoft.Storage/storageAccounts/STORAGE-ACCOUNT-NAME/providers/Microsoft.Authorization/roleDefinitions/READER-ACCESS-GUID", "principalId": "AD-USER-OBJECT-ID" } }

Пожалуйста, помогите мне назначить роль для этого пользователя на любом конкретном уровне контейнера (не на всех) под учетной записью хранилища, чтобы он / она мог читать / написать любой BLOB-объект внутри этого контейнера.

Спасибо!

ПРИМЕЧАНИЕ: я пробовал с: - <a href="https://management.azure.com/subscriptions/SUBSCRIPTION-ID/resourceGroups/RESOURCE-GROUP-NAME/providers/Microsoft.Storage/storageAccounts/STORAGE-ACCOUNT-NAME/path/CONTAINER-NAME/providers/Microsoft.Authorization/roleAssignments/ANY-UNIQUE-GUID?api-version=2018-07-01" rel="nofollow noreferrer">https://management.azure.com/subscriptions/SUBSCRIPTION-ID/resourceGroups/RESOURCE-GROUP-NAME/providers/Microsoft.Storage/storageAccounts/STORAGE-ACCOUNT-NAME/path/CONTAINER-NAME/providers/Microsoft.Authorization/roleAssignments/ANY-UNIQUE-GUID?api-version=2018-07-01</a>

В Почтальон возвращает код состояния 201, и количество назначенных ролей увеличивается на 1 в azure портале, но пользователь не может видеть ни одного BLOB-объекта внутри этого контейнера.

Пожалуйста, помогите или дайте мне знать, если вам нужна дополнительная информация.

1 Ответ

0 голосов
/ 12 февраля 2020

Насколько я понимаю, вы хотите использовать Azure AD Auth для доступа к Azure хранилищу BLOB-объектов. Вам необходимо назначить пользователю роль Azure RAB C (например, Data Blob Data Reader). Для более подробной информации, пожалуйста, обратитесь к https://docs.microsoft.com/da-dk/azure/storage/common/storage-auth-aad

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

  1. Регистрация Azure Приложение AD

  2. Настройка разрешений API enter image description here

  3. Вызовите остальные API в почтальон

    а. получить токен доступа enter image description here enter image description here

    b. получить имя роли и идентификатор роли

    GET  https://management.azure.com/subscriptions/<subscription id>/providers/Microsoft.Authorization/roleDefinitions?$filter=roleName eq '<the role your need such as Storage Blob Data Contributor>'&api-version=2018-01-01-preview
    
    Header:
          Authorization: Bearer <token>
    

    enter image description here

    c. назначить роль

    PUT https://management.azure.com/<your scope> /providers/Microsoft.Authorization/roleAssignments/<role name>?api-version=2018-01-01-preview
    Header:
         Authorization: Bearer <token>
         Content-Type: application/json
    Body
        { "properties": {
    "roleDefinitionId": "<role id>",
    "principalId": "<The principal ID assigned to the role. This maps to the ID inside the Active Directory. It can point to a user, service principal, or security group.>"
    }}
    

    Обратите внимание, что область видимости контейнера должна выглядеть следующим образом: subscriptions/<subscription id>/resourceGroups/<group name>/providers/Microsoft.Storage/storageAccounts/<account name>/blobServices/default/containers/<container name> enter image description here

  4. Проверка с помощью Хранение Проводник . Для получения более подробной информации, пожалуйста, обратитесь к документу a. Выберите символ Подключение , чтобы открыть Подключение к Azure Подключение .

    b. Connect to Azure storage option

    b. Если вы этого еще не сделали, воспользуйтесь параметром Добавить Azure Учетная запись , чтобы войти в учетную запись Azure, имеющую доступ к ресурсу. После входа вернитесь к Подключение к Azure Хранилище .

    c. Выберите Добавить ресурс через Azure Active Directory (Azure AD), а затем выберите Далее .

    d. Выберите учетную запись Azure и арендатора. Эти значения должны иметь доступ к ресурсу хранилища, к которому вы хотите подключиться. Выберите Далее . enter image description here

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

    Информация, которую вы вводите на этой странице, зависит от того, какой тип ресурса вы добавляете. Убедитесь, что вы выбрали правильный тип ресурса. После ввода необходимой информации выберите Далее . enter image description here

    f. Просмотрите Сводка подключения , чтобы убедиться, что вся информация верна. Если это так, выберите Connect . В противном случае выберите Назад , чтобы вернуться к предыдущим страницам и исправить любую неверную информацию.

enter image description here

...