Azure容器级IAM访问分配(通过REST调用)
我试图通过RESTAPI调用为AD用户提供对容器的IAM访问(存储Blob数据读取器) 我的存储结构如下:-订阅>>资源组>>资源(即存储帐户)>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”}] [{“密钥”:“授权”,“值”:“承载令牌”}] 正文: {
多个容器>>每个容器下的一些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分配给一个用户,请参考以下步骤
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/
据我了解,您希望使用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