创建企业绑定

如需通过 EMM 控制台注册新组织,您需要创建企业绑定。Enterprises 资源表示 EMM 与组织之间的绑定。您可以使用它的实例代表组织调用操作。

Play EMM API 提供了三种创建企业绑定实例的方法:

  • 受管理的 Google 网域注册 - 此方法可以代替其他两种方法。已有代管式 Google 网域的组织以及初次与 Google 合作的组织,将使用相同的注册界面。他们浏览界面的过程因其具体情况和需求而异。组织不需要提前获取 EMM 令牌。

  • Google Play 企业版帐号注册 - 某组织希望使用 Google Play 企业版帐号。您可以将 Google 的 Android 注册界面与您的 EMM 控制台集成,并为组织提供一种快速创建企业绑定实例以将实例绑定到 EMM 的方法。此操作会为用户和设备启用 Google Play 企业版帐号。 在 API 文档中,此方法有时称为 EMM 发起的。此方法已弃用,取而代之的是之前的代管式 Google 网域注册方法。

  • 受管理的 Google 网域注册 - 组织已有受管理的 Google 网域。IT 管理员需要完成多项手动任务,例如向 Google 验证网域所有权、获取 EMM 令牌以及创建企业服务帐号。在 API 文档中,此方法有时称为“Google 发起的”。

您可以使用 Enterprises 资源在 EMM 控制台中支持这两种方法。表 1 显示了此资源用于将组织绑定到 EMM 的相关字段和操作。

表 1:企业 API 和替代绑定流程

 Google Play 企业版账号集受管理的 Google 网域 说明
字段
id 组织的唯一标识符,通过 enrollcompleteSignup 调用返回。
kind 使用固定字符串值“androidenterprise#enterprise”识别资源类型。
name enterprise 对象关联的组织。
primaryDomain未设置 由于 Google Play 企业版帐号企业与 Google 网域模型无关,因此此字段仅与 Google 托管网域相关。
管理员 []未设置使用 EMM 发起的注册流程注册 Android 的 IT 管理员将成为企业绑定的管理员(所有者)。使用 Google Play 企业版控制台,IT 管理员可以邀请组织中的其他用户参与管理任务。请参阅 Google Play 企业版帮助中心
管理员 [].email 未设置
方法
completeSignup 如果给定 completionTokenenterpriseToken,在响应正文中会返回 Enterprises 资源。
generateSignupUrl 对于给定的 callbackUrl,它会返回一个网址和一个 completionToken
enroll 使用 EMM 注册调用方,EMM 的令牌随请求一起提交。
getServiceAccount 返回服务帐号和凭据。
setAccount 设置将用于以企业身份向 API 进行身份验证的帐号。
unenroll EMM 可以使用取消注册将绑定分离到任一类型企业。必须使用用于 MSA 的 EMM 凭据(而不是 ESA 凭据)进行调用。

Google Play 企业版账号注册

此注册方法已弃用。请改用受管理的 Google 网域注册方法。

受管理的 Google 网域注册

您可以在 EMM 控制台中集成注册流程:

Google Play 企业版账号管理员注册
图 1. 代管式 Google 域名注册工作流

IT 管理员开始创建企业。为此,IT 管理员需要执行以下操作:

  1. 登录 EMM 控制台。
  2. 例如,点击或选择配置 Android,然后重定向到 Google 托管的注册界面。
  3. 在注册界面中提供有关企业的详细信息。
  4. 系统会将您重定向至 EMM 控制台。

IT 管理员的电子邮件地址现在已与 Google 帐号关联,该帐号是受管理的 Google 网域的管理员帐号。

最佳做法:遵循 Google 安全指南,帮助确保管理员帐号的安全。

前提条件

面向 IT 管理员

  • 对 EMM 控制台的访问权限,以及在控制台中进行相应选择(例如,作为菜单选项的 Manage Android)所需的权限。

  • 工作电子邮件地址。该地址应属于组织拥有的网域,而不是 Gmail.com 等共享网域的一部分

对于 EMM 控制台

如需实现代管式 Google Doomain 注册流程,您的 EMM 控制台必须能够:

  • 通过 Play EMM API 调用调用时,请使用您的 MSA 凭据。在设置组织的企业服务帐号 (ESA) 之前,您的 MSA 用于代表 IT 管理员调用许多操作。

  • 处理通过安全网址重定向到 Google 提供的外部网站的过程,以启动注册流程并完成注册流程。

  • 注册后可使用 ESA 凭据进行配置。由于您的 EMM 控制台可用于在任何给定组织的网站中创建多个企业,因此您需要一种方法来将每个 enterpriseId 与其各自的服务帐号和凭据相关联。请考虑通过调用 Enterprises.getServiceAccount 并使用 Serviceaccountkeys API 处理密钥管理,为组织创建服务帐号。如需了解详情,请参阅以编程方式创建企业服务帐号

