授予对入站预配 API 的访问权限

简介

配置 API 驱动的入站预配应用后,需要授予访问权限,以便 API 客户端可以将请求发送到预配 /bulkUpload API 并查询预配日志 API。 本教程介绍配置这些权限的步骤。

根据 API 客户端使用 Microsoft Entra ID 进行身份验证的方式,可以在两个配置选项之间进行选择:

配置服务主体

此配置在 Microsoft Entra ID 中注册一个代表外部 API 客户端的应用,并授予其调用入站预配 API 的权限。 可以在 OAuth 客户端凭据授予流中使用服务主体客户端 ID 和客户端密码。

  1. 至少使用应用程序管理员登录凭据登录到 Microsoft Entra 管理中心 (https://entra.microsoft.com)。
  2. 浏览到“Microsoft Entra ID”->“应用程序”->“应用注册”。
  3. 单击“新建注册”选项。
  4. 提供应用名称,选择默认选项,然后单击“注册”。 应用注册的屏幕截图。
  5. 从“概述”边栏选项卡中复制“应用程序(客户端) ID”和“目录(租户) ID”值,并将其保存以供稍后在 API 客户端中使用。 应用客户端 ID 的屏幕截图。
  6. 在应用的上下文菜单中,选择“证书和机密”选项。
  7. 创建新客户端机密。 提供机密的说明和到期日期。
  8. 复制客户端密码的生成值,并将其保存以供稍后在 API 客户端中使用。
  9. 在上下文菜单“API 权限”中,选择“添加权限”选项。
  10. 在“请求 API 权限”下,选择“Microsoft Graph”。
  11. 选择“应用程序权限”。
  12. 搜索并选择权限“AuditLog.Read.All”和“SynchronizationData-User.Upload”。
  13. 在下一个屏幕上单击“授予管理员同意”以完成权限分配。 在确认对话框中,单击“是”。 应用应具有以下权限集。 应用权限的屏幕截图。
  14. 现在可以将服务主体与 API 客户端结合使用。
  15. 对于生产工作负载,建议将基于客户端证书的身份验证与服务主体或托管标识配合使用。

配置托管标识

本部分介绍如何为托管标识分配必要的权限。

  1. 配置托管标识以用于 Azure 资源。

  2. 从 Microsoft Entra 管理中心复制你的托管标识名称。 例如:下方的屏幕截图显示了与名为“CSV2SCIMBulkUpload”的 Azure 逻辑应用工作流关联的系统分配的托管标识的名称。

    托管标识名称的屏幕截图。

  3. 运行以下 PowerShell 脚本,为托管标识分配权限。

    Install-Module Microsoft.Graph -Scope CurrentUser
    
    Connect-MgGraph -Scopes "Application.Read.All","AppRoleAssignment.ReadWrite.All,RoleManagement.ReadWrite.Directory"
    $graphApp = Get-MgServicePrincipal -Filter "AppId eq '00000003-0000-0000-c000-000000000000'"
    
    $PermissionName = "SynchronizationData-User.Upload"
    $AppRole = $graphApp.AppRoles | `
    Where-Object {$_.Value -eq $PermissionName -and $_.AllowedMemberTypes -contains "Application"}
    $managedID = Get-MgServicePrincipal -Filter "DisplayName eq 'CSV2SCIMBulkUpload'"
    New-MgServicePrincipalAppRoleAssignment -PrincipalId $managedID.Id -ServicePrincipalId $managedID.Id -ResourceId $graphApp.Id -AppRoleId $AppRole.Id
    
    $PermissionName = "AuditLog.Read.All"
    $AppRole = $graphApp.AppRoles | `
    Where-Object {$_.Value -eq $PermissionName -and $_.AllowedMemberTypes -contains "Application"}
    $managedID = Get-MgServicePrincipal -Filter "DisplayName eq 'CSV2SCIMBulkUpload'"
    New-MgServicePrincipalAppRoleAssignment -PrincipalId $managedID.Id -ServicePrincipalId $managedID.Id -ResourceId $graphApp.Id -AppRoleId $AppRole.Id
    
  4. 若要确认是否已应用权限,请在 Microsoft Entra ID 中的“企业应用程序”下找到托管标识服务主体。 删除“应用程序类型”筛选器可查看所有服务主体。 托管标识主体的屏幕截图。

  5. 单击“安全性”下的“权限”边栏选项卡。 确保已设置权限。 托管标识权限的屏幕截图。

  6. 现在可以将托管标识与 API 客户端结合使用。

后续步骤