使用外部组管理Microsoft Graph 连接器数据源的权限

外部组允许你管理权限,以在Microsoft Graph 连接中查看外部项目,并连接到Microsoft Entra组外部的数据源。

对于依赖于Microsoft Entra用户和组的数据源,可以通过在创建或更新外部项时将访问控制列表 (ACL) 与Microsoft Entra用户和组 ID 相关联来设置对外部项的权限。

但是,对于使用非Microsoft Entra ID组或类似组的构造(如 Salesforce 配置文件、Dynamics 业务部门、SharePoint 组、ServiceNow 本地组或 Confluence 本地组)的数据源,我们建议使用外部组

常见的外部组方案

下面是特定于应用程序的常见非Microsoft Entra ID组示例。

Microsoft Dynamics 365允许客户通过业务部门和团队来构建其 CRM。 这些业务部门和团队的成员身份信息不存储在Microsoft Entra ID中。

下图显示了业务部门和团队的结构。


Dynamics 365 中的结构示意图。业务部门有一个团队和一个经理。此管理器有其他用户。

Salesforce 使用配置文件、角色和权限集进行授权。 这些是特定于 Salesforce 的,成员身份信息在 Microsoft Entra ID 中不可用。

下图显示了 Salesforce 中成员身份信息的结构。


Salesforce 中的角色结构示意图。销售副总裁的角色在层次结构的顶层,有三个下属,即销售运营主管、销售主管和客户管理主管。销售运营主管将销售运营经理作为下属。销售主管将销售开发经理作为下属。

在连接中使用外部组

若要在连接中使用外部组,请执行以下步骤:

  1. 对于每个非Microsoft Entra ID组,请使用组 API 在 Microsoft Graph 中创建外部组。
  2. 根据需要为外部项定义 ACL 时,请使用外部组。
  3. 使外部组的成员身份保持最新且保持同步。

创建外部组

外部组属于连接。 按照以下步骤在连接中创建外部组:

  1. 使用 Microsoft Graph 中的 组 API 。 以下示例演示如何创建外部组。

    注意

    displayNamedescription 是可选字段。

    POST /external/connections/{connectionId}/groups
    
    { 
      "id": "contosoEscalations", 
      "displayName": "Contoso Escalations", 
      "description": "Tier-1 escalations within Contoso"
    } 
    
  2. 在 ID 字段中提供标识符或名称。 使用此值在后续请求中调用外部组。

    注意

    ID 字段允许使用 URL 和文件名安全的 Base64 字符集。 其限制为 128 个字符。

    外部组可以包含以下一个或多个内容:

    • Microsoft Entra用户。
    • Microsoft Entra组。
    • 另一个外部组,包括嵌套外部组。
  3. 创建组后,可以向其添加成员。 以下示例演示如何将成员添加到外部组。

    POST https://graph.microsoft.com/beta/external/connections/{connectionId}/groups/{groupId}/members
    
    {
      "id": "contosoSupport",
      "type": "group",
      "identitySource": "external"
    }
    
    POST https://graph.microsoft.com/beta/external/connections/{connectionId}/groups/{groupId}/members
    
    {
      "id": "25f143de-be82-4afb-8a57-e032b9315752",
      "type": "user",
      "identitySource": "azureActiveDirectory"
    }
    
    POST https://graph.microsoft.com/beta/external/connections/{connectionId}/groups/{groupId}/members
    
    {
      "id": "99a3b3d6-71ee-4d21-b08b-4b6f22e3ae4b",
      "type": "group",
      "identitySource": "azureActiveDirectory"
    }
    

在 ACL 中使用外部组

定义外部项的 ACL 时,可以使用外部组,如以下示例所示。 除了Microsoft Entra用户和组外,外部项的访问控制条目中还可以有外部组。

PUT https://graph.microsoft.com/beta/external/connections/{id}/items/{id} 

Content-type: application/json 
{ 
  "@odata.type": "microsoft.graph.externalItem", 
  "acl": [ 
    { 
      "type": "group", 
      "value": "contosEscalations", 
      "accessType": "grant", 
      "identitySource": "External" 
    }, 
    { 
      "type": "user", 
      "value": "87e9089a-08d5-4d9e-9524-b7bd6be580d5", 
      "accessType": "grant", 
      "identitySource": "azureActiveDirectory" 
    }, 
    { 
      "type": "group", 
      "value": "96fbeb4f-f71c-4405-9f0b-1d6988eda2d2", 
      "accessType": "deny", 
      "identitySource": "azureActiveDirectory" 
    } 
  ], 
  "properties": { 
    "title": "Error in the payment gateway", 
    "priority": 1, 
    "assignee": "john@contoso.com" 
  }, 
  "content": { 
    "value": "<h1>Error in payment gateway</h1><p>Error details...</p>", 
    "type": "html" 
  } 
} 

注意

即使在创建组之前,也可以使用 ACL 中的外部组。

使外部组成员身份保持同步

使外部组的成员身份在 Microsoft Graph 中保持最新。 当自定义组中的成员身份发生更改时,请确保更改在满足需求的时间反映在外部组中。

管理外部组和成员身份

可以使用组 API 来管理外部组和组成员身份。 有关详细信息,请参阅 externalGroupexternalGroupMember

注意

用户的外部安全组成员身份应少于 2,049 个,包括直接和间接成员身份。 超过此限制时,搜索结果将变得不可预测。 来自超过 10,000 个 400 外部安全组的用户的查询将失败并返回响应。