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

Azure容器级IAM访问分配(通过REST调用),rest,azure-storage,azure-management-api,role-based-access-control,Rest,Azure Storage,Azure Management Api,Role Based Access Control,我试图通过RESTAPI调用为AD用户提供对容器的IAM访问(存储Blob数据读取器) 我的存储结构如下:-订阅>>资源组>>资源(即存储帐户)> 多个容器>>每个容器下的一些blob 我能够通过REST调用为用户(我的Active Directory中的用户)提供对StorageAccount级别的读卡器访问,使用:- 标题: [{“key”:“Content Type”,“value”:“application/json”}] [{“密钥”:“授权”,“值”:“承载令牌”}] 正文: {

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

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

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


标题:
[{“key”:“Content Type”,“value”:“application/json”}]
[{“密钥”:“授权”,“值”:“承载令牌”}]
正文:
{
“财产”:{
“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

谢谢大家!

注意:我尝试了:-

Postman中,它返回状态代码201,azure portal中显示的角色分配数量增加了1,但用户无法看到该容器中的任何blob


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

据我了解,您想使用Azure AD Auth访问Azure blob存储。您需要将Azure RABC角色(如存储Blob数据读取器)分配给用户。有关详细信息,请参阅

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

  • 注册Azure广告应用程序

  • 配置API权限

  • 在postman中调用restapi

    a。获取访问令牌

    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>
    
    GEThttps://management.azure.com/subscriptions//providers/Microsoft.Authorization/roleDefinitions?$filter=roleName eq''和api版本=2018-01-01-预览
    标题:
    授权:持票人
    

    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.>"
    }}
    
    PUThttps://management.azure.com/ /提供商/Microsoft.Authorization/roleAssignments/?api版本=2018-01-01-preview
    标题:
    授权:持票人
    内容类型:application/json
    身体
    {“财产”:{
    “角色定义ID”:“,
    “principalId”:”
    }}
    
    请注意,容器范围应类似于
    订阅//resourceGroups//providers/Microsoft.Storage/storageAccounts/

  • 请查收。有关更多详细信息,请参阅 A.选择连接符号打开连接到Azure存储

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

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

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

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

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

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


  • 据我了解,您希望使用Azure AD Auth访问Azure blob存储。您需要将Azure RABC角色(如存储Blob数据读取器)分配给用户。有关更多详细信息,请参阅“是的,你是对的”@Jim Xu!但我也尝试了你提供的链接。我可以手动从门户访问任何容器。但是我想通过RESTAPI来实现。我找不到任何授予此访问权限的PUT调用。如果您想将角色分配给用户,您可以尝试使用Azure rest api:感谢您的快速跟进!我已经通过了那个链接。但使用它,我能够提供直到资源或存储帐户级别的访问,而不是低于容器级别。需要帮助才能为此形成Rest url。当您调用azure est api来分配角色时,容器作用域应该类似于
    订阅//资源组//提供者/Microsoft。存储/storageAccounts//blobServices/default/containers/
    工作正常!!谢谢你,吉姆,谢谢你的努力,谢谢你的跟进,谢谢你的时间。伟大的您好,Jim Xu,您能帮我提供REST Get Url来查看用户的Blob文件吗?该用户已经在容器级别具有存储Blob数据读取器访问权限。@Subhrangsu请参考“是”,明白了。但是,当我在浏览器的新选项卡中显示ResourceNotFound时。我已与具有存储Blob数据读取器对容器的访问权限的用户一起登录。我无法附加任何映像。尝试以下解释:我尝试了以下操作:其中container=test10。此处是对存储Blob数据读取器具有基于角色的访问权限(IAM)的用户。DLBook.pdf=blob。在第一个选项卡中,我打开了用户登录的portal.azure站点,在第二个选项卡中,我想打开该blob。但出现错误:指定的资源不存在。请求ID:3f73b4ef-601e-0057-575b-E2413000000时间:2020-02-13T10:53:53.0780528Z