对接 Google OAuth
自 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 页面应如下图所示:
在 Rancher 中为 OAuth 设置 G Suite
在 Rancher 系统中设置 Google OAuth 之前,您需要登录到您的 G Suite 帐户,完成以下设置:
添加 Rancher 为授权域
- 单击这里转到您的 Google 域的凭证页面。
- 选择您的项目并单击OAuth consent screen.
- 进入授权域,并在列表中输入您的 Rancher Server URL 的顶级私有域。顶级私有域是最右边的超级域。例如,
www.foo.co.uk
是foo.co.uk
的顶级私有域。有关顶级域的更多信息,请参考本文。 - 进入Scopes for Google APIs,确保email, profile和openid被启用。
结果: Rancher 已被添加为 Admin SDK API 的授权域。
创建 OAuth2 凭证
- 转到 Google API 控制台,选择您的项目,并转到credentials页面。
- 在Create Credentials下拉菜单中,选择OAuth client ID。
- 单击Web 应用程序。
- 输入一个名称。
- 填写授权的 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
。
- 单击创建。
- 创建凭据之后,您将看到一个页面,其中显示您的凭据列表。选择刚刚创建的凭据,然后在最右边的行中单击下载 JSON保存文件,以便您可以在 Rancher 中设置这些凭据。
结果: 您的 OAuth 凭据已成功创建。
创建服务帐户凭证
由于 Google 管理 SDK 只对管理员可用,普通用户不能使用它来检索其他用户或其组的配置文件。普通用户甚至不能检索他们自己的组。
由于 Rancher 提供基于组的成员访问,我们要求用户能够获得自己的组,并在需要时查找其他用户和组。
作为获得此功能的一种变通方法,G Suite 建议创建一个服务帐户,并将您的 G Suite 域的权限委托给该服务帐户。
本节介绍如何:
- 创建一个服务帐户
- 为服务帐户创建一个密钥并下载 JSON 格式的凭据
- 单击此处并选择生成 OAuth 凭据的项目。
- 单击Create Service Account。
- 输入名称并单击Create。
- 不要在Service account permissions页面设置任何角色,单击Continue。
- 单击Create Key并选择 JSON 选项。下载 JSON 文件并保存它,以便您可以将其作为服务帐户凭据提供给 Rancher。
结果: 您的服务账户创建成功.
将服务账户密钥注册为 OAuth 客户端
您需要为在最后一步中创建的服务帐户授予一些权限。Rancher 仅要求为用户和组授予只读权限。
使用服务帐户密钥的唯一 ID,按照以下步骤将其注册为 Oauth 客户端:
- 获取您刚刚创建的密钥的唯一 ID。如果它没有显示在您创建的键旁边的键列表中,则必须启用它。要启用它,请单击Unique ID并单击OK这将向服务帐户密钥列表中添加Unique ID列。将列出的服务帐户保存为您创建的服务帐户。注意:这是一个数字 Key,不要与字母数字字段key ID混淆。
- 进入Manage OAuth Client Access页。
- 在Client Name字段中添加上一步中获得的唯一 ID。
在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
Copy
单击Authorize。
结果: 服务帐户在您的 G Suite 帐户中注册为 OAuth 客户端。
在 Rancher 中配置 Google OAuth
- 使用分配了administrator角色的本地用户登录到 Rancher。这个用户也称为本地主体。
- 在全局视图中,从主菜单中单击安全 > 认证。
- 单击Google ,UI 中的说明涵盖了使用 Google OAuth 设置身份验证的步骤。
- 管理电子邮件:从您的 GSuite 设置中提供管理员账户的电子邮件。为了执行用户和组查找,谷歌 api 需要管理员的电子邮件和服务帐户密钥。
- 域:提供配置了 G Suite 的域。请提供准确的域,而不是任何别名。
- 嵌套组成员关系:选中此框以启用嵌套组成员关系。Rancher 管理员可以在配置认证后的任何时候禁用它。
- 第一步是关于将 Rancher 添加为授权域,我们已经在本节中讨论过了。
- 第二步提供您完成本节后下载的 OAuth 凭证 JSON ,您可以上传文件或将内容粘贴到OAuth 凭证字段。
- 第三步提供在本节的末尾下载的服务帐户凭据 JSON。仅当您成功按照将服务帐户密钥注册为 OAuth 客户端步骤将其注册为 G Suite OAuth 客户端时,凭证才能正常工作。
- 单击使用 Googler 认证。
- 单击保存。
结果: Google 认证配置成功。