我正在使用基于角色的访问控制来限制用户john
只能在其名称空间test-namespace
中工作和创建资源。
下面是我所做的:
1)为用户生成证书并创建set-context
kubectl config set-credentials john --client-certificate=/home/john/.certs/employee.crt --client-key=/home/john/.certs/employee.key
kubectl config set-context john-context --cluster=minikube --namespace=test-namespace --user=john
2)创建一个角色来管理命名空间test-namespace
中的部署。
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
namespace: test-namespace
name: deployment-authority
rules:
- apiGroups: ["", "extensions", "apps"]
resources: ["deployments", "replicasets", "pods"]
verbs: ["get", "create", "update", "patch", "delete"]
3)创建RoleBinding。
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: deployment-authority-binding-john
namespace: test-namespace
subjects:
- kind: User
name: john
apiGroup: ""
roleRef:
kind: Role
name: deployment-authority
apiGroup: ""
现在,以上所有操作都可以正常工作,我可以运行命令kubectl --context=john-context run --image busybox busybox
而不会出现任何问题。
现在,我的Kubernetes Master节点上还有一个Unix用户,其用户名是john。我的目标是确保当用户登录时,他(约翰)可以在他的上下文john-context
中运行允许他执行的命令。我无法将UNIX用户链接到Kubernetes用户。
类似于:
john@kubernet:/$ id
uid=1002(john) gid=1002(john) groups=1002(john)
john@kubernet:/$ kubectl get po -n test-namespace
NAME READY STATUS RESTARTS AGE
grafana-67c6585fbd-tlr4n 1/1 Running 2 23h
但是如果我切换到我的Unix机器上的另一个用户,他/她应该不能在名称空间test-namespace
中看到或做任何事情。
su - tom
tom@kubernet:/$ id
uid=1004(tom) gid=1004(tom) groups=1004(tom)
john@kubernet:/$ kubectl get po -n test-namespace
You are not allowed to view resources in this namespace
任何建议都将不胜感激。
发布于 2018-09-29 06:59:07
您可以通过用户主目录上的~/.kube/config
文件来管理它。假设在/home/john/.kube/config
中,你会有类似这样的东西:
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0xxxxxxxxo=
server: https://172.1.1.1:6443
name: kubernetes
contexts:
- context:
cluster: kubernetes
namespace: default
user: john
name: john@kubernetes
current-context: john@kubernetes
kind: Config
preferences: {}
users:
- name: john
user:
client-certificate-data: LS0txxxxo=
client-key-data: LS0xxxxx==
然后,您需要确保该文件只具有600
权限。
https://stackoverflow.com/questions/52562445
复制相似问题