一、kubectl proxy

  1. # kubectl proxy --port=8080
  2. # curl http://localhost:8080/api/v1/
  3. # curl http://localhost:8080/apis/apps/v1/namespaces/kube-system/deployments/

二、serviceaccount资源

  • 创建自定义serviceaccount:用于pod与api通信的认证账号
  1. # kubectl create serviceaccount admin
  2. serviceaccount/admin created
  3. # kubectl create serviceaccount dongfei -o yaml --dry-run #生成配置清单
  4. apiVersion: v1
  5. kind: ServiceAccount
  6. metadata:
  7. creationTimestamp: null
  8. name: dongfei
  9. # kubectl get sa #sa,serviceaccount的简写
  10. NAME SECRETS AGE
  11. admin 1 5s
  12. default 1 77d
  13. # kubectl describe sa admin
  14. Name: admin
  15. Namespace: default
  16. Labels: <none>
  17. Annotations: <none>
  18. Image pull secrets: <none>
  19. Mountable secrets: admin-token-76kb7
  20. Tokens: admin-token-76kb7
  21. Events: <none>
  22. # kubectl get secret
  23. NAME TYPE DATA AGE
  24. admin-token-76kb7 kubernetes.io/service-account-token 3 36s
  25. default-token-4q4c9 kubernetes.io/service-account-token 3 77d
  26. mysql-root-password Opaque 1 7d21h
  • 应用自定义serviceaccount
  1. apiVersion: v1
  2. kind: Pod
  3. metadata:
  4. name: pod-sa-demo
  5. namespace: default
  6. labels:
  7. app: myapp
  8. spec:
  9. containers:
  10. - name: myapp
  11. image: ikubernetes/myapp:v1
  12. ports:
  13. - name: http
  14. containerPort: 80
  15. serviceAccountName: admin
  1. # kubectl describe pods pod-sa-demo |grep -A4 Volumes
  2. Volumes:
  3. admin-token-76kb7:
  4. Type: Secret (a volume populated by a Secret)
  5. SecretName: admin-token-76kb7
  6. Optional: false

三、RBAC 基于角色的访问控制

1、apiserver客户端配置及创建UserAccount用户

  • apiserver客户端配置文件
  1. # kubectl config view
  2. apiVersion: v1
  3. clusters:
  4. - cluster:
  5. certificate-authority-data: DATA+OMITTED
  6. server: https://192.168.100.51:6443
  7. name: kubernetes
  8. contexts:
  9. - context:
  10. cluster: kubernetes
  11. user: kubernetes-admin
  12. name: kubernetes-admin@kubernetes
  13. current-context: kubernetes-admin@kubernetes
  14. kind: Config
  15. preferences: {}
  16. users:
  17. - name: kubernetes-admin
  18. user:
  19. client-certificate-data: REDACTED
  20. client-key-data: REDACTED
  • 制作连接apiserver的证书,创建用户
  1. # cd /etc/kubernetes/pki/
  2. # (umask 077;openssl genrsa -out dongfei.key 2048)
  3. # openssl req -new -key dongfei.key -out dongfei.csr -subj "/CN=dongfei"
  4. # openssl x509 -req -in dongfei.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out dongfei.crt -days 365
  5. # openssl x509 -in dongfei.crt -text -noout #查看
  6. # kubectl config set-credentials dongfei --client-certificate=./dongfei.crt --client-key=./dongfei.key --embed-certs=true
  7. # kubectl config set-context dongfei@kubernetes --cluster=kubernetes --user=dongfei
  • 切换上下文
  1. # kubectl config use-context dongfei@kubernetes
  2. # kubectl config view
  3. # kubectl config use-context kubernetes-admin@kubernetes
  • 创建kubectl配置文件
  1. # kubectl config set-cluster mycluster --kubeconfig=/tmp/test.conf --server="https://192.168.100.51:6443" --certificate-authority=/etc/kubernetes/pki/ca.crt --embed-certs=true
  2. # kubectl config view --kubeconfig=/tmp/test.conf

