kubernetes - 如何添加或引入 Kubernetes 普通用户?
问题描述
我在官方文档上看到了它,但我不知道如何在add or introduce
外部normal user
kubernetes 集群。我在 kubernetes 中搜索了很多关于普通用户的信息,但没有任何用处。
我知道它与 serviceaccount 不同,我们无法通过 Kubernetes API 添加普通用户。
关于如何向 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。
推荐阅读
- django - 为什么 Django 不更新图像字段
- firefox - Firefox 报告窗口句柄问题
- python - 从 SQL SERVER 查询到 PANDASQL DATEDIFF 分钟内返回
- asp.net - 用于 OpenIdConnect 的 MSAL?
- reactjs - 如何在 Switch Chakra UI 组件上切换颜色模式更改?
- javascript - Javascript - 使用 s57(.000 文件)显示地图
- html - 在这种情况下如何从最后一个孩子中删除边距?
- javascript - 按钮调用的函数与其应该调用的函数完全不同
- xamarin - XA5104 找不到 Android NDK
- salesforce - Salesforce 站点的头部标记