我有一个问题,我可以通过OIDC登录到仪表板上,但是oidc组信息没有被正确地映射,并且我无法访问相应的资源。
基本设置
Configurations
我已经用这些参数配置了K8s apiserver。
kube-apiserver.yaml
- --oidc-issuer-url=https://test.test.com/auth/realms/Test
- --oidc-client-id=test
- --oidc-username-claim=preferred_username
- --oidc-username-prefix="oidc:"
- --oidc-groups-claim=groups
- --oidc-groups-prefix="oidc:"ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: "test-cluster-admin"
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: Group
name: "Test"我使用了以下的扬声器参数
Louketo代理
/usr/bin/louketo-proxy --discovery-url=$OIDC_DISCOVERY_URL --client-id=$OIDC_CLIENT_ID --client-secret=$OIDC_CLIENT_SECRET -listen=$OIDC_LISTEN_URL --encryption-key=$OIDC_ENCRYPTION_KEY --redirection-url=$OIDC_REDIRECTION_KEY --enable-refresh-tokens=true --upstream-url=$OIDC_UPSTREAM_URL --enable-metrics我在仪表板中得到以下错误消息。K8s错误
replicasets.apps is forbidden: User "\"oidc:\"<user_name>" cannot list resource "replicasets" in API group "apps" in the namespace "default"我希望你能帮我解决这个问题,我已经试过网上的大部分手册,但还没有找到解决方案。
PS:我已经在Keycloak服务器中完成了相应的组映射,并验证了组条目是否已被传输。
发布于 2020-11-28 23:44:37
如果您正面临与我相同的挑战,并且希望将密钥披风集成到您的K8s集群中,共享仪表板并将其连接到密钥披风,您可以在下面找到我的配置。在我的集群中,我使用Louketo代理作为Kubernetes和Keycloak之间的接口。此post中不包括相应的部署配置。
密钥披风
我想从密钥披风的配置开始。在第一步中,我创建了一个具有以下设置的相应客户端。

在此之后,我创建了两个组成员和受众(由扬声器代理所需)映射器。

映射器的确切设置可以从这两幅图像中提取。
组成员映射

受众映射

Kubernetes
在第二步中,我必须更新api服务器清单,并在Kubernetes集群中创建RoleBinding和ClusterRoleBinding。
(default path: /etc/kubernetes/manifests/kube-apiserver.yaml) Api服务器清单
- --oidc-issuer-url=https://test.test.com/auth/realms/Test
- --oidc-client-id=test
- --oidc-username-claim=preferred_username
- --oidc-username-prefix="oidc:"
- --oidc-groups-claim=groups
- --oidc-groups-prefix="oidc:"RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: "test"
namespace: "kubernetes-dashboard"
subjects:
- kind: User
name: "\"oidc:\"Test"
namespace: "kube-system"
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-adminClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: "test"
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: Group
name: "\"oidc:\"Test"@Community希望我能帮助您进行这种配置。如果你有什么问题,可以问我。
发布于 2020-11-09 11:09:53
这是一个社区wiki的答案,目的是从Kubernetes的角度来处理这个问题。任何熟悉密钥披风组/角色映射解决方案的人都可以随意编辑它。
您看到的错误意味着OIDC的服务帐户没有在默认名称空间中列出replicasets的适当权限。最简单的方法是从零开始设置ServiceAccount、ClusterRole和ClusterRoleBinding,并确保它具有适当的权限。例如,您可以创建具有权限“admin”通过执行的通过执行。
kubectl create clusterrolebinding OIDCrolebinding - -clusterrole=admin - - group=system:serviceaccounts:OIDC相同的可以做用于ClusterRole
kubectl create clusterrole OIDC --verb=get,list,watch --resource=replicasets --namespace=default在这个场景中如何使用kubectl create的更多示例可以找到这里。
这里你可以找到一个关于RBAC授权的完整的官方指南。
编辑:
此外,还请检查"\"oidc:\"<user_name>"的"\"oidc:\"<user_name>"是否位于"default"命名空间中。
https://stackoverflow.com/questions/64677173
复制相似问题