Active Directory 用户帐号预配

本文介绍如何使用 Google Cloud Directory Sync (GCDS) 在 Active Directory 与 Cloud Identity 或 Google Workspace 帐号之间设置用户和群组预配。

如需按照本指南操作,您必须拥有一个 Active Directory 用户,该用户有权管理 Active Directory 中的用户和群组。此外,如果您还没有 Cloud Identity 或 Google Workspace 帐号,则需要拥有您的 DNS 区域的管理员权限才能验证网域。如果您已经拥有 Cloud Identity 或 Google Workspace 帐号,请确保您的用户拥有超级用户权限。

目标

  • 安装 GCDS 并将其连接到 Active Directory 和 Cloud Identity 或 Google Workspace。
  • 配置 GCDS 以将用户和群组(可选)预配到 Google Cloud。
  • 注册计划任务以持续进行预配。

费用

如果您使用的是免费版 Cloud Identity,则遵照本指南操作不会使用任何计费 Google Cloud 组件。

准备工作

  • 确保您了解如何将 Active Directory 身份管理扩展到 Google Cloud
  • 确定您要如何映射身份、群组和网域。 具体来说,请确保您已回答以下问题:

    • 您打算将哪个 DNS 网域用作 Cloud Identity 或 Google Workspace 的主域?您打算将哪些额外的 DNS 网域用作辅助网域?
    • 您是否需要使用网域替换?
    • 您是否打算将电子邮件地址 (mail) 或用户主体名称 (userPrincipalName) 用作用户的通用标识符?
    • 您是否打算预配群组?如果打算预配,则您是否打算使用通用名称 (cn) 或电子邮件地址 (mail) 作为群组的通用标识符?

    有关如何做出以上决策的指导,请参阅有关将 Active Directory 身份和访问权限管理扩展到 Google Cloud 的概览文档

  • 在将正式版 Active Directory 连接到 Google Cloud 之前,请考虑使用 Active Directory 测试环境来设置和测试用户预配。

  • 如果您还没有帐号,请注册 Cloud Identity,并在必要时添加额外的 DNS 网域

  • 如果您使用的是免费版 Cloud Identity并打算预配超过 50 位用户,请通过支持联系人申请增加免费 Cloud Identity 用户总数。

  • 如果您怀疑您要用于 Cloud Identity 的任何网域可能已经被员工用来注册消费者帐号,可以考虑先迁移这些用户帐号。如需了解详情,请参阅评估现有用户帐号

规划 GCDS 部署

确定部署 GCDS 的位置

GCDS 可以将用户和群组从 LDAP 目录预配到 Cloud Identity 或 Google Workspace。作为 LDAP 服务器和 Cloud Identity 或 Google Workspace 的中介,GCDS 会查询 LDAP 目录,从该目录中检索必要的信息,还会使用 Directory API 在 Cloud Identity 或 Google Workspace 帐号中添加、修改或删除用户。

由于 Active Directory 网域服务是基于 LDAP 的,因此 GCDS 非常适合在 Active Directory 和 Cloud Identity 或 Google Workspace 之间实现用户预配。

在将本地 Active Directory 基础架构连接到 Google Cloud 时,您可以在本地或在 Google Cloud 中的 Compute Engine 虚拟机上运行 GCDS。在大多数情况下,最好是在本地运行 GCDS:

  • 由于 Active Directory 管理的信息包含个人身份信息,并且通常被视为敏感信息,因此您可能不希望从本地网络的外部访问 Active Directory。
  • 默认情况下,Active Directory 使用未加密的 LDAP。如果从 Google Cloud 内部远程访问 Active Directory,则您应使用加密通信。尽管您可以使用 LDAP 或 Cloud VPN 加密连接,但这样做会增加设置的复杂性。
  • 从 GCDS 到 Cloud Identity 或 Google Workspace 的通信是通过 HTTPS 进行的,几乎不需要更改防火墙配置。

您可以在 Windows 或 Linux 上运行 GCDS。虽然可以在网域控制器上部署 GCDS,但最好是在单独的机器上运行 GCDS。此机器必须满足系统要求并具有对 Active Directory 的 LDAP 访问权限。虽然这不是将此机器加入网域或运行 Windows 的前提条件,但本指南假定 Cloud Directory Sync 在加入网域的 Windows 机器上运行。

为了支持设置预配,GCDS 包括一个名为配置管理器的图形界面 (GUI)。如果您打算运行 GCDS 的服务器具有桌面体验,则可以在服务器本身上运行配置管理器。否则,您必须在本地运行配置管理器,然后将生成的配置文件复制到服务器,在服务器上您可以使用该文件来运行 GCDS。本指南假定您在具有 GUI 的服务器上运行配置管理器。

确定检索数据的位置

GCDS 使用 LDAP 与 Active Directory 交互并检索有关用户和群组的信息。要实现此交互,GCDS 要求您在配置中提供主机名和端口。在仅运行单个全局目录服务器的小型 Active Directory 环境中,提供主机名和端口不会成为问题,因为您可以将 GCDS 直接指向全局目录服务器。

在运行冗余全局目录服务器的更复杂环境中,将 GCDS 指向单个服务器不会使用冗余,因此不理想。虽然可以设置负载平衡器以跨多个全局目录服务器分发 LDAP 查询并跟踪可能暂时不可用的服务器,但最好是使用 DC 定位器机制来动态定位服务器。

默认情况下,GCDS 要求您明确指定 LDAP 服务器的端点,它不支持使用 DC 定位器机制。 在本指南中,您使用与 DC 定位器机制相关的小型 PowerShell 脚本来补充 GCDS,这样您就不需要静态配置全局目录服务器的端点。

准备 Cloud Identity 或 Google Workspace 帐号

