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理论教程 - 云原生技术 ...
随机推荐
- python tkinter 基本使用
这里只放表格和一个控件基本属性 grid(**options) 属性-- 下方表格详细列举了各个选项的具体含义和用法: 选项 含义column 1. 指定组件插入的列(0 表示第 1 列)2. 默认值 ...
- SSD源码解读——网络测试
之前,对SSD的论文进行了解读,可以回顾之前的博客:https://www.cnblogs.com/dengshunge/p/11665929.html. 为了加深对SSD的理解,因此对SSD的源码进 ...
- Firefox 的User Agent 将移除 CPU 架构信息
Mozilla 计划从 Firefox 的 User Agent(用户代理)和几个支持的 API 中移除 CPU 架构信息,以减少 Firefox 用户的“数字指纹”.Web 浏览器会自动向用户在应用 ...
- LeetCode OJ -- 无重复字符的最长子串
给定一个字符串,找出不含有重复字符的 最长子串 的长度. 示例: 给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3. 给定 ...
- java8学习之Collector复合与注意事项
接着上一次[http://www.cnblogs.com/webor2006/p/8318066.html]继续对Collector进行javadoc详读,上一次读到了这: 接下来一条条来过目一下: ...
- 【bzoj 4318】OSU!
题意 一个长度为 $n$ 的字符串,第 $i$ 位有 $p_i$ 的概率是 $1$,否则是 $0$.一个字符串的分数定义为:对于字符串中每一个极长的连续一段 $1$,设这段 $1$ 的长度为 $x$, ...
- 【洛谷P4173】残缺的字符串
题目大意:给定一个文本串和一个模板串,串中含有通配符,求文本串中有多少个位置可以与文本串完全匹配. 题解:利用卷积求解字符串匹配问题. 通配符字符串匹配的数值表示为 \[\sum\limits_{i ...
- jar启动名称示例
nohup java -jar -Dspring.profiles.active=20dev -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+Print ...
- vue2.0 移动端,下拉刷新,上拉加载更多 封装组件
前言 在做移动端的避免不了 下拉刷新,上拉加载 直接上代码吧,哈哈 组件里: <template lang="html"> <div class="yo ...
- 输出1~n中1的个数
//输出1~n中1的个数,如f(1)=1,f(13)=6.通过测试,bymyself public class FindOnes{ public static void main(String arg ...