0

我正在尝试通过 REST Api 调用向 AD 用户授予对容器的 IAM 访问权限(存储 Blob 数据读取器)。

我的存储结构是这样的:-订阅>>资源组>>资源(即一个存储帐户)>>
许多容器>>每个容器下的一些blob

能够通过 REST 调用为用户(在我的 Active Directory 中)提供对 StorageAccount 级别的读取器访问权限:-

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 HEADER: [{"key":"Content-Type","value":"application/json"}] [{"key":"Authorization","value":"Bearer Token"}] BODY: { "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。

谢谢!

注意:我尝试过: -
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

Postman中,它返回状态代码 201,并且在 azure 门户中显示角色分配的数量增加了 1,但用户看不到该容器内的任何 blob。

如果您需要更多信息,请帮助或让我知道。

4

1 回答 1

1

据我了解,您想使用 Azure AD Auth 访问 Azure Blob 存储。您需要将 Azure RABC 角色(例如存储 Blob 数据读取器)分配给用户。有关详细信息,请参阅https://docs.microsoft.com/da-dk/azure/storage/common/storage-auth-aad

关于如何使用 rest api 将 tole 分配给一个用户,请参考以下步骤

  1. 注册 Azure AD 应用程序

  2. 配置 API 权限 在此处输入图像描述

  3. 在邮递员中调用rest api

    一个。获取访问令牌 在此处输入图像描述 在此处输入图像描述

    湾。获取角色名称和角色 ID

    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>
    

    在此处输入图像描述

    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> 在此处输入图像描述

  4. 检查存储资源管理器。更多详细信息,请参阅文档 a. 选择Connect符号以打开Connect to Azure Storage

    湾。 连接到 Azure 存储选项

    湾。如果尚未这样做,请使用添加 Azure 帐户选项登录到有权访问资源的 Azure 帐户。登录后,返回连接到 Azure 存储

    C。选择通过 Azure Active Directory (Azure AD) 添加资源,然后选择下一步

    d。选择 Azure 帐户和租户。这些值必须有权访问您要附加到的存储资源。选择下一步在此处输入图像描述

    e. 选择要附加的资源类型。输入连接所需的信息。

    您在此页面上输入的信息取决于您要添加的资源类型。确保选择正确的资源类型。输入所需信息后,选择Next在此处输入图像描述

    F。查看连接摘要以确保所有信息都正确无误。如果是,请选择Connect。否则,请选择返回以返回上一页以修复任何不正确的信息。

在此处输入图像描述

于 2020-02-12T10:06:19.293 回答