创建 GCDS 用户

为了与 Cloud Identity 和 Google Workspace 的 Directory APIDomain Shared Contacts API 进行交互,GCDS 应用需要一个拥有管理员权限的用户帐号。

注册 Cloud Identity 或 Google Workspace 时,您已经创建了一个超级用户。虽然您可以将此用户用于 GCDS,但最好创建一个单独的用户,由 Cloud Directory Sync 专用:

  1. 打开管理控制台,然后使用您在注册 Cloud Identity 或 Google Workspace 时创建的超级用户登录。
  2. 在菜单中,点击目录 > 用户,然后点击添加新用户以创建用户。
  3. 提供适当的姓名和电子邮件地址,例如:

    1. 名字Google Cloud
    2. 姓氏Directory Sync
    3. 主要电子邮件地址 (Primary email):cloud-directory-sync

    保留电子邮件地址中的主域名,即使该网域与您要预配的林不对应。

  4. 确保自动生成新密码 (Automatically generate a new password) 设置为已停用,并输入密码。

  5. 确保要求在下次登录时更改密码设置为已停用

  6. 点击添加新用户

  7. 点击完成

为了使 GCDS 能够创建、列出和删除用户帐号和群组,用户需要额外的权限。此外,建议为该用户免除单点登录,否则,在遇到单点登录问题时,您可能无法重新授权 GCDS。两者都可以通过使用户成为超级用户来实现:

  1. 在列表中找到新创建的用户并将其打开。
  2. 管理员角色和权限下,点击分配角色
  3. 启用超级用户角色。
  4. 点击保存

配置用户预配

创建 GCDS 的 Active Directory 用户

为了使 GCDS 能够从 Active Directory 中检索有关用户和群组的信息,GCDS 还需要一个具有足够访问权限的网域用户。请为 GCDS 创建一个专用用户,而不是重复使用现有 Windows 用户来实现上述目的。

  1. 打开 Active Directory 用户和计算机管理单元。
  2. 导航到要在其中创建用户的网域和单位部门。如果您的林中有多个网域,请在 GCDS 机器所在网域中创建用户。
  3. 右键点击右侧窗格,然后选择新建 > 用户
  4. 提供适当的姓名和电子邮件地址,例如:
    1. 名字Google Cloud
    2. 姓氏Directory Sync
    3. 用户登录名gcds
    4. 用户登录名(Windows 2000 之前)gcds
  5. 点击下一步
  6. 提供符合密码政策的密码。
  7. 清除用户下次登录时必须更改密码
  8. 选择密码永不过期
  9. 点击下一步,然后点击完成

您还可以通过执行 Windows PowerShell 命令来创建这样的专用用户。示例如下:

New-ADUser -Name "Google Cloud Directory Sync" -GivenName "Google Cloud" -Surname "Directory Sync" -SamAccountName "gcds" -UserPrincipalName "gcds@domain.com" -Path "OU=Users,DC=domain,DC=com" -AccountPassword(Read-Host -AsSecureString "Type password for User") -Enabled $true

您现在已具备安装 GCDS 的前提条件。

安装 GCDS

将运行 GCDS 的机器上,下载并运行 GCDS 安装程序。您可以使用以下 PowerShell 命令来下载安装程序,而不是使用浏览器执行下载:

(New-Object net.webclient).DownloadFile("https://dl.google.com/dirsync/dirsync-win64.exe", "$(pwd)\dirsync-win64.exe")

下载完成后,您可以通过运行以下命令来启动安装向导:

.\dirsync-win64.exe

如果您已经安装了 GCDS,则可以更新 GCDS,确保使用的是最新版本

为 GCDS 配置创建文件夹

GCDS 将其配置存储在 XML 文件中。由于此配置包含 GCDS 用于向 Google 进行身份验证的 OAuth 刷新令牌,因此请确保妥善保护用于配置的文件夹的安全。

此外,由于 GCDS 不需要访问除此文件夹以外的本地资源,因此您必须配置 GCDS,使其以受限用户 LocalService 的身份运行:

  1. 在已安装 GCDS 的机器上,使用网域或本地管理员用户登录。
  2. 打开具有管理权限的 PowerShell 控制台。
  3. 运行以下命令创建一个名为 $Env:ProgramData\gcds 的文件夹来存储配置,并应用访问控制列表 (ACL),以便只有 GCDS 和管理员具有访问权限:

    $gcdsDataFolder = "$Env:ProgramData\gcds"
    New-Item -ItemType directory -Path  $gcdsDataFolder
    &icacls "$gcdsDataFolder" /inheritance:r
    &icacls "$gcdsDataFolder" /grant:r "CREATOR OWNER:(OI)(CI)F" /T
    &icacls "$gcdsDataFolder" /grant   "BUILTIN\Administrators:(OI)(CI)F" /T
    &icacls "$gcdsDataFolder" /grant   "Domain Admins:(OI)(CI)F" /T
    &icacls "$gcdsDataFolder" /grant   "LOCAL SERVICE:(OI)(CI)F" /T
    
  4. 要确定 ProgramData 文件夹的位置,请运行命令 Write-Host $Env:ProgramData。在英文版 Windows 上,此路径通常为 c:\ProgramData。您稍后需要使用此路径。

连接到 Google

现在,您将使用配置管理器准备 GCDS 配置。以下步骤假设您在打算运行 GCDS 的同一服务器上运行配置管理器。