2、Role角色

  • 创建Role
  1. # kubectl create role pods-reader --verb=get,list,watch --resource=pods --dry-run -o yaml > role-demo.yaml
  2. # vim role-demo.yaml
  3. apiVersion: rbac.authorization.k8s.io/v1
  4. kind: Role
  5. metadata:
  6. creationTimestamp: null
  7. name: pods-reader
  8. namespace: default
  9. rules:
  10. - apiGroups:
  11. - ""
  12. resources:
  13. - pods
  14. verbs:
  15. - get
  16. - list
  17. - watch
  18. # kubectl apply -f role-demo.yaml
  19. # kubectl get role
  20. # kubectl describe role pods-reader

3、rolebinding

  • 创建user和role的绑定关系
  1. # kubectl create rolebinding dongfei-read-pods --role=pods-reader --user=dongfei -o yaml --dry-run > rolebinding-demo.yaml
  2. # vim rolebinding-demo.yaml
  3. apiVersion: rbac.authorization.k8s.io/v1
  4. kind: RoleBinding
  5. metadata:
  6. creationTimestamp: null
  7. name: dongfei-read-pods
  8. roleRef:
  9. apiGroup: rbac.authorization.k8s.io
  10. kind: Role
  11. name: pods-reader
  12. subjects:
  13. - apiGroup: rbac.authorization.k8s.io
  14. kind: User
  15. name: dongfei
  16. # kubectl apply -f rolebinding-demo.yaml
  17. # kubectl get rolebinding
  18. # kubectl describe rolebinding dongfei-read-pods
  • 测试账号权限
  1. # kubectl config use-context dongfei@kubernetes
  2. # kubectl get pods #默认名称空间有权限
  3. # kubectl get pods -n kube-system #无权限
  • 删除rolebinding
  1. # kubectl delete rolebinding dongfei-read-pods

4、clusterrole

  • 创建clusterrole
  1. # kubectl create clusterrole cluster-reader --verb=get,list,watch --resource=pods -o yaml --dry-run -o yaml > clusterrole-demo.yaml
  2. # vim clusterrole-demo.yaml
  3. apiVersion: rbac.authorization.k8s.io/v1
  4. kind: ClusterRole
  5. metadata:
  6. creationTimestamp: null
  7. name: cluster-reader
  8. rules:
  9. - apiGroups:
  10. - ""
  11. resources:
  12. - pods
  13. verbs:
  14. - get
  15. - list
  16. - watch
  17. # kubectl apply -f clusterrole-demo.yaml

5、clusterrolebinding

  • user-绑定-clusterrole
  1. # kubectl create clusterrolebinding dongfei-read-all-pods --clusterrole=cluster-reader --user=dongfei --dry-run -o yaml > clusterrolebinding-demo.yaml
  2. # kubectl apply -f clusterrolebinding-demo.yaml
  3. # kubectl describe clusterrolebinding dongfei-read-all-pods
  • 测试
  1. # kubectl config use-context dongfei@kubernetes
  2. # kubectl get pods
  3. # kubectl get pods -n kube-system #可以访问集群所以的名称空间

6、role绑定至clusterrole

  • role将会降权为所在名称空间内
  1. # kubectl create rolebinding dongfei-read-pods --clusterrole=cluster-reader --user=dongfei