Android 注册流程要求您提供安全 (https) 服务,以供您的控制台在运行时使用。此安全服务的网址可以是本地网址,可以包含会话或其他唯一的标识信息,只要格式正确,以便系统进行解析即可。例如:

https://localhost:8080/enrollmentcomplete?session=12345

注册过程

注册过程只需不到 5 分钟的时间。以下步骤假定托管 callbackUrl 的服务器已启动并正在运行。这些步骤还假设您的控制台包含一个界面组件(例如包含管理 Android 选项的菜单选择),在经过身份验证的 IT 管理员选择相应选项时,该组件会启动注册流程。

注册 Google Play 企业版帐号企业的 12 个步骤
图 2. 创建与代管式 Google 网域的绑定的 12 步流程
  1. IT 管理员在 EMM 控制台中发起注册请求。

  2. 调用 Enterprises.generateSignupUrl,并将 callbackURL 作为唯一参数。示例:

    https://localhost:8080/enrollcomplete?session=12345

  3. 响应将包含注册网址(有效期 30 分钟)和完成令牌。提取并保存完成令牌。

    最佳做法:将完成令牌与发起注册的 IT 管理员相关联。

  4. generateSignupURL 响应中提取 url

  5. 重定向到第 4 步中提取的网址。

  6. IT 管理员按照注册界面中的设置流程来创建企业绑定:

    1. IT 管理员输入有关自己及其组织的详细信息,如果还没有 Google 帐号,请设置密码。

    2. IT 管理员会看到 EMM 名称,并确认组织将与此 EMM 绑定。

    3. IT 管理员同意 Google 服务条款。

  7. 注册界面会根据第 2 步中指定的网址生成一个回调网址。

  8. 注册界面会将 IT 管理员重定向到回调网址。将企业令牌提取并保存到该网址。示例:

    https://localhost:8080/enrollcomplete?session=12345&enterpriseToken=5h3jCC903lop1

  9. 调用 Enterprises.completeSignup,并传递 completionToken(第 3 步)和 enterpriseToken(第 8 步)。

  10. 该调用会在响应正文中返回一个 Enterprises 实例。存储 idname 和管理员电子邮件地址(如果存在)以供将来使用。

  11. 创建企业服务帐号 (ESA)。ESA 凭据采用电子邮件地址和私钥的形式。您可以通过以下两种方式创建 ESA:

    • 最佳实践:使用 Play EMM API 以编程方式创建 ESA
    • 显示一个页面,指示 IT 管理员在 Google API 控制台中创建 ESA。如需了解详情,请参阅创建服务帐号(指示管理员选择项目 > Editor 作为其角色,并勾选私钥下载框)。在 IT 管理员创建 ESA 后,使用 ESA 的私钥凭据配置您的控制台
  12. 使用您的 MSA 凭据,调用 setAccount 以为此组织设置 ESA。

注册流程已完成

  • 新的受管理的 Google 网域已与您的 EMM 绑定。
  • IT 管理员的 Google 帐号被配置为网域管理员,并且可以访问 https://play.google.com/work 以管理组织的应用。
  • 您的 EMM 控制台可以通过 Google Play EMM API 使用 ESA 管理组织的数据。

以编程方式创建 ESA

为简化 ESA 的密钥管理,请使用 Google Play EMM API 为组织生成服务帐号,而不是使用 Google Cloud 控制台。通过 Play EMM API 生成的服务帐号:

  • 不会显示在属于您或组织的任何 Cloud Console 项目中;必须通过编程方式进行管理。
  • 在您取消注册组织后,系统会将其删除。

如需以编程方式生成服务帐号,请执行以下操作:

  1. 使用 enterpriseId 调用 Enterprises.getServiceAccount(请参阅注册流程中的第 10 步),并指定您需要的密钥类型 (keyType)(googleCredentials、pkcs12)。系统会返回服务帐号的服务帐号名称和私钥(格式与 Google API 控制台返回的格式相同)。

  2. 调用 Enterprises.setAccount 并为组织设置服务帐号。

最佳做法:支持让 IT 管理员更改 ESA 凭据。如需在 EMM 控制台中执行此操作,请使用现有的 ESA 调用 setAccount

管理服务账号密钥

