Azure 中需要什么权限才能授予对托管标识的访问权限以调用自定义 api
What permissions are needed in Azure to grant access to a managed identity for calling a custom api
我想将在我的应用程序注册中创建的角色 Things.Reead.All 分配给托管身份。
应用注册SP对象id为8055e1eb-0000-0000-9b77-00000000000
角色定义如下所示
"appRoles": [
{
"allowedMemberTypes": [
"Application"
],
"description": "Allow the application to read all things as itself.",
"displayName": "Read all things",
"id": "86a914fa-a862-4962-9975-000000000000",
"isEnabled": true,
"lang": null,
"origin": "Application",
"value": "Things.Read.All"
}
关于系统分配的托管身份唯一已知的是它的对象 ID,比如说
aad300-0872-0000-811d-00000000000
我想让它调用应用程序 8055e1eb-0000-0000-9b77-00000000000,它希望在访问令牌中看到角色。
我知道我必须使用以下 api 来执行此操作。
https://graph.microsoft.com/v1.0/servicePrincipals/8055e1eb-0000-0000-9b77-00000000000/appRoleAssignedTo
{
"principalId": "aad300-0872-0000-811d-00000000000",
"resourceId": "8055e1eb-0000-0000-9b77-00000000000",
"appRoleId": "86a914fa-a862-4962-9975-000000000000"
}
我在我的租户中拥有广泛但受控的访问权限。当我从
获得令牌时
az account get-access-token --resource https://graph.microsoft.com
调用上面的方法,我得到
"code": "Authorization_RequestDenied",
"message": "Insufficient privileges to complete the operation.",
我需要弄清楚的是进行此调用所需的确切权限。
因为你没有回答我的评论,我可以给你我自己的解决方案,它使用服务主体登录 azure cli,它对我有用。
请按照以下步骤操作。
1.Create a new App Registration in azure ad, then get values for signing in and create a new application secret.
2.Navigate到App的API permissions
,添加应用权限(非Delegated权限)Directory.ReadWrite.All
of Microsoft Graph
,别忘了最后点击Grant admin consent for xxx
按钮。
注意:从doc开始,AppRoleAssignment.ReadWrite.All
权限就够了,但我测试不行,不知道是不是一个错误,我已经解码了令牌,令牌具有 AppRoleAssignment.ReadWrite.All
权限。
3.In azure cli,运行 下面的命令获取令牌。
az account clear
az login --service-principal --allow-no-subscriptions --username '<application-id>' --password '<application secret>' --tenant '<tenant-id>'
az account get-access-token --resource https://graph.microsoft.com
4.I 测试令牌以调用 api - Grant an appRoleAssignment for a service principal
为我的功能应用程序的 system-assigned 身份授予应用程序角色,它工作正常。
在门户中查看:
我想将在我的应用程序注册中创建的角色 Things.Reead.All 分配给托管身份。 应用注册SP对象id为8055e1eb-0000-0000-9b77-00000000000 角色定义如下所示
"appRoles": [
{
"allowedMemberTypes": [
"Application"
],
"description": "Allow the application to read all things as itself.",
"displayName": "Read all things",
"id": "86a914fa-a862-4962-9975-000000000000",
"isEnabled": true,
"lang": null,
"origin": "Application",
"value": "Things.Read.All"
}
关于系统分配的托管身份唯一已知的是它的对象 ID,比如说
aad300-0872-0000-811d-00000000000
我想让它调用应用程序 8055e1eb-0000-0000-9b77-00000000000,它希望在访问令牌中看到角色。 我知道我必须使用以下 api 来执行此操作。
https://graph.microsoft.com/v1.0/servicePrincipals/8055e1eb-0000-0000-9b77-00000000000/appRoleAssignedTo
{
"principalId": "aad300-0872-0000-811d-00000000000",
"resourceId": "8055e1eb-0000-0000-9b77-00000000000",
"appRoleId": "86a914fa-a862-4962-9975-000000000000"
}
我在我的租户中拥有广泛但受控的访问权限。当我从
获得令牌时az account get-access-token --resource https://graph.microsoft.com
调用上面的方法,我得到
"code": "Authorization_RequestDenied",
"message": "Insufficient privileges to complete the operation.",
我需要弄清楚的是进行此调用所需的确切权限。
因为你没有回答我的评论,我可以给你我自己的解决方案,它使用服务主体登录 azure cli,它对我有用。
请按照以下步骤操作。
1.Create a new App Registration in azure ad, then get values for signing in and create a new application secret.
2.Navigate到App的API permissions
,添加应用权限(非Delegated权限)Directory.ReadWrite.All
of Microsoft Graph
,别忘了最后点击Grant admin consent for xxx
按钮。
注意:从doc开始,AppRoleAssignment.ReadWrite.All
权限就够了,但我测试不行,不知道是不是一个错误,我已经解码了令牌,令牌具有 AppRoleAssignment.ReadWrite.All
权限。
3.In azure cli,运行 下面的命令获取令牌。
az account clear
az login --service-principal --allow-no-subscriptions --username '<application-id>' --password '<application secret>' --tenant '<tenant-id>'
az account get-access-token --resource https://graph.microsoft.com
4.I 测试令牌以调用 api - Grant an appRoleAssignment for a service principal
为我的功能应用程序的 system-assigned 身份授予应用程序角色,它工作正常。
在门户中查看: