授予对入站预配 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. 浏览至 Entra ID>应用注册
  3. 单击“新建注册”选项。
  4. 提供应用名称,选择默认选项,然后单击“注册”。 应用注册的屏幕截图。
  5. 从“概述”边栏选项卡中复制“应用程序(客户端)ID”和“目录(租户)ID”值,并将其保存以供稍后在 API 客户端中使用。 应用客户端 ID 的屏幕截图。
  6. 在应用的上下文菜单中,选择“证书和机密”选项。
  7. 创建新客户端机密。 提供机密的说明和到期日期。
  8. 复制客户端密码的生成值,并将其保存以供稍后在 API 客户端中使用。
  9. 在上下文菜单“API 权限”中,选择“添加权限”选项。
  10. 在“请求 API 权限”下,选择“Microsoft Graph”。
  11. 选择“应用程序权限”
  12. 搜索并选择权限 AuditLog.Read.AllSynchronizationData-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 客户端结合使用。

后续步骤