10、kubernetes之RBAC认证的更多相关文章

  1. kubernetes对接第三方认证

    kubernetes对接第三方认证 kubernetes离线安装包地址 概述 本文介绍如何使用github账户去关联自己kubernetes账户.达到如下效果: 使用github用户email作为ku ...

  2. elasticsearch基于RBAC认证和集群之间的TLS通讯

    elasticsearch基于RBAC认证和集群之间的TLS通讯 一.背景 二.需要解决的问题 三.给es增加用户名和密码访问 1.修改config/elasticsearch.yml 2.访问es集 ...

  3. Kubernetes之RBAC

    API Server的授权管理 API Server 内部通过用户认证后,然后进入授权流程.对合法用户进行授权并且随后在用户访问时进行鉴权,是权限管理的重要环节.API Server 目前支持一下几种 ...

  4. Kubernetes 基于 RBAC 的授权(十六)

    目录 一.RBAC介绍 1.1.角色和集群角色 1.2.RoleBinding 和 ClusterRoleBinding 1.3.资源 1.4.主体 二.命令行工具 2.1.kubectl creat ...

  5. K8S从入门到放弃系列-(10)kubernetes集群之kube-proxy部署

    摘要: kube-proxy的作用主要是负责service的实现,具体来说,就是实现了内部从pod到service和外部的从node port向service的访问 新版本目前 kube-proxy ...

  6. 16.kubernetes的RBAC

    role 分为clsterrole和role 我们从普通的role 开始理解起 [root@master ~]# kubectl create role pod-read --verb=get,lis ...

  7. Kubernetes Kubelet安全认证连接Apiserver

    Kubelet使用安全认证连接Apiserver,可以用Token或证书连接.配置步骤如下. 1,生成Token命令 head -c /dev/urandom | od -An -t x | tr - ...

  8. Kubernetes的RBAC是啥

    RBAC: Role-Based Access Control,基于角色的权限控制,有以下三种角色 Role:角色,它其实是一组规则,定义了一组API对象的操作权限 Subject:被作用者,可以是人 ...

  9. Kubernetes/K8s CKA认证全套实训视频教程下载

    地址: 链接:https://pan.baidu.com/s/1bwEUZTCVzqM3mGjrlISbcg 提取码:r1kx 目录: 目录: │ 1-1.kubernetes理论教程 - 云原生技术 ...

随机推荐

  1. 雷赛DMC2410_入门篇

    研究了一下雷赛的运动控制卡,还是花了一点时间,总算把步进电机转起来了,现在把整个过程分享给大家. 雷赛板卡型号很多,这里选择的是DMC2410,主要在于他的性价比,其他型号应该也差不多同样的原理,套装 ...

  2. Mysql学习(四)之通过homebrew安装mysql后,为什么在系统偏好设置里没有mysql

    原因 用brew install packagename是用来安装命令行工具的,一般不可能影响到图形界面. mysql官方文档是通过dmg文件安装的: The MySQL Installation P ...

  3. 09 Python两种创建类的方式

    第一种比较普遍的方式: class Work(): def __init__(self,name): self.name = name w = Work('well woker') 这样就简单创建了一 ...

  4. 【转载】Linux GCC常用命令

    作者:ggjucheng 出处:https://www.cnblogs.com/ggjucheng/archive/2011/12/14/2287738.html 1简介 2简单编译 2.1预处理 2 ...

  5. 数据库 (二):MySQL密码策略与用户管理

    为了加强安全性,MySQL5.7为root用户随机生成了一个密码可通过# grep "password" /var/log/mysqld.log 命令获取MySQL的临时密码用该密 ...

  6. 初识linux内核漏洞利用

    0x00 简介 之前只接触过应用层的漏洞利用, 这次第一次接触到内核层次的,小结一下. 0x01 概况 这次接触到的,是吾爱破解挑战赛里的一个题,给了一个有问题的驱动程序,要求在ubuntu 14.0 ...

  7. 第06课:GDB 常用命令详解(下)

    本课的核心内容: disassemble 命令 set args 和 show args 命令 tbreak 命令 watch 命令 display 命令 6.1 disassemble 命令 当进行 ...

  8. 读取web.xml中设置的参数

    以获取Filer元素里设置的参数为例 先在web.xml文件中配置如下 <?xml version="1.0" encoding="UTF-8"?> ...

  9. Acwing-271-杨老师的照相排列(DP)

    链接: https://www.acwing.com/problem/content/273/ 题意: 杨老师希望给他的班级拍一张合照. 学生们将站成左端对齐的多排,靠后的排站的人数不能少于靠前的排. ...

  10. javascript中constructor指向问题

    首先用一个例子指出来constructor存在形式. function Fruit(){ } var f=new Fruit(); console.log(f.constructor);//打印出Fr ...