【问题标题】:Azure Container level IAM Access assignment by REST call通过 REST 调用分配 Azure 容器级 IAM 访问权限
【发布时间】:2020-05-26 21:28:51
【问题描述】:

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

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

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

@987654321@ 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。

谢谢!

注意:我尝试使用:-
@987654322@

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

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

【问题讨论】:

  • 据我了解,您想使用 Azure AD Auth 访问 Azure blob 存储。您需要将 Azure RABC 角色(例如存储 Blob 数据读取器)分配给用户。更多详情请参考docs.microsoft.com/da-dk/azure/storage/common/storage-auth-aad
  • 是的,你是对的@Jim Xu!但我也试过你提供的链接。我可以从门户手动授予对任何容器的访问权限。但我想通过 REST Api 来实现。没有找到任何 PUT 调用来授予此访问权限。
  • 如果你想给用户分配角色,你可以尝试使用Azure rest api:docs.microsoft.com/en-us/rest/api/authorization/roleassignments/…
  • 感谢您的快速跟进!我已经通过那个链接了。但是使用它可以提供直到资源或存储帐户级别的访问权限,而不是低于该级别,例如容器级别。需要帮助来形成 Rest url。
  • 调用azure est api分配角色时,容器作用域应为subscriptions/<subscription id>/resourceGroups/<group name>/providers/Microsoft.Storage/storageAccounts/<account name>/blobServices/default/containers/<container name>

标签: rest azure-storage azure-management-api role-based-access-control


【解决方案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

    一个。获取访问令牌

    b.获取角色名称和角色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/&lt;subscription id&gt;/resourceGroups/&lt;group name&gt;/providers/Microsoft.Storage/storageAccounts/&lt;account name&gt;/blobServices/default/containers/&lt;container name&gt;

  4. 请与Storage Explorer 联系。更多详情请参考document 一种。选择 Connect 符号以打开 Connect to Azure Storage

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

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

    d。选择 Azure 帐户和租户。这些值必须有权访问您要附加到的存储资源。选择下一步

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

    您在此页面上输入的信息取决于您要添加的资源类型。确保选择正确的资源类型。输入所需信息后,选择下一步

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

【讨论】:

  • 效果很好!!感谢 Jim 的努力、跟进和快速周转时间。太棒了!
  • 嗨,Jim Xu,您能否帮我提供任何 REST Get Url 以查看已在容器级别具有存储 Blob 数据读取器访问权限的用户的 Blob 文件。
  • 是的,明白了。但是,当我将这个myaccount.blob.core.windows.net/mycontainer/myblob 放置在我的浏览器的新选项卡中显示 ResourceNotFound 时。我已经使用对容器具有存储 Blob 数据读取器访问权限的用户登录。
  • 我无法附加任何图像。尝试在下面解释:我试过这个:videostoragelearn.blob.core.windows.net/test10/DLBook.pdf Where container=test10 .Here 用户拥有基于角色的访问 (IAM) 用于存储 blob 数据读取器。 DLBook.pdf =blob。在第一个选项卡中,我打开了以用户身份登录的 portal.azure 站点,在第二个选项卡中,我想打开该 blob。但是出现错误:指定的资源不存在。 RequestId:3f73b4ef-601e-0057-575b-e2413a000000 时间:2020-02-13T10:53:53.0780528Z
猜你喜欢
  • 2021-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-11
  • 2022-01-22
  • 2021-01-27
  • 2023-03-17
相关资源
最近更新 更多