我们已经使用 Azure (AKS) 创建了一个 Kubernetes 集群,它使用“使用 Kubernetes RBAC 的本地帐户“身份验证模式。据我们了解,从访问角度来看,这与 Azure 中的 K8s-Vanilla 非常接近。
根据我对 K8s 中基于证书的 RBAC 的理解(来自K8s 文档的“身份验证”部分),这些是创建一个新的经过认证的用户/服务帐户的适当步骤,该帐户具有查看(获取、列出、监视)K8s集群中大多数元素的权限:
viewers
创建一个名为内置Cluster Role 的ClusterRoleBindingview
,并添加(新)Groupviewers
作为主题,以便该viewers
组的成员都具有视图 Cluster Role:
kubectl create clusterrolebinding viewers --clusterrole=view --group=viewers
为用户创建 SSL 证书,其中包括组(
/O=viewers
):
openssl req -new -key user.key -out user.csr -subj "/CN=user/O=viewers)"
从中创建 YAML CSR 并使用以下方式将其应用于 K8s 集群
kubectl
:apiVersion: certificates.k8s.io/v1 kind: CertificateSigningRequest metadata: name: "user" spec: request: BASE64_CSR_CONTENT_HERE signerName: kubernetes.io/kube-apiserver-client usages: - client auth
同意:
kubectl certificate approve user
下载签名的 CRT:
kubectl get "csr/user" -o jsonpath='{.status.certificate}' | base64 -d > user.crt
现在可以使用该证书kubectl
连接 K8s 并请求所有允许的资源。
现在回答我的问题:我如何列出、修改或删除这样创建的用户?假设有人丢失了证书密钥文件 ( user.key
),如果不删除用户并完全重新创建,就无法再更新证书?或者作为管理员,如果您只想知道哪些用户存在?