10、kubernetes之RBAC认证
一、kubectl proxy
# kubectl proxy --port=8080
# curl http://localhost:8080/api/v1/
# curl http://localhost:8080/apis/apps/v1/namespaces/kube-system/deployments/
二、serviceaccount资源
- 创建自定义serviceaccount:用于pod与api通信的认证账号
# kubectl create serviceaccount admin
serviceaccount/admin created
# kubectl create serviceaccount dongfei -o yaml --dry-run #生成配置清单
apiVersion: v1
kind: ServiceAccount
metadata:
creationTimestamp: null
name: dongfei
# kubectl get sa #sa,serviceaccount的简写
NAME SECRETS AGE
admin 1 5s
default 1 77d
# kubectl describe sa admin
Name: admin
Namespace: default
Labels: <none>
Annotations: <none>
Image pull secrets: <none>
Mountable secrets: admin-token-76kb7
Tokens: admin-token-76kb7
Events: <none>
# kubectl get secret
NAME TYPE DATA AGE
admin-token-76kb7 kubernetes.io/service-account-token 3 36s
default-token-4q4c9 kubernetes.io/service-account-token 3 77d
mysql-root-password Opaque 1 7d21h
- 应用自定义serviceaccount
apiVersion: v1
kind: Pod
metadata:
name: pod-sa-demo
namespace: default
labels:
app: myapp
spec:
containers:
- name: myapp
image: ikubernetes/myapp:v1
ports:
- name: http
containerPort: 80
serviceAccountName: admin
# kubectl describe pods pod-sa-demo |grep -A4 Volumes
Volumes:
admin-token-76kb7:
Type: Secret (a volume populated by a Secret)
SecretName: admin-token-76kb7
Optional: false
三、RBAC 基于角色的访问控制
1、apiserver客户端配置及创建UserAccount用户
- apiserver客户端配置文件
# kubectl config view
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: DATA+OMITTED
server: https://192.168.100.51:6443
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: kubernetes-admin
name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
user:
client-certificate-data: REDACTED
client-key-data: REDACTED
- 制作连接apiserver的证书,创建用户
# cd /etc/kubernetes/pki/
# (umask 077;openssl genrsa -out dongfei.key 2048)
# openssl req -new -key dongfei.key -out dongfei.csr -subj "/CN=dongfei"
# openssl x509 -req -in dongfei.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out dongfei.crt -days 365
# openssl x509 -in dongfei.crt -text -noout #查看
# kubectl config set-credentials dongfei --client-certificate=./dongfei.crt --client-key=./dongfei.key --embed-certs=true
# kubectl config set-context dongfei@kubernetes --cluster=kubernetes --user=dongfei
- 切换上下文
# kubectl config use-context dongfei@kubernetes
# kubectl config view
# kubectl config use-context kubernetes-admin@kubernetes
- 创建kubectl配置文件
# 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
# kubectl config view --kubeconfig=/tmp/test.conf
2、Role角色
- 创建Role
# kubectl create role pods-reader --verb=get,list,watch --resource=pods --dry-run -o yaml > role-demo.yaml
# vim role-demo.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
creationTimestamp: null
name: pods-reader
namespace: default
rules:
- apiGroups:
- ""
resources:
- pods
verbs:
- get
- list
- watch
# kubectl apply -f role-demo.yaml
# kubectl get role
# kubectl describe role pods-reader
3、rolebinding
- 创建user和role的绑定关系
# kubectl create rolebinding dongfei-read-pods --role=pods-reader --user=dongfei -o yaml --dry-run > rolebinding-demo.yaml
# vim rolebinding-demo.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
creationTimestamp: null
name: dongfei-read-pods
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: pods-reader
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: User
name: dongfei
# kubectl apply -f rolebinding-demo.yaml
# kubectl get rolebinding
# kubectl describe rolebinding dongfei-read-pods
- 测试账号权限
# kubectl config use-context dongfei@kubernetes
# kubectl get pods #默认名称空间有权限
# kubectl get pods -n kube-system #无权限
- 删除rolebinding
# kubectl delete rolebinding dongfei-read-pods
4、clusterrole
- 创建clusterrole
# kubectl create clusterrole cluster-reader --verb=get,list,watch --resource=pods -o yaml --dry-run -o yaml > clusterrole-demo.yaml
# vim clusterrole-demo.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
creationTimestamp: null
name: cluster-reader
rules:
- apiGroups:
- ""
resources:
- pods
verbs:
- get
- list
- watch
# kubectl apply -f clusterrole-demo.yaml
5、clusterrolebinding
- user-绑定-clusterrole
# kubectl create clusterrolebinding dongfei-read-all-pods --clusterrole=cluster-reader --user=dongfei --dry-run -o yaml > clusterrolebinding-demo.yaml
# kubectl apply -f clusterrolebinding-demo.yaml
# kubectl describe clusterrolebinding dongfei-read-all-pods
- 测试
# kubectl config use-context dongfei@kubernetes
# kubectl get pods
# kubectl get pods -n kube-system #可以访问集群所以的名称空间
6、role绑定至clusterrole
- role将会降权为所在名称空间内
# kubectl create rolebinding dongfei-read-pods --clusterrole=cluster-reader --user=dongfei
10、kubernetes之RBAC认证的更多相关文章
- kubernetes对接第三方认证
kubernetes对接第三方认证 kubernetes离线安装包地址 概述 本文介绍如何使用github账户去关联自己kubernetes账户.达到如下效果: 使用github用户email作为ku ...
- elasticsearch基于RBAC认证和集群之间的TLS通讯
elasticsearch基于RBAC认证和集群之间的TLS通讯 一.背景 二.需要解决的问题 三.给es增加用户名和密码访问 1.修改config/elasticsearch.yml 2.访问es集 ...
- Kubernetes之RBAC
API Server的授权管理 API Server 内部通过用户认证后,然后进入授权流程.对合法用户进行授权并且随后在用户访问时进行鉴权,是权限管理的重要环节.API Server 目前支持一下几种 ...
- Kubernetes 基于 RBAC 的授权(十六)
目录 一.RBAC介绍 1.1.角色和集群角色 1.2.RoleBinding 和 ClusterRoleBinding 1.3.资源 1.4.主体 二.命令行工具 2.1.kubectl creat ...
- K8S从入门到放弃系列-(10)kubernetes集群之kube-proxy部署
摘要: kube-proxy的作用主要是负责service的实现,具体来说,就是实现了内部从pod到service和外部的从node port向service的访问 新版本目前 kube-proxy ...
- 16.kubernetes的RBAC
role 分为clsterrole和role 我们从普通的role 开始理解起 [root@master ~]# kubectl create role pod-read --verb=get,lis ...
- Kubernetes Kubelet安全认证连接Apiserver
Kubelet使用安全认证连接Apiserver,可以用Token或证书连接.配置步骤如下. 1,生成Token命令 head -c /dev/urandom | od -An -t x | tr - ...
- Kubernetes的RBAC是啥
RBAC: Role-Based Access Control,基于角色的权限控制,有以下三种角色 Role:角色,它其实是一组规则,定义了一组API对象的操作权限 Subject:被作用者,可以是人 ...
- Kubernetes/K8s CKA认证全套实训视频教程下载
地址: 链接:https://pan.baidu.com/s/1bwEUZTCVzqM3mGjrlISbcg 提取码:r1kx 目录: 目录: │ 1-1.kubernetes理论教程 - 云原生技术 ...
随机推荐
- 雷赛DMC2410_入门篇
研究了一下雷赛的运动控制卡,还是花了一点时间,总算把步进电机转起来了,现在把整个过程分享给大家. 雷赛板卡型号很多,这里选择的是DMC2410,主要在于他的性价比,其他型号应该也差不多同样的原理,套装 ...
- Mysql学习(四)之通过homebrew安装mysql后,为什么在系统偏好设置里没有mysql
原因 用brew install packagename是用来安装命令行工具的,一般不可能影响到图形界面. mysql官方文档是通过dmg文件安装的: The MySQL Installation P ...
- 09 Python两种创建类的方式
第一种比较普遍的方式: class Work(): def __init__(self,name): self.name = name w = Work('well woker') 这样就简单创建了一 ...
- 【转载】Linux GCC常用命令
作者:ggjucheng 出处:https://www.cnblogs.com/ggjucheng/archive/2011/12/14/2287738.html 1简介 2简单编译 2.1预处理 2 ...
- 数据库 (二):MySQL密码策略与用户管理
为了加强安全性,MySQL5.7为root用户随机生成了一个密码可通过# grep "password" /var/log/mysqld.log 命令获取MySQL的临时密码用该密 ...
- 初识linux内核漏洞利用
0x00 简介 之前只接触过应用层的漏洞利用, 这次第一次接触到内核层次的,小结一下. 0x01 概况 这次接触到的,是吾爱破解挑战赛里的一个题,给了一个有问题的驱动程序,要求在ubuntu 14.0 ...
- 第06课:GDB 常用命令详解(下)
本课的核心内容: disassemble 命令 set args 和 show args 命令 tbreak 命令 watch 命令 display 命令 6.1 disassemble 命令 当进行 ...
- 读取web.xml中设置的参数
以获取Filer元素里设置的参数为例 先在web.xml文件中配置如下 <?xml version="1.0" encoding="UTF-8"?> ...
- Acwing-271-杨老师的照相排列(DP)
链接: https://www.acwing.com/problem/content/273/ 题意: 杨老师希望给他的班级拍一张合照. 学生们将站成左端对齐的多排,靠后的排站的人数不能少于靠前的排. ...
- javascript中constructor指向问题
首先用一个例子指出来constructor存在形式. function Fruit(){ } var f=new Fruit(); console.log(f.constructor);//打印出Fr ...