首页 > 解决方案 > 如何添加或引入 Kubernetes 普通用户?

问题描述

我在官方文档上看到了它,但我不知道如何在add or introduce外部normal userkubernetes 集群。我在 kubernetes 中搜索了很多关于普通用户的信息,但没有任何用处。

我知道它与 serviceaccount 不同,我们无法通过 Kubernetes API 添加普通用户。

关于如何向 Kubernetes 集群添加或引入普通用户以及普通用户的用途有什么想法吗?

标签: kubernetes

解决方案


请参阅Etienne Dilocker的“比较 Kubernetes 身份验证方法

一个可能的解决方案是x509 客户端证书

优点

操作 Kubernetes 集群和颁发用户证书的解耦比基本身份验证安全得多

缺点

x509 证书的生命周期往往很长(数月或数年)。因此,撤销用户访问几乎是不可能的。如果我们选择颁发短期证书,则用户体验会下降,因为替换证书需要付出一些努力。

但 Etienne 推荐OpenID

如果我们可以拥有由第三方颁发的短期证书或令牌,那不是很好,因此与 K8s 集群的运营商没有耦合。
同时,所有这些都应该与现有的企业基础设施集成,例如 LDAP 或 Active Directory

这就是OpenID Connect (OIDC)的用武之地。

在我的示例中,我使用Keycloak作为令牌发行者。Keycloak 既是开箱即用的令牌发行者和身份提供者,也很容易使用 Docker 启动。


将 RBAC 与这种身份验证一起使用并不简单,但可能。
请参阅“问题 118;安全、身份验证和登录

在 1.3 中,我在仪表板中加入了 SSO,与反向代理和 OIDC/OAuth2 配合得很好。我不会创建一个明确的登录屏幕,背负 RBAC 模型和已经支持的 Auth 模型。不过,如果有一些东西能说明登录用户是谁,那就太好了。

请注意,从 1.3 开始,可能会有更简单的解决方案。

同一线程包括:

我有一个原型图像可以做我认为你正在寻找的东西:https ://hub.docker.com/r/mlbiam/openunison-k8s-dashboard/

我删除了用户配置的所有要求,并将其简化为:

  • 反向代理
  • 与 openid connect 集成
  • 显示用户的访问令牌
  • 简单的链接页面

包括角色绑定

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1alpha1
metadata:
  name: admin-role
rules:
- apiGroups: ["*"]
  resources: ["*"]
  verbs: ["*"]
  nonResourceURLs: ["*"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1alpha1
metadata:
  name: admin-binding
subjects:
- kind: Group
  name: admin
- kind: ServiceAccount
  name: default
  namespace: kube-system
- kind: ServiceAccount
  name: openunison
  namespace: default
roleRef:
  kind: ClusterRole
  name: admin-role

同样,这是特定于仪表板 RBAC 访问的,并且已经通过PR 2206 添加登录机制(到仪表板)进行了改进。

它仍然可以为您提供一些线索,以便将普通用户链接到 kubernetes RBAC。


推荐阅读