配置认证
Rancher 为 Kubernetes 添加的一个关键功能是集中式用户认证,这个特性允许用户使用一组凭证对任何 Kubernetes 集群进行身份认证。
这种集中式用户认证是通过 Rancher 的认证代理完成的,该代理与 Rancher 的其余部分一并安装,此代理对用户进行认证并通过一个 Service Acount 将请求转发到 Kubernetes 集群中。
用来启用外部认证的账户将被授予管理员权限。如果你使用一个测试账号或非管理员账号,该账号仍然会被授予管理员级别权限。请查看外部认证配置和主体用户了解原因。 |
外部认证与本地认证
Rancher 认证代理可以与以下外部认证服务集成。
认证服务 |
---|
当然,Rancher 也提供本地认证.
在多数情况下,你应该使用外部认证服务而不是使用本地认证,因为外部认证服务可以集中式的对用户进行管理。但是在极少数情况下,例如外部认证服务不可用或正在维护时,你可能需要使用本地认证用户来管理 Rancher。
Rancher 授权范围
当你配置完 Rancher 使用外部认证服务后,你可以配置允许谁登录和使用 Rancher,包含如下的选项:
访问级别 | 描述 |
---|---|
允许任何有效用户 |
在认证服务中的任何用户都可以访问 Rancher。通常情况下不建议使用该设置! |
允许集群和项目成员,以及授权的用户和组织 |
认证服务中属于集群成员或项目成员的用户或组成员都可以登录 Rancher。此外添加在授权的用户和组织列表中的用户和组成员也可以登录到 Rancher。 |
仅限于授权的用户可以访问 |
仅有在授权用户和组织列表中的用户和组成员可以登录到 Rancher。 |
要在授权服务中为用户设置 Rancher 访问级别,请执行以下步骤:
-
在左上角,点击 ☰ > 用户 & 认证。
-
在左侧导航栏,点击 认证.
-
设置完外部认证详细信息后,使用 站点访问 选项配置用户权限范围,上面的表格说明了每个选项的访问级别。
-
可选:如果你选择 允许任何有效用户 以外的选项,你可以通过在出现的文本框中搜索用户,将用户添加到授权用户和组织的列表中。
-
点击 保存。
结果: Rancher 的访问配置被应用。
SAML 认证警告:
|
外部认证配置和用户主体
配置外部认证需要:
-
分配了管理员角色的本地用户,以下称为 本地主体。
-
可以使用外部认证服务进行认证的外部用户,以下简称为 外部主体。
外部认证的配置也会影响 Rancher 中主体用户的管理方式,具体地说,当用户账户启用了外部认证时,将授予其管理员级别的权限。这是因为本地主体和外部主体共享相同的用户 ID 和访问权限。
以下说明演示了这些效果:
-
作为本地主体登录到 Rancher 并完成外部身份验证的配置。
-
Rancher 将外部主体与本地主体相关联。这两个用户共享本地主体的用户 ID。
-
完成配置后,Rancher 将自动退出本地主体。
-
然后,Rancher 会自动将您登录外部主体。
-
因为外部主体和本地主体共享一个 ID,所以用户列中不会再单独显示一个另外的外部主体的对象。
-
外部主体和本地主体共享相同的访问权限。
重新配置先前设置的认证
如果需要重新配置或禁用后重新启用先前设置过的认证,请确保尝试这样做的用户以外部用户身份登录到 Rancher,而不是使用本地管理员登录。 |
禁用认证
当你禁用认证时,Rancher 会删除所有与之关联的资源,例如:
-
密文
-
绑定的全局角色。
-
绑定的集群角色。
-
绑定的项目角色。
-
与外部认证关联但从未以本地用户身份登录 Rancher 的外部用户。
由于此操作可能会导致许多资源丢失,因此你可能需要添加一些保护措施。若要确保禁用外部认证时不执行清理流程,需要为外部认证的配置添加特殊的注释。
例如,若要对 Azure AD 认证增加保护措施,你需要在 authconfig 对象上增加 azuread
注释:
kubectl annotate --overwrite authconfig azuread management.cattle.io/auth-provider-cleanup='user-locked'
禁用 Azure AD 认证后,Rancher 不会执行清理流程,直到你将该注解设置为 unlocked
。