gpt4 book ai didi

azure-active-directory - 图形 API 的 MSI 权限

转载 作者:行者123 更新时间:2023-12-04 22:55:42 24 4
gpt4 key购买 nike

我的问题是,我们是否有任何记录在案的方法来授予 Graph API 的管理服务标识权限,就像我们在门户中使用 Azure 应用程序注册一样?我在 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

最佳答案

免责声明 - 我对 MSI 并不太熟悉,但由于它们被建模为服务主体,因此应该可以。我也无法验证这些步骤。

这些步骤要求您使用 Azure AD PowerShell (v2)为您的 MSI 分配应用程序权限(以访问 Microsoft Graph),并且您是租户中的管理员或应用程序管理员。对于 Microsoft Graph,可以找到记录的权限 here .相同的指令也可用于受 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 的 objectId(假设您不知道它,但您知道它的 clientId/appId):$msi = Get-AzureADServicePrincipal -Filter "AppId eq '{Your_MSI_appId}'"
  • 对于您的 MSI 需要的每个权限,运行以下 PS cmdlet 以将权限分配给您的 MSI:New-AzureADServiceAppRoleAssignment -Id {permissionId} -PrincipalId $msi.ObjectId -ResourceId $graph.ObjectId

  • 那应该这样做。您现在应该能够为您的 MSI 获取访问 token 以调用 Microsoft Graph,并且访问 token 应该包含 roles与您在上面分配的权限(ID)相匹配的声明。然后,您可以使用该访问 token 调用 Microsoft Graph。这类似于 https://docs.microsoft.com/en-us/azure/active-directory/msi-overview 中的步骤 6 和 7。 .

    希望这可以帮助,

    关于azure-active-directory - 图形 API 的 MSI 权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48013011/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com