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

时间:2020-02-11 13:01:25

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

我试图通过REST Api调用为AD用户提供对容器的IAM访问(存储Blob数据读取器)。

我的存储结构如下:-订阅>> ResourceGroup >>资源(即存储帐户)>>
许多容器>>每个容器下面都有一些斑点

能够使用以下方法通过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

邮递员中,它返回状态代码201,并且在Azure门户中角色分配数量显示为1,但是用户看不到该Container内的任何Blob。

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

1 个答案:

答案 0 :(得分:1)

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

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

  1. 注册Azure AD应用程序

  2. 配置API权限 enter image description here

  3. 调用邮递员中的其余api

    a。获取访问令牌 enter image description here enter image description here

    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>
    

    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. 使用Storage Explorer进行检查。有关更多详细信息,请参阅document 一种。选择 Connect 符号以打开 Connect to Azure Storage

    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。查看连接摘要,以确保所有信息正确无误。如果是,请选择连接。否则,选择返回返回上一页以更正所有错误信息。

enter image description here