首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将Kubernetes用户链接到Unix用户

将Kubernetes用户链接到Unix用户
EN

Stack Overflow用户
提问于 2018-09-29 04:45:21
回答 1查看 132关注 0票数 2

我正在使用基于角色的访问控制来限制用户john只能在其名称空间test-namespace中工作和创建资源。

下面是我所做的:

1)为用户生成证书并创建set-context

代码语言:javascript
复制
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中的部署。

代码语言:javascript
复制
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。

代码语言:javascript
复制
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用户。

类似于:

代码语言:javascript
复制
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中看到或做任何事情。

代码语言:javascript
复制
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

任何建议都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-29 06:59:07

您可以通过用户主目录上的~/.kube/config文件来管理它。假设在/home/john/.kube/config中,你会有类似这样的东西:

代码语言:javascript
复制
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权限。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52562445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档