我在offical doc上看到了它,但我不知道如何add or introduce
normal user
外部kubernetes群集。我在kubernetes中搜索了很多关于普通用户的信息但没什么用处。
我知道它与serviceaccount不同,我们无法通过Kubernetes API添加普通用户。
有关如何向kubernetes群集添加或引入普通用户以及普通用户是什么的任何想法?
答案 0 :(得分:2)
请Comparing Kubernetes Authentication Methods
查看“Etienne Dilocker”可能的解决方案是x509 client certs:
优点
操作Kubernetes集群并发布用户证书是分离的 比基本身份验证更安全
缺点
x509证书往往具有很长的使用寿命(数月或数年)。因此,撤销用户访问几乎是不可能的。如果我们选择发布短期证书,则用户体验会下降,因为替换证书需要付出一些努力。
但Etienne建议OpenID:
如果我们可以拥有由第三方发布的短期证书或令牌,那就不是很好了,所以没有与K8s集群的运营商联系。 同时所有这些都应该与现有的企业基础架构集成,例如LDAP或Active Directory 。
这是OpenID Connect (OIDC)的用武之地。
对于我的示例,我使用Keycloak作为令牌发行者。 Keycloak既是令牌发行者又是开箱即用的身份提供者,使用Docker很容易实现。
使用RBAC进行这种认证不是直截了当的,但可能 请参阅“issue 118; Security, auth and logging in”
使用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 Add log in mechanism (to dashboard)进行了改进。
它仍然可以为您提供一些线索,以便将常规用户链接到kubernetes RBAC。