如果您使用其他机器来运行配置管理器,请务必之后将配置文件复制到 GCDS 服务器。另请注意,可能无法在其他机器上测试配置。

  1. 启动配置管理器。您可以在 Windows“开始”菜单中的 Google Cloud Directory Sync > 配置管理器下找到配置管理器。
  2. 点击 Google 网域配置 (Google Domain Configuration) > 连接设置

    Google 网域配置 (Google Domain Configuration) > 连接设置。

  3. 为 GCDS 授权并配置网域设置

  4. 在菜单中,点击文件 > 另存为

  5. 在文件对话框中,输入 PROGRAM_DATA\gcds\config.xml 作为文件名。将 PROGRAM_DATA 替换为 PowerShell 命令在您先前运行它时返回的 ProgramData 文件夹的路径。

  6. 点击保存,然后点击确定

连接到 Active Directory

下一步是将 GCDS 配置为连接到 Active Directory:

  1. 在配置管理器中,点击 LDAP 配置 (LDAP Configuration) > 连接设置
  2. 配置 LDAP 连接设置
    1. 服务器类型:选择 MS Active Directory
    2. 连接类型:选择标准 LDAP (Standard LDAP) 或 LDAP+SSL
    3. 主机名:输入全局目录服务器的名称。此设置仅用于测试。稍后,您将自动化全局目录服务器查找。
    4. 端口3268(全局目录)或 3269(基于 SSL 的全局目录)。使用全局目录服务器而非网域控制器有助于确保您可以预配 Active Directory 林的所有网域中的用户。此外,确保在 Microsoft ADV190023 更新后进行身份验证
    5. 身份验证类型简单
    6. 授权用户:输入先前创建的网域用户的用户主体名称 (UPN):gcds@UPN_SUFFIX_DOMAIN。将 UPN_SUFFIX_DOMAIN 替换为该用户的相应 UPN 后缀网域。或者,您也可以使用 NETBIOS_DOMAIN_NAME\gcds 语法指定用户。
    7. 基本 DN (Base DN):将此字段留空以确保在林的所有网域中执行搜索。
  3. 要验证设置,请点击测试连接。如果连接失败,请仔细检查您是否已指定全局目录服务器的主机名,以及用户名和密码是否正确。忽略该错误消息可能会要求您指定基本 DN。
  4. 点击关闭
  5. 点击文件 > 保存以将配置更改提交到磁盘,然后点击确定

决定要预配的内容

现在您已成功连接 GCDS,接下来可以决定要预配哪些内容:

  1. 在配置管理器中,点击常规设置
  2. 确保用户帐号处于选中状态。
  3. 如果您想要预配群组,请确保选中群组;否则清除该复选框。
  4. 同步组织单元不在本指南的介绍范围内,因此保留组织单元未选中状态。
  5. 保留用户配置文件自定义架构未选中状态。
  6. 点击文件 > 保存以将配置更改提交到磁盘,然后点击确定

预配用户

配置用户映射

下一步是配置如何在 Active Directory 之间映射用户:

  1. 在配置管理器中,点击用户帐号 > 其他用户特性 (Additional User Attributes)。
  2. 点击使用默认值 (Use defaults),分别使用 givenNamesn 自动填充给定名称 (Given Name) 和系列名称 (Family Name) 的特性。

其余设置取决于您想要使用 UPN 还是电子邮件地址将 Active Directory 映射到 Cloud Identity 或 Google Workspace 中的用户,以及您是否需要应用域名替换。如果您不确定哪个选项最适合您,请参阅有关如何将 Active Directory 身份管理扩展到 Google Cloud 的文章。

UPN

  1. 在配置管理器中,点击用户帐号 > 用户特性
  2. 点击使用默认值 (Use defaults)
  3. 电子邮件地址特性更改为 userPrincipalName
  4. (可选)如果您不希望同步别名地址,请点击 proxyAddresses > 移除
  5. 点击搜索规则 (Search Rules) 标签,然后点击添加搜索规则 (Add Search Rule)。
  6. 输入以下设置:

    1. 范围子树 (Sub-tree)
    2. 规则

      (&(objectCategory=person)(objectClass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))

      此规则会匹配所有未停用的用户,但忽略计算机和代管式服务帐号。

    3. 基本 DN:留空以搜索林中的所有网域。

  7. 点击确定以创建规则。

  8. 点击排除规则 (Exclusion Rules) 标签,然后点击添加排除规则 (Add Exclusion Rule)。如需确保 GCDS 用于从 Active Directory 读取内容的用户未预配到 Cloud Identity 或 Google Workspace,请输入以下设置:

    1. 排除类型 (Exclude Type):用户电子邮件地址 (User Email Address)
    2. 匹配类型完全匹配
    3. 排除规则gcds@UPN_SUFFIX_DOMAIN。 将 UPN_SUFFIX_DOMAIN 替换为 Active Directory 中使用的 UPN 后缀网域。
  9. 点击确定

  10. 点击文件 > 保存以将配置更改提交到磁盘,然后点击确定

UPN:网域替换

  1. 在配置管理器中,点击用户帐号 > 用户特性标签页。
  2. 配置以下设置:
    1. 电子邮件地址特性userPrincipalName
    2. 用户标识符属性objectGUID
  3. 点击确定以创建规则。
  4. 点击搜索规则 (Search Rules) 标签页,然后点击添加搜索规则 (Add Search Rule)。
  5. 输入以下设置:

    1. 范围子树 (Sub-tree)
    2. 规则

      (&(objectCategory=person)(objectClass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))

      此规则会匹配所有未停用的用户,但忽略计算机和代管式服务帐号。

    3. 基本 DN:留空以搜索林中的所有网域。

  6. 点击确定以创建规则。

  7. 点击排除规则 (Exclusion Rules) 标签,然后点击添加排除规则 (Add Exclusion Rule)。如需确保 GCDS 用于从 Active Directory 读取内容的用户未预配到 Cloud Identity 或 Google Workspace,请输入以下设置:

    1. 排除类型 (Exclude Type):用户电子邮件地址 (User Email Address)
    2. 匹配类型完全匹配
    3. 排除规则gcds@PRIMARY_DOMAIN。 将 PRIMARY_DOMAIN 替换为 Cloud Identity 或 Google Workspace 帐号的主域名。
  8. 点击确定

  9. 点击 Google 网域配置 (Google Domain Configuration) > 连接设置,然后选择将 LDAP 电子邮件地址中的域名替换为此域名 (Replace domain names in LDAP email addresses with this domain name)。

  10. 点击文件 > 保存以将配置更改提交到磁盘,然后点击确定

电子邮件

  1. 在配置管理器中,点击用户帐号 > 用户特性
  2. 配置以下设置:
    1. 电子邮件地址特性mail
    2. 用户标识符属性objectGUID
  3. 点击搜索规则 (Search Rules) 标签页,然后点击添加搜索规则 (Add Search Rule)。
  4. 输入以下设置:

    1. 范围子树 (Sub-tree)
    2. 规则

      (&(objectCategory=person)(objectClass=user)(mail=*)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))

      此规则会匹配具有非空电子邮件地址的所有未停用的用户,但忽略计算机和代管式服务帐号。

    3. 基本 DN:留空以搜索林中的所有网域。

  5. 点击确定以创建规则。

  6. 点击文件 > 保存以将配置更改提交到磁盘,然后点击确定

电子邮件:网域替换

  1. 在配置管理器中,点击用户帐号 > 用户特性
  2. 配置以下设置:
    1. 电子邮件地址特性mail
    2. 用户标识符属性objectGUID
  3. 点击搜索规则 (Search Rules) 标签页,然后点击添加搜索规则 (Add Search Rule)。
  4. 输入以下设置:

    1. 范围子树 (Sub-tree)
    2. 规则

      (&(objectCategory=person)(objectClass=user)(mail=*)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))

      此规则会匹配具有非空电子邮件地址的所有未停用的用户,但忽略计算机和代管式服务帐号。

    3. 基本 DN:留空以搜索林中的所有网域。

  5. 点击确定以创建规则。

  6. 点击 Google 网域配置 (Google Domain Configuration) > 连接设置,然后选择将 LDAP 电子邮件地址中的域名替换为此域名 (Replace domain names in LDAP email addresses with this domain name)。

  7. 点击文件 > 保存以将配置更改提交到磁盘,然后点击确定

如需详细了解如何映射用户特性,请参阅利用配置管理器设置同步

删除政策

到目前为止,配置侧重于在 Cloud Identity 或 Google Workspace 中添加和更新用户。但是,在 Cloud Identity 或 Google Workspace 中暂停或删除 Active Directory 中已停用或删除的用户也很重要。

在预配过程中,GCDS 会在 Cloud Identity 或 Google Workspace 中生成一个用户列表,这些用户在 Active Directory LDAP 查询结果中没有相应的匹配项。由于 LDAP 查询包含子句 (!(userAccountControl:1.2.840.113556.1.4.803:=2),因此自上次执行预配以来在 Active Directory 中停用或删除的任何用户都将包含在此列表中。GCDS 的默认行为是在 Cloud Identity 或 Google Workspace 中删除这些用户,但您可以自定义此行为:

  1. 在配置管理器中,点击用户帐号 > 用户特性
  2. Google 网域用户删除/暂停政策 (Google Domain Users Deletion/Suspension Policy) 下,请确保选中不要暂停或删除 LDAP 中找到的 Google 网域管理员 (Don't suspend or delete Google domain admins not found in LDAP)。此设置可确保 GCDS 不会暂停或删除您用于配置 Cloud Identity 或 Google Workspace 帐号的超级用户。
  3. (可选)更改针对非管理员用户的删除政策。
  4. 点击文件 > 保存以将配置更改提交到磁盘,然后点击确定

如果您使用多个单独的 GCDS 实例将不同网域或林预配到单个 Cloud Identity 或 Google Workspace 帐号,请确保不同 GCDS 实例不会相互干扰。默认情况下,Cloud Identity 或 Google Workspace 中已从其他来源预配的用户将在 Active Directory 中被错误地标识为“已被删除”。为避免这种情况,您可以将 GCDS 配置为忽略超出您要预配的网域或林范围的所有用户,或者将所有用户移至一个组织单元 (OU),然后执行该 OU。

UPN

  1. 在配置管理器中,点击 Google 网域配置 > 排除规则
  2. 点击添加排除规则 (Add Exclusion Rule)。
  3. 配置以下设置:

    1. 类型用户电子邮件地址 (User Email Address)
    2. 匹配类型正则表达式
    3. 排除规则 (Exclusion Rule):如果使用单个 UPN 后缀网域,请输入以下正则表达式:

      .*@((?!UPN_SUFFIX_DOMAIN).*)$

      UPN_SUFFIX_DOMAIN 替换为您的 UPN 后缀网域,如以下示例所示:

      .*@((?!corp.example.com).*)$

      如果您使用多个 UPN 后缀网域,请按如下所示扩展表达式:

      .*@((?!corp.example.com|branch.example.com).*)$
  4. 点击确定以创建规则。

UPN:网域替换

  1. 在配置管理器中,点击 Google 网域配置 (Google Domain Configuration) > 排除规则 (Exclusion Rules)。
  2. 点击添加排除规则 (Add Exclusion Rule)。
  3. 配置以下设置:

    1. 类型用户电子邮件地址 (User Email Address)
    2. 匹配类型正则表达式
    3. 排除规则 (Exclusion Rule):如果使用单个 UPN 后缀网域,请输入以下正则表达式:

      .*@((?!SUBSTITUTION_DOMAIN).*)$

      SUBSTITUTION_DOMAIN 替换为您用于替换 UPN 后缀网域的网域,如以下示例所示:

      .*@((?!corp.example.com).*)$
  4. 点击确定以创建规则。

电子邮件

  1. 在配置管理器中,点击 Google 网域配置 (Google Domain Configuration) > 排除规则 (Exclusion Rules)。
  2. 点击添加排除规则 (Add Exclusion Rule)。
  3. 配置以下设置:

    1. 类型用户电子邮件地址 (User Email Address)
    2. 匹配类型正则表达式
    3. 排除规则 (Exclusion Rule):如果使用单个 UPN 后缀网域,请输入以下正则表达式:

      .*@((?!MX_DOMAIN).*)$

      MX_DOMAIN 替换为您在电子邮件地址中使用的域名,如以下示例所示:

      .*@((?!corp.example.com).*)$

      如果您使用多个 UPN 后缀网域,请按如下所示扩展表达式:

      .*@((?!corp.example.com|branch.example.com).*)$
  4. 点击确定以创建规则。

电子邮件:网域替换

  1. 在配置管理器中,点击 Google 网域配置 > 排除规则
  2. 点击添加排除规则 (Add Exclusion Rule)。
  3. 配置以下设置:

    1. 类型用户电子邮件地址 (User Email Address)
    2. 匹配类型正则表达式
    3. 排除规则 (Exclusion Rule):如果使用单个 UPN 后缀网域,请输入以下正则表达式:

      .*@((?!SUBSTITUTION_DOMAIN).*)$

      SUBSTITUTION_DOMAIN 替换为您用于替换电子邮件网域的网域,如以下示例所示:

      .*@((?!corp.example.com).*)$
  4. 点击确定以创建规则。

如需详细了解删除和暂停设置,请参阅详细了解配置管理器选项

预配群组

下一步是配置如何在 Active Directory 和 Cloud Identity 或 Google Workspace 之间映射群组。此过程因您打算按常用名还是按电子邮件地址映射群组而有所不同。

按常用名配置群组映射

首先,您需要确定想要预配的安全群组的类型,然后编制适当的 LDAP 查询。下表包含可以使用的常见查询。

类型 LDAP 查询
网域本地群组 (&(objectCategory=group)(groupType:1.2.840.113556.1.4.803:=2147483652))
全局群组 (&(objectCategory=group)(groupType:1.2.840.113556.1.4.803:=2147483650))
通用群组 (&(objectCategory=group)(groupType:1.2.840.113556.1.4.803:=2147483656))
全局和通用群组 (&(objectCategory=group)(|(groupType:1.2.840.113556.1.4.803:=2147483650)(groupType:1.2.840.113556.1.4.803:=2147483656)))

全局群组的查询还包括 Active Directory 定义的群组,例如网域控制器。您可以通过按组织单元 (ou) 限制搜索来过滤这些群组。

其余设置取决于您想要使用 UPN 还是电子邮件地址将 Active Directory 映射到 Cloud Identity 或 Google Workspace 中的用户。

UPN

  1. 在配置管理器中,点击群组 > 搜索规则 (Search Rules)。
  2. 点击添加搜索规则 (Add Search Rule),添加一条用于捕获用户和群组成员资格的规则。
  3. 配置以下设置:
    1. 范围子树 (Sub-tree)
    2. 规则:输入 LDAP 查询。
    3. 基本 DN (Base DN):留空以在林的所有网域中查询群组。
  4. 群组框中,输入以下设置:
    1. 群组电子邮件地址特性cn
    2. 群组显示名称属性name
    3. 群组说明属性 (Group Description Attribute):description
    4. 用户电子邮件名称特性 (User Email Name Attribute):userPrincipalName
  5. 成员框中,输入以下设置:
    1. 成员参考特性member
    2. 将其余字段留空。
  6. 所有者框中,输入以下设置:
    1. 所有者参考特性 (Owner Reference Attribute):managedBy
    2. 将其余字段留空。
  7. 点击前缀-后缀 (Prefix-Suffix) 标签。
  8. 群组电子邮件地址框中,输入以下设置:

    1. 后缀@PRIMARY_DOMAIN,您必须将其中的 @PRIMARY_DOMAIN 替换为 Cloud Identity 或 Google Workspace 帐号的主域名。虽然此设置似乎是多余的,因为 GCDS 会自动附加网域,但您必须明确指定该设置,以防止多个 Google Cloud Directory Sync 实例清除自己未添加的群组成员。

      示例: @example.com

    2. 点击确定

  9. 点击添加搜索规则 (Add Search Rule) 以添加另一个用于捕获嵌套群组成员资格的规则。

  10. 进行以下设置:

    1. 范围子树 (Sub-tree)
    2. 规则:输入相同的 LDAP 查询。
    3. 基本 DN (Base DN):留空以在林的所有网域中查询群组。
  11. 群组框中,输入以下设置:

    1. 群组电子邮件地址特性cn
    2. 群组显示名称属性name
    3. 群组说明属性 (Group Description Attribute):description
    4. 用户电子邮件名称特性 (User Email Name Attribute):cn
  12. 成员框中,输入以下设置:

    1. 成员参考特性member
    2. 将其余字段留空。
  13. 所有者框中,输入以下设置:

    1. 所有者参考特性 (Owner Reference Attribute):managedBy
    2. 将其余字段留空。
  14. 点击前缀-后缀 (Prefix-Suffix) 标签。

  15. 群组电子邮件地址框中,输入以下设置:

    • 后缀@PRIMARY_DOMAIN,您必须将其中的 @PRIMARY_DOMAIN 替换为 Cloud Identity 或 Google Workspace 帐号的主域名。
  16. 点击确定

  17. 点击文件 > 保存以将配置更改提交到磁盘。

  18. 仅在准备好测试配置的情况下才可在提示窗口上点击转到模拟标签页 (Go to the simulation tab)。否则,点击跳过模拟 (Skip simulation)。

电子邮件

  1. 在配置管理器中,点击群组 > 搜索规则 (Search Rules)。
  2. 点击添加搜索规则 (Add Search Rule) 以添加一个用于捕获两个群组成员资格的规则。
  3. 配置以下设置:
    1. 范围子树 (Sub-tree)
    2. 规则:输入 LDAP 查询。
    3. 基本 DN (Base DN):留空以在林的所有网域中查询群组。
  4. 群组框中,输入以下设置:
    1. 群组电子邮件地址特性cn
    2. 群组显示名称属性name
    3. 群组说明属性 (Group Description Attribute):description
    4. 用户电子邮件名称特性 (User Email Name Attribute):mail
  5. 成员框中,输入以下设置:
    1. 成员参考特性member
    2. 将其余字段留空。
  6. 所有者框中,输入以下设置:
    1. 所有者参考特性 (Owner Reference Attribute):managedBy
    2. 将其余字段留空。
  7. 点击确定
  8. 点击文件 > 保存以将配置更改提交到磁盘,然后点击确定

如果在映射用户时使用网域替换,则以上设置也同样适用。

按电子邮件地址配置群组映射

首先,您需要确定想要预配的安全群组的类型,然后编制适当的 LDAP 查询。下表包含可以使用的常见查询。

类型 LDAP 查询
具有电子邮件地址的网域本地群组 (&(objectCategory=group)(groupType:1.2.840.113556.1.4.803:=2147483652)(mail=*))
具有电子邮件地址的全局群组 (&(objectCategory=group)(groupType:1.2.840.113556.1.4.803:=2147483650)(mail=*))
具有电子邮件地址的通用群组 (&(objectCategory=group)(groupType:1.2.840.113556.1.4.803:=2147483656)(mail=*))
具有电子邮件地址的全局和通用群组 (&(objectCategory=group)(|(groupType:1.2.840.113556.1.4.803:=2147483650)(groupType:1.2.840.113556.1.4.803:=2147483656))(mail=*))

其余设置取决于您想要使用 UPN 还是电子邮件地址将 Active Directory 映射到 Cloud Identity 或 Google Workspace 中的用户。

UPN

  1. 在配置管理器中,点击群组 > 搜索规则 (Search Rules)。
  2. 点击添加搜索规则 (Add Search Rule) 以添加一个用于捕获两个群组成员资格的规则。
  3. 配置以下设置:
    1. 范围子树 (Sub-tree)
    2. 规则:输入 LDAP 查询。
    3. 基本 DN (Base DN):留空以在林的所有网域中查询群组。
  4. 群组框中,输入以下设置:
    1. 群组电子邮件地址特性mail
    2. 群组显示名称属性name
    3. 群组说明属性 (Group Description Attribute):description
    4. 用户电子邮件名称特性 (User Email Name Attribute):userPrincipalName
  5. 成员框中,输入以下设置:
    1. 成员参考特性member
    2. 将其余字段留空。
  6. 所有者框中,输入以下设置:
    1. 所有者参考特性 (Owner Reference Attribute):managedBy
    2. 将其余字段留空。
  7. 点击确定
  8. 点击添加搜索规则 (Add Search Rule) 以添加另一个用于捕获嵌套群组成员资格的规则。
  9. 配置以下设置:
    1. 范围子树 (Sub-tree)
    2. 规则:输入相同的 LDAP 查询。
    3. 基本 DN (Base DN):留空以在林的所有网域中查询群组。
  10. 群组框中,输入以下设置:
    1. 群组电子邮件地址特性mail
    2. 群组显示名称属性name
    3. 群组说明属性 (Group Description Attribute):description
    4. 用户电子邮件名称特性 (User Email Name Attribute):mail
  11. 成员框中,输入以下设置:
    1. 成员参考特性member
    2. 将其余字段留空。
  12. 所有者框中,输入以下设置:
    1. 所有者参考特性 (Owner Reference Attribute):managedBy
    2. 将其余字段留空。
  13. 点击确定
  14. 点击文件 > 保存以将配置更改提交到磁盘。
  15. 仅在准备好测试配置的情况下才可在提示窗口上点击转到模拟标签页 (Go to the simulation tab)。否则,点击跳过模拟 (Skip simulation)。

电子邮件

  1. 在配置管理器中,点击群组 > 搜索规则 (Search Rules)。
  2. 点击使用默认值 (Use Defaults),以添加几个默认规则。
  3. 点击第一条规则的修改图标。
  4. 规则框中,更改默认的 LDAP 查询。
  5. 点击确定
  6. 点击第二条规则的 X 形图标以移除此规则。
  7. 点击文件 > 保存以将配置更改提交到磁盘。
  8. 仅在准备好测试配置的情况下才可在提示窗口上点击转到模拟标签页 (Go to the simulation tab)。否则,点击跳过模拟 (Skip simulation)。

如果在映射用户时使用网域替换,则以上设置也同样适用。

删除政策

与删除用户类似,GCDS 处理群组的删除。如果您使用多个单独的 GCDS 实例将不同网域或林预配到单个 Cloud Identity 或 Google Workspace 帐号,请确保不同 GCDS 实例不会相互干扰。

默认情况下,Cloud Identity 或 Google Workspace 中已从其他来源预配的用户将在 Active Directory 中被错误地标识为“已被删除”。为避免这种情况,请将 GCDS 配置为忽略超出您要预配的网域或林范围的所有用户。

UPN

  1. 点击 Google 网域配置 (Google Domain Configuration) > 排除规则 (Exclusion Rules)。
  2. 点击添加排除规则 (Add Exclusion Rule)。
  3. 配置以下设置:

    1. 类型群组成员电子邮件地址 (Group Member Email Address)
    2. 匹配类型正则表达式
    3. 排除规则 (Exclusion Rule):如果使用单个 UPN 后缀网域,请输入以下正则表达式:

      .*@((?!UPN_SUFFIX_DOMAIN).*)$

      UPN_SUFFIX_DOMAIN 替换为您的 UPN 后缀网域,如以下示例所示:

      .*@((?!corp.example.com).*)$

      如果您使用多个 UPN 后缀网域,请按如下所示扩展表达式:

      .*@((?!corp.example.com|branch.example.com).*)$
  4. 点击确定以创建规则。

UPN:网域替换

  1. 点击 Google 网域配置 (Google Domain Configuration) > 排除规则 (Exclusion Rules)。
  2. 点击添加排除规则 (Add Exclusion Rule)。
  3. 配置以下设置:

    1. 类型群组成员电子邮件地址 (Group Member Email Address)
    2. 匹配类型正则表达式
    3. 排除规则 (Exclusion Rule):如果使用单个 UPN 后缀网域,请输入以下正则表达式:

      .*@((?!SUBSTITUTION_DOMAIN).*)$

      SUBSTITUTION_DOMAIN 替换为您用于替换 UPN 后缀网域的网域,如以下示例所示:

      .*@((?!corp.example.com).*)$
  4. 点击确定以创建规则。

电子邮件

  1. 点击 Google 网域配置 (Google Domain Configuration) > 排除规则 (Exclusion Rules)。
  2. 点击添加排除规则 (Add Exclusion Rule)。
  3. 配置以下设置:

    1. 类型群组成员电子邮件地址 (Group Member Email Address)
    2. 匹配类型正则表达式
    3. 排除规则 (Exclusion Rule):如果使用单个 UPN 后缀网域,请输入以下正则表达式:

      .*@((?!MX_DOMAIN).*)$

      MX_DOMAIN 替换为您在电子邮件地址中使用的域名,如以下示例所示:

      .*@((?!corp.example.com).*)$

      如果您使用多个 UPN 后缀网域,请按如下所示扩展表达式:

      .*@((?!corp.example.com|branch.example.com).*)$
  4. 点击确定以创建规则。

电子邮件:网域替换

  1. 点击 Google 网域配置 (Google Domain Configuration) > 排除规则 (Exclusion Rules)。
  2. 点击添加排除规则 (Add Exclusion Rule)。
  3. 配置以下设置:

    1. 类型群组成员电子邮件地址 (Group Member Email Address)
    2. 匹配类型正则表达式
    3. 排除规则 (Exclusion Rule):如果使用单个 UPN 后缀网域,请输入以下正则表达式:

      .*@((?!SUBSTITUTION_DOMAIN).*)$

      SUBSTITUTION_DOMAIN 替换为您用于替换电子邮件网域的网域,如以下示例所示:

      .*@((?!corp.example.com).*)$
    4. 点击确定以创建规则。

如需详细了解群组设置,请参阅详细了解配置管理器选项

配置日志记录和通知

要保持用户同步,您需要根据时间安排运行 GCDS。为了使您能够跟踪 GCDS 活动和潜在问题,您可以配置 Google Cloud Directory Sync 来写入日志文件:

  1. 在配置管理器中,点击日志记录
  2. 文件名设置为 PROGRAM_DATA\gcds\gcds_sync.#{timestamp}.log。将 PROGRAM_DATA 替换为 PowerShell 命令在您先前运行它时返回的 ProgramData 文件夹的路径。
  3. 点击文件 > 保存以将配置更改提交到磁盘,然后点击确定

除了日志记录,GCDS 还可以通过电子邮件发送通知。如需激活此服务,请点击通知并提供邮件服务器的连接信息。

模拟用户预配

您已完成 GCDS 配置。如需验证配置按预期工作,我们建议您模拟用户预配运行。在模拟过程中,GCDS 不会对 Cloud Identity 进行任何更改,而是会报告它在常规预配运行过程中将要进行的更改。

  1. 在配置管理器中,点击同步
  2. 在屏幕底部,选择清除缓存 (Clear cache),然后点击模拟同步 (Simulate sync)。
  3. 该过程完成后,请查看日志的待应用的更改部分(显示在对话框的下半部分中),并验证是否建议至少要创建或修改一个用户。

初始用户预配

现在,您可以触发初始用户预配:

警告

  • 触发用户预配将永久更改 Cloud Identity 或 Google Workspace 帐号中的用户和群组。
  • 如果您要预配大量用户,请考虑临时更改 LDAP 查询,使其仅匹配这些用户的子集。使用此用户子集,您可以根据需要测试该过程并调整设置。成功验证结果后,请改回 LDAP 查询并预配其余用户。
  • 在测试时避免重复修改或删除大量用户,因为此类操作可能会被标记为滥用行为。

触发预配运行,如下所示:

  1. 在配置管理器中,点击同步
  2. 在屏幕底部,选择清除缓存,然后点击同步并应用更改 (Sync & apply changes)。

    随即将出现一个对话框,显示状态。

  3. 该过程完成后,请查看该对话框下半部分显示的日志:

    1. 成功用户更改 (Successful user changes) 下,确认至少已创建一个用户。
    2. 故障下,确认未发生故障。

如果您选择预配群组,则日志的其余部分可能包含多个警告,通常可以放心地忽略这些警告。

安排

如需确保将 Active Directory 中进行的更改传播到 Cloud Identity,请设置一项每小时触发一次预配运行的计划任务:

  1. 以管理员身份打开 PowerShell 控制台。
  2. 检查系统上是否有可用的 Active Directory PowerShell 模块

    import-module ActiveDirectory

    如果命令失败,请下载并安装远程服务器管理工具,然后重试。

  3. 在记事本中,创建一个文件,将以下内容复制到其中,然后将该文件保存到 %ProgramData%\gcds\sync.ps1。完成后,关闭该文件。

    [CmdletBinding()]
    Param(
        [Parameter(Mandatory=$True, Position=1)]
        [string]$config,
    
        [Parameter(Mandatory=$True, Position=1)]
        [string]$gcdsInstallationDir
    )
    
    import-module ActiveDirectory
    
    # Stop on error.
    $ErrorActionPreference ="stop"
    
    # Ensure it's an absolute path.
    $rawConfigPath = [System.IO.Path]::Combine((pwd).Path, $config)
    
    # Discover closest GC in current domain.
    $dc = Get-ADDomainController -discover -Service "GlobalCatalog" -NextClosestSite
    Write-Host ("Using Global Catalog server {0} of domain {1} as LDAP source" -f [string]$dc.HostName, $dc.Domain)
    
    # Load XML and replace the endpoint.
    $dom = [xml](Get-Content $rawConfigPath)
    $ldapConfigNode = $dom.SelectSingleNode("//plugin[@class='com.google.usersyncapp.plugin.ldap.LDAPPlugin']/config")
    
    # Tweak the endpoint.
    $ldapConfigNode.hostname = [string]$dc.HostName
    $ldapConfigNode.ldapCredMachineName = [string]$dc.HostName
    $ldapConfigNode.port = "3268"   # Always use Global Catalog port
    
    # Tweak the tsv files location
    $googleConfigNode = $dom.SelectSingleNode("//plugin[@class='com.google.usersyncapp.plugin.google.GooglePlugin']/config")
    $googleConfigNode.nonAddressPrimaryKeyMapFile = [System.IO.Path]::Combine((pwd).Path, "nonAddressPrimaryKeyFile.tsv")
    $googleConfigNode.passwordTimestampFile = [System.IO.Path]::Combine((pwd).Path, "passwordTimestampCache.tsv")
    
    # Save resulting config.
    $targetConfigPath = $rawConfigPath + ".autodiscover"
    
    $writer = New-Object System.IO.StreamWriter($targetConfigPath, $False, (New-Object System.Text.UTF8Encoding($False)))
    $dom.Save($writer)
    $writer.Close()
    
    # Start provisioning.
    Start-Process -FilePath "$gcdsInstallationDir\sync-cmd" `
        -Wait -ArgumentList "--apply --loglevel INFO --config ""$targetConfigPath"""
    
  4. 配置管理器创建了一个密钥来加密配置文件中的凭据。要确保 GCDS 在作为计划任务运行时仍然可以读取配置,请运行以下命令,将该密钥从您自己的配置文件复制到 NT AUTHORITY\LOCAL SERVICE 的配置文件:

    New-Item -Path Registry::HKEY_USERS\S-1-5-19\SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp -Force;
    Copy-Item -Path Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER\SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\util `
        -Destination Microsoft.PowerShell.Core\Registry::HKEY_USERS\S-1-5-19\SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp\util
    

    如果命令失败,请确保您以管理员身份启动 PowerShell 控制台。

  5. 通过运行以下命令创建计划任务。计划任务将每小时触发一次,并调用 sync.ps1 脚本作为 NT AUTHORITY\LOCAL SERVICE

    $taskName = "Synchronize to Cloud Identity"
    $gcdsDir = "$Env:ProgramData\gcds"
    
    $action = New-ScheduledTaskAction -Execute 'PowerShell.exe' `
      -Argument "-ExecutionPolicy Bypass -NoProfile $gcdsDir\sync.ps1 -config $gcdsDir\config.xml -gcdsInstallationDir '$Env:Programfiles\Google Cloud Directory Sync'" `
      -WorkingDirectory $gcdsDir
    $trigger = New-ScheduledTaskTrigger `
      -Once `
      -At (Get-Date) `
      -RepetitionInterval (New-TimeSpan -Minutes 60) `
      -RepetitionDuration (New-TimeSpan -Days (365 * 20))
    
    $principal = New-ScheduledTaskPrincipal -UserID "NT AUTHORITY\LOCAL SERVICE" -LogonType ServiceAccount
    Register-ScheduledTask -Action $action -Trigger $trigger -Principal $principal -TaskName $taskName
    
    $task = Get-ScheduledTask -TaskName "$taskName"
    $task.Settings.ExecutionTimeLimit = "PT12H"
    Set-ScheduledTask $task
    

如需了解详情,请参阅计划自动同步

测试用户预配

您已完成 GCDS 的安装和配置,并且计划任务将每小时触发一次预配运行。

如需手动触发预配运行,请切换到 PowerShell 控制台并运行以下命令:

$taskName = "Synchronize to Cloud Identity"
Start-ScheduledTask $taskName

清除数据

要移除 GCDS,请执行以下步骤:

  1. 打开 Windows 控制面板,然后点击程序 > 卸载程序
  2. 选择 Google Cloud Directory Sync,然后点击卸载/更改以启动卸载向导。接着,按照向导中的说明进行操作。
  3. 打开 PowerShell 控制台,运行以下命令以移除计划任务:

    $taskName = "Synchronize to Cloud Identity"
    Unregister-ScheduledTask -TaskName $taskName -Confirm:$False
    
  4. 运行以下命令以删除配置和日志文件:

    Remove-Item -Recurse -Force "$Env:ProgramData\gcds"
    Remove-Item -Recurse -Path Registry::HKEY_USERS\S-1-5-19\SOFTWARE\JavaSoft\Prefs\com\google\usersyncapp
    

后续步骤