通过 REST 调用的 Azure 容器级 IAM 访问分配

Azure Container level IAM Access assignment by REST call

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

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

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

<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" } }

请帮助我在存储帐户下的任何特定容器(不是全部)级别为该用户分配一个角色,以便 he/she 可以 read/write 该容器内的任何 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>

Postman 它 returns 状态代码 201 和角色分配的数量在 Azure 门户中显示增加 1,但用户看不到里面的任何 blob容器。

如果您需要更多信息,请帮助或告诉我。

据我了解,您想使用 Azure AD Auth 访问 Azure blob 存储。您需要为用户分配 Azure RABC 角色(例如 Storage Blob Data Reader)。详情请参考https://docs.microsoft.com/da-dk/azure/storage/common/storage-auth-aad

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

  1. 注册 Azure AD 应用程序

  2. 配置API权限

  3. 在邮递员中调用其余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/<subscription id>/resourceGroups/<group name>/providers/Microsoft.Storage/storageAccounts/<account name>/blobServices/default/containers/<container name>

  4. 检查 Storage Explorer. For more details, please refer to the document 一种。 Select Connect 符号打开 Connect to Azure Storage.

    b。如果您还没有这样做,请使用添加 Azure 帐户 选项登录到有权访问该资源的 Azure 帐户。登录后,return 到 连接到 Azure 存储

    c。 Select 通过 Azure Active Directory (Azure AD) 添加资源,然后 select Next.

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

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

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

    f。查看 连接摘要 以确保所有信息都是正确的。如果是,select 连接。否则,select 返回 至 return 之前的页面以修正任何不正确的信息。