flo*_*oyd 4 azure-active-directory microsoft-graph azure-managed-identity
我的问题是,我们是否有任何记录方法向Graph API授予管理服务标识权限,就像在门户网站中使用Azure App注册一样?我无法在Azure门户或文档中找到任何Powershell选项或管理MSI服务主体权限的能力.我在MSDN论坛上发现了一个类似的问题,但是想确保没有任何人知道的更新或变通方法?
MSDN论坛帖子:https://social.msdn.microsoft.com/Forums/azure/en-US/dae34534-f193-4444-b52e-ba9cfa4a1fda/does-azure-msi-support-accessing-graph-api? forum = WindowsAzureAD
Dan*_*SFT 11
免责声明 - 我对MSI并不过分熟悉,但由于它们被建模为服务主体,因此应该可行.此外,我无法验证这些步骤.
这些步骤要求您使用Azure AD PowerShell(v2)为MSI分配应用程序权限(以访问Microsoft Graph),并且您是租户中的管理员或应用程序管理员.对于Microsoft Graph,可以在此处找到记录的权限.同样的说明也可用于Azure AD保护的其他资源.我假设您已经安装了PowerShell模块.
Connect-AzureAD将PS连接到Azure广告.输入您的管理员信用.$graph = Get-AzureADServicePrincipal -Filter "AppId eq '00000003-0000-0000-c000-000000000000'"找到代表Microsoft Graph的服务主体并将其分配给变量.Microsoft Graph的服务主体当前是在第一次访问时及时创建的,因此有可能它不存在.它可以通过调用创建New-AzureADServicePrincipal -AppId "00000003-0000-0000-c000-000000000000".$graph.AppRoles - 这将显示您可以从Microsoft Graph公开的所有可用应用程序权限.例如,如果您的MSI需要读取组信息,请从列表中找到"Group.Read.All"权限,并记下其权限ID(它是GUID).例如,这是AppRoles列表中的一条记录:
AllowedMemberTypes : {Application}
Description : Allows the app to read events of all calendars without a signed-in user.
DisplayName : Read calendars in all mailboxes
Id : 798ee544-9d2d-430c-a058-570e29e34338
IsEnabled : True
Value : Calendars.Read$msi = Get-AzureADServicePrincipal -Filter "AppId eq '{Your_MSI_appId}'" New-AzureADServiceAppRoleAssignment -Id {permissionId} -PrincipalId $msi.ObjectId -ResourceId $graph.ObjectId这应该做到这一点.您现在应该能够获取MSI的访问令牌以调用Microsoft Graph,并且访问令牌应包含roles与您在上面分配的权限(ID)匹配的声明.然后,您可以使用该访问令牌来调用Microsoft Graph.这类似于https://docs.microsoft.com/en-us/azure/active-directory/msi-overview中的步骤6和7 .
希望这可以帮助,
| 归档时间: |
|
| 查看次数: |
1878 次 |
| 最近记录: |