自 v2.3.0 版本起可用

如果您的组织使用 G Suite 进行用户身份验证,您可以配置 Rancher 以允许您的用户使用他们的 G Suite 凭据登录。

只有 G Suite 域的管理员才能访问管理 SDK。因此,只有 G Suite 管理员可以配置 Rancher 的 Google OAuth。

在 Rancher 中,只有具有Manage Authentication 全局角色的管理员或用户才能配置身份验证。

先决条件

  • 您必须拥有一个配置的G Suite 管理员帐户
  • G Suite 需要一个顶级私有域 FQDN作为授权域。获取 FQDN 的一种方法是在 Route53 中为 Rancher Server 创建 A 记录。您不需要使用该记录更新 Rancher Server 的 URL 设置,因为可能有集群使用该 URL。
  • 您的 G Suite 域必须启用了 Admin SDK API。您可以使用此页中的步骤来启用它。

启用 Admin SDK API 后,您的 G Suite 域的 API 页面应如下图所示: 启用管理APIs

在 Rancher 中为 OAuth 设置 G Suite

在 Rancher 系统中设置 Google OAuth 之前,您需要登录到您的 G Suite 帐户,完成以下设置:

添加 Rancher 为授权域

  1. 点击这里转到您的 Google 域的凭证页面。
  2. 选择您的项目并点击OAuth consent screen. OAuth同意屏幕
  3. 进入授权域,并在列表中输入您的 Rancher Server URL 的顶级私有域。顶级私有域是最右边的超级域。例如,www.foo.co.uk 是 foo.co.uk 的顶级私有域。有关顶级域的更多信息,请参考本文
  4. 进入Scopes for Google APIs,确保email, profileopenid被启用。

结果: Rancher 已被添加为 Admin SDK API 的授权域。

创建 OAuth2 凭证

  1. 转到 Google API 控制台,选择您的项目,并转到credentials页面。 credentials
  2. Create Credentials下拉菜单中,选择OAuth client ID
  3. 单击Web 应用程序
  4. 输入一个名称。
  5. 填写授权的 JavaScript 源授权的重定向 URI。注意:设置 Google OAuth 的 Rancher UI 页面(可在Security > Authentication >Google下的全局视图中获得)为您提供了这一步要输入的准确链接。
  • 授权的 JavaScript 源一栏,输入您的 Rancher Server 的 URL。
  • 授权的重定向 URI一栏,输入您的 Rancher Server 的 URL 并附加路径verify-auth。例如,如果您的 URI 是https://rancherServer,您需要输入https://rancherServer/verify-auth
  1. 点击创建
  2. 创建凭据之后,您将看到一个页面,其中显示您的凭据列表。选择刚刚创建的凭据,然后在最右边的行中单击下载 JSON保存文件,以便您可以在 Rancher 中设置这些凭据。

结果: 您的 OAuth 凭据已成功创建。

创建服务帐户凭证

由于 Google 管理 SDK 只对管理员可用,普通用户不能使用它来检索其他用户或其组的配置文件。普通用户甚至不能检索他们自己的组。

由于 Rancher 提供基于组的成员访问,我们要求用户能够获得自己的组,并在需要时查找其他用户和组。

作为获得此功能的一种变通方法,G Suite 建议创建一个服务帐户,并将您的 G Suite 域的权限委托给该服务帐户。

本节介绍如何:

  • 创建一个服务帐户
  • 为服务帐户创建一个密钥并下载 JSON 格式的凭据
  1. 单击此处并选择生成 OAuth 凭据的项目。
  2. 点击Create Service Account
  3. 输入名称并单击Create服务账户创建步骤1
  4. 不要在Service account permissions页面设置任何角色,点击Continue服务账户创建步骤2
  5. 单击Create Key并选择 JSON 选项。下载 JSON 文件并保存它,以便您可以将其作为服务帐户凭据提供给 Rancher。 服务帐户创建步骤3

结果: 您的服务账户创建成功.

将服务账户密钥注册为 OAuth 客户端

您需要为在最后一步中创建的服务帐户授予一些权限。Rancher 仅要求为用户和组授予只读权限。

使用服务帐户密钥的唯一 ID,按照以下步骤将其注册为 Oauth 客户端:

  1. 获取您刚刚创建的密钥的唯一 ID。如果它没有显示在您创建的键旁边的键列表中,则必须启用它。要启用它,请单击Unique ID并单击OK这将向服务帐户密钥列表中添加Unique ID列。将列出的服务帐户保存为您创建的服务帐户。注意:这是一个数字 Key,不要与字母数字字段key ID混淆。

服务帐户唯一ID

  1. 进入Manage OAuth Client Access页。
  2. Client Name字段中添加上一步中获得的唯一 ID。
  3. One or More API Scopes字段中,添加以下作用域:

    1. openid,profile,email,https://www.googleapis.com/auth/admin.directory.user.readonly,https://www.googleapis.com/auth/admin.directory.group.readonly
  4. 点击Authorize

结果: 服务帐户在您的 G Suite 帐户中注册为 OAuth 客户端。

在 Rancher 中配置 Google OAuth

  1. 使用分配了administrator角色的本地用户登录到 Rancher。这个用户也称为本地主体。
  2. 全局视图中,从主菜单中单击安全 > 认证
  3. 点击Google ,UI 中的说明涵盖了使用 Google OAuth 设置身份验证的步骤。
  • 管理电子邮件:从您的 GSuite 设置中提供管理员账户的电子邮件。为了执行用户和组查找,谷歌 api 需要管理员的电子邮件和服务帐户密钥。
  • 域:提供配置了 G Suite 的域。请提供准确的域,而不是任何别名。
  • 嵌套组成员关系:选中此框以启用嵌套组成员关系。Rancher 管理员可以在配置认证后的任何时候禁用它。
  • 第一步是关于将 Rancher 添加为授权域,我们已经在本节中讨论过了。
  • 第二步提供您完成本节后下载的 OAuth 凭证 JSON ,您可以上传文件或将内容粘贴到OAuth 凭证字段。
  • 第三步提供在本节的末尾下载的服务帐户凭据 JSON。仅当您成功按照将服务帐户密钥注册为 OAuth 客户端步骤将其注册为 G Suite OAuth 客户端时,凭证才能正常工作。
  1. 单击使用 Googler 认证
  2. 点击保存

结果: Google 认证配置成功。