配置 Google OAuth

如果你的组织使用 G Suite 进行用户身份验证,你可以通过配置 Rancher 来允许你的用户使用 G Suite 凭证登录。

只有 G Suite 域的管理员才能访问 Admin 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 页面应如下图所示:

    Enable Admin APIs

在 Rancher 中为 OAuth 设置 G Suite

在 Rancher 中设置 Google OAuth 之前,你需要登录到你的 G Suite 账号并完成以下设置:

1. 将 Rancher 添加为授权域

  1. 点击此处前往你的 Google 域的凭证页面。

  2. 选择你的项目,然后点击 OAuth consent screen。

    OAuth Consent Screen
  3. 前往 Authorized Domains,并在列表中输入你的 Rancher Server URL 的顶级私有域。顶级私有域是最右边的超级域。例如,www.foo.co.uk 是 foo.co.uk 的顶级私有域。有关顶级私有域的更多信息,请参见此处。

  4. 前往 Scopes for Google APIs,并确保已启用 email,profile 和 openid。

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

2. 为 Rancher Server 生成 OAuth2 凭证

  1. 前往 Google API 控制台,选择你的项目并前往 credentials页面。

    Credentials
  2. 在 Create Credentials 下拉框中,选择 OAuth client ID。

  3. 点击 Web application。

  4. 输入一个名称。

  5. 填写 Authorized JavaScript origins 和 Authorized redirect URIs。请注意,设置 Google OAuth 的 Rancher UI 页面(Security  Authentication  Google 下的全局视图)为你提供了这一步要输入的准确链接。

    • 在 Authorized JavaScript origins 处,输入你的 Rancher Server URL。

    • 在 Authorized redirect URIs 处,输入你的 Rancher Server 的 URL 并附加路径 verify-auth。例如,如果你的 URI 是 https://rancherServer,你需要输入 https://rancherServer/verify-auth。

  6. 点击 Create。

  7. 创建凭证之后,你将看到一个页面,其中显示你的凭证列表。选择刚刚创建的凭证,然后在最右边的行中单击 Download JSON。保存该文件,以便向 Rancher 提供这些凭证。

结果:你已成功创建 OAuth 凭证。

3. 创建 ServiceAccount 凭证

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

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

为了解决这个问题,G Suite 建议创建一个 ServiceAccount,并将你的 G Suite 域的权限委托给该 ServiceAccount。

本节介绍如何:

  • 创建一个 ServiceAccount

  • 为 ServiceAccount 创建一个密钥并下载 JSON 格式的凭证

    1. 点击此处并选择要生成 OAuth 凭证的项目。

    2. 点击 Create Service Account。

    3. 输入名称,并点击 Create。

      Service account creation Step 1
    4. 不要在 Service account permissions 页面设置任何角色,然后单击 Continue。

      Service account creation Step 2
    5. 点击 Create Key 并选择 JSON 选项。下载并保存 JSON 文件,以便你可以将其作为 ServiceAccount 凭证提供给 Rancher。

      Service account creation Step 3

结果:你的 ServiceAccount 已创建成功。

4. 将 ServiceAccount 密钥注册成 OAuth Client

你需要为在上一步中创建的 ServiceAccount 授予一些权限。Rancher 仅要求为用户和组授予只读权限。

使用 ServiceAccount 密钥的唯一 ID,按照以下步骤将其注册为 Oauth Client:

  1. 获取你刚刚创建的密钥的唯一 ID。如果它没有显示在你创建的键旁边的键列表中,你需要先启用 Unique ID 列。点击 Unique ID 然后点击 OK。这将向 ServiceAccount 密钥列表中添加 Unique ID 列。保存你创建的 ServiceAccount 对应的唯一 ID。注意:这是一个数字 Key,不要与字母数字字段 Key ID 混淆。

    Service account Unique ID
  2. 前往 Domain-wide Delegation 页面。

  3. 在 Client Name 字段中添加上一步中获得的唯一 ID。

  4. 在 One or More API Scopes 字段中,添加以下作用域:

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

结果:ServiceAccount 在你的 G Suite 账号中已注册为 OAuth 客户端。

在 Rancher 中配置 Google OAuth

  1. 使用分配了 administrator 角色的本地用户登录到 Rancher。这个用户也称为本地主体。

  2. 在左上角,单击 ☰ > 用户 & 认证。

  3. 在左侧导航栏,单击认证。

  4. 单击 Google。UI 中的说明介绍了使用 Google OAuth 设置身份验证的步骤。

    1. 管理员邮箱:提供 GSuite 设置中的管理员账户的电子邮箱。为了查找用户和组,Google API 需要管理员的电子邮件和 ServiceAccount 密钥。

    2. 域名:提供配置了 G Suite 的域。请提供准确的域,而不是别名。

    3. 属于多个用户组的用户:选中此框以启用嵌套组成员关系。Rancher 管理员可以在配置认证后的任何时候禁用它。

  5. 点击使用 Google 认证。

  6. 点击启用。

结果:Google 验证配置成功。