配置 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 screenOAuth Consent Screen

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

  4. 前往 Scopes for Google APIs,并确保已启用 emailprofileopenid

结果: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 originsAuthorized 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. 输入名称,并点击 CreateService account creation Step 1

    4. 不要在 Service account permissions 页面设置任何角色,然后单击 ContinueService 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 验证配置成功。