Enterprises.getServiceAccount 返回的服务帐号由 Google 透明地创建。作为 EMM,您无权访问这些帐号。但是,您可以将 Serviceaccountkeys API 集成到您的控制台中,以允许组织管理自己以编程方式生成的 ESA 和密钥。

借助 Serviceaccountkeys API,组织可以插入、删除和列出其服务帐号的有效凭据。这些 API 必须在作为为组织设置的 ESA 授权的情况下调用,并且该 ESA 必须是从 getServiceAccount 生成的。换言之,在组织调用 Enterprises.setAccount(使用由 Enterprises.getServiceAccount 生成的服务帐号)后,只有该组织有权调用 Serviceaccountkeys API 来管理该帐号。

表 2. Serviceaccountkeys API

字段
id服务器分配的 ServiceAccountKey 的不透明唯一字符串标识符。
kind使用固定字符串 androidenterprise#serviceAccountKey 标识资源。
类型生成的密钥数据的文件格式。可接受以下值:
  • googleCredentials
  • pkcs12
data包含专用凭据文件正文的字符串。创建时填充。不由 Google 存储。
方法
删除移除服务帐号的指定凭据(使用 enterpriseIdkeyId 指定)并使凭据失效。
insert为与企业关联的服务帐号生成新凭据。
list列出与企业关联的服务帐号的所有有效凭据。仅返回 ID 和密钥类型。

通知

您可以通过调用 Enterprises.pullNotificationSet 从程序化生成的 ESA 获取通知。如需了解详情,请参阅设置 EMM 通知

受管理的 Google 网域注册

如需管理属于某个托管 Google 网域的设备,您需要在 EMM 控制台、组织和 Google 之间建立连接(称为绑定)。

前提条件

组织必须拥有代管式 Google 网域、EMM 注册令牌和企业服务帐号 (ESA)。如需了解有关 IT 管理员如何获取这些详细信息的说明,请参阅 Android Enterprise 帮助中心

受管理的 Google 网域

如果组织的 IT 管理员在注册 Google Workspace 时声明了托管网域,则可以通过 Google 管理控制台启用 Android 管理功能。如果组织没有代管式 Google 网域,其 IT 管理员必须在 Google 上完成一次性 Web 注册流程。

EMM 令牌

IT 管理员可以从 Google 管理控制台(在设备 > 移动设备和端点 > 设置 > 第三方集成下)获取 EMM 令牌。

欧洲航天局

贵组织的 IT 管理员可以通过 Google Cloud 控制台,在与 EMM 控制台关联的项目中创建 ESA。ESA 具有一个名称、一个 ID 和一个密钥,用于对帐号进行身份验证,以便代表其执行的操作。该 ID 的格式与电子邮件地址类似,服务帐号的名称在 @ 符号前面,项目名称后面加上 Google 服务信息(例如,some-orgs-esa@myemmconsole313302.iam.gserviceaccount.com)。

注册过程

  1. IT 管理员会从 Google 管理控制台获取 EMM 令牌。
  2. IT 管理员与您共享 EMM 令牌,这样您就可以在其网域上管理 Android。
  3. 通过 EMM 控制台,使用 EMM 令牌调用 Enterprises.enroll。这会将组织的 Android 解决方案绑定到其 Google 网域。
    • enroll 方法会返回一个唯一的 enterpriseId,您稍后可以使用list方法对其进行检索(仅适用于受管理的 Google 网域)。
    • 或者,您也可以将有关绑定(enterpriseIdprimaryDomain)的信息存储在数据存储区中,以避免进行 API 调用来获取这些详细信息。在 Google 帐号场景中,组织的 primaryDomain 是唯一密钥,用于向 EMM 和 Google 标识组织。
  4. 如需针对特定组织调用 Google Play EMM API,请执行以下操作:
    • 您可以代表组织创建 ESA,或者由管理员创建 ESA,然后将其分享给您。
    • 通过 EMM 控制台,使用 enterpriseId 和 ESA 的电子邮件地址调用 setAccount。这使得 ESA 能够以企业身份向该 API 进行身份验证。

示例

以下是给定 primaryDomainNameserviceAccountEmailauthenticationToken 来注册组织的示例:

    public void bind(String primaryDomainName, String serviceAccountEmail,
        String authenticationToken) throws IOException {

      Enterprise enterprise = new Enterprise();
      enterprise.setPrimaryDomain(primaryDomainName);

      Enterprise result = androidEnterprise.enterprises()
          .enroll(authenticationToken, enterprise)
          .execute();

      EnterpriseAccount enterpriseAccount = new EnterpriseAccount();
      enterpriseAccount.setAccountEmail(serviceAccountEmail);
      androidEnterprise.enterprises()
          .setAccount(result.getId(), enterpriseAccount)
          .execute();
    }

此示例使用 Java 版客户端库和 com.google.api.services.androidenterprise.model 软件包中的 AndroidEnterprise 服务类。示例中所示的过程可总结为以下步骤:

  1. 使用 bind 提供的参数创建一个新的 AndroidEnterprise 对象,这是一个包含主域名、服务帐号电子邮件地址和 EMM 注册令牌的模型类。
  2. 指定新创建的企业对象的主域名。
  3. 调用注册方法,并提供企业对象和注册令牌。
  4. 使用客户的 ESA ID (serviceAccountEmail) 创建一个新的 EnterpriseAccount 对象。
  5. 通过提供 enterpriseId(在第 3 步中返回)和 enterpriseAccount 字段来设置帐号。

或者,您也可以将有关绑定(enterpriseIdprimaryDomain)的信息存储在数据存储区中,以避免进行 API 调用来获取这些详细信息。在 Google 帐号场景中,组织的 primaryDomain 是向 EMM 和 Google 标识组织的唯一密钥。

设置本地部署

如果某个组织要求将其数据保留在网站上,您无法访问,则需要确保您的服务器绝不会看到一组有效的 ESA 凭据。为此,请在网站上生成并存储一组 ESA 凭据:

  1. 完成注册流程
    1. 如第 11 步中所示,使用您的 MSA 调用 getServiceAccount。这会生成 ESA 凭据。
    2. 如第 12 步中所示,使用 ESA 上的 setAccount 将其设置为此组织的 ESA。
  2. 将 ESA 传递给组织的本地服务器。
  3. 在本地服务器上执行以下步骤:
    1. 调用 Serviceaccountkeys.insert 为 ESA 创建一个新密钥。此私钥不会存储在 Google 服务器上,并且仅在创建帐号时返回一次。无法通过其他方式访问。
    2. 使用新的 ESA 凭据调用 Serviceaccountkeys.list。这将返回有效的服务帐号凭据。
    3. 调用 Serviceaccountkeys.delete 以删除除刚刚在本地创建的 ESA 凭据之外的所有凭据。
    4. (可选)调用 Serviceaccountkeys.list 以验证当前在本地使用的凭据是否为服务帐号的唯一有效凭据。

本地服务器现在是唯一具有 ESA 凭据的服务器。只有通过 getServiceAccount 生成的 ESA 可以访问 ServiceAccountKeys,您的 MSA 不允许调用它。

最佳做法:不要在本地存储主服务帐号 (MSA) 凭据。为每个本地部署使用单独的 ESA。

取消注册、重新注册或删除企业绑定

取消注册

如需取消组织与 EMM 解决方案的绑定,请使用 unenroll。企业绑定在取消注册时不会被删除,但其 EMM 管理的用户及其所有相关用户数据都会在 30 天后删除。下面是一个示例实现:

    public void unbind(String enterpriseId) throws IOException {
      androidEnterprise.enterprises().unenroll(enterpriseId).execute();
    }

最佳做法:如果您有组织名称和企业绑定 ID 映射的数据存储区,请在调用 unenroll 后从数据存储区中删除该信息。

重新注册

IT 管理员可以使用现有的 enterpriseId 为企业重新注册。为此,他们需要使用所有者级帐号登录,然后按照注册流程操作。

从您的角度来看,重新注册流程是透明的:无法确定重定向网址(第 8 步)中返回的企业令牌是来自新的组织,还是之前使用其他 EMM 注册的组织。

如果某个组织之前已使用您的 EMM 解决方案注册,您或许可以识别企业绑定 ID。如果 IT 管理员重新注册组织,且该组织在您取消注册后的 30 天内重新注册,则您可以恢复由 EMM 管理的用户及相关用户数据。如果组织之前已使用其他 EMM 注册,您将无法访问由该 EMM 创建的由 EMM 管理的用户的用户 ID。这是因为这些用户 ID 是 EMM 专用的。

删除

IT 管理员可以从 Google Play 企业版中删除其组织。在 24 小时内,管理员、最终用户和您均无法访问组织的数据、帐号、许可分配和其他资源。因此,您的 API 调用会针对 enterpriseId 参数返回 HTTP 404 Not Found 响应状态代码。如需在 EMM 控制台中处理此错误,请在移除与组织的任何关联之前,提示 IT 管理员进行确认。