03-k8s认证
k8s认证
主要使用 RBAC授权检查机制
认证: token ssl(双向认证\加密会话)
授权检查
准入控制:级联操作的授权检查
k8s采用插件的方式,每一种检查都可以通过多种方式进行。
客户端 ---> API Server
API Server 对用户权限的判断需要以下:
user: username uid
group:
extra:
API:
请求路径:
/apis/app/v1/namespaces/default/deployment
资源对象所属的apiGroup 组可以使用kubectl explain 进行查看
更多的api信息可以查看官方文档https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.11/
kubectl 的实质就是将yaml文件,或者命令 转换成api请求。
HTTP request verb
get post put delte
API request verb
get list create update path watch(- w) proxy redirect deletecollection
Resource: 资源名称
Subresource:子资源
namespace:名称空间
Api group:插件的方式提供
外部访问
方式一:
开启api代理
kubectl proxy
方式二:
使用postman 带 token 进行访问
pod 客户端
每一个namespace 创建时会创建一个默认的serviceaccount
创建pod时如果不指定serviceaccount,会使用namespace下默认的serviceaccount 的Secret
Secret 挂载路径为 /var/run/secrets/kubernetes.io/serviceaccount
可以使用kubectl describe 查看Secret的挂载路径
# kubectl describe pod/index-api-2822468404-4oofr
Name: index-api-2822468404-4oofr
Namespace: default
... ...
Containers:
index-api:
... ...
Volume Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from default-token-40z0x (ro)
Environment Variables: <none>
... ...
Volumes:
... ...
default-token-40z0x:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-40z0x
QoS Class: BestEffort
Tolerations: <none>
No events.
官方go-client 地址: https://github.com/kubernetes/client-go
RBCA
k8s 用户类型
- user
- group
- serviceaccount
serviceaccount 创建
kubectl create serviceaccount default-ns-admin -n default
kubectl create rolebinding default-ns-admin --clusterrole=admin --serviceaccount=default:default-ns-admin
## 获取serviceaccount的 token 需要用base64解密
kubectl get secrets default-ns-admin-token-2tm4n -o jsonpath={.data.token}|base64 -d
用户ssl 认证相关
https://github.com/huruizhi/Knowledge-warehouse/blob/master/linux总结/CA证书与https讲解.md
https://github.com/gjmzj/kubeasz/blob/master/docs/setup/01-CA_and_prerequisite.md
kubeconfig 配置kubectl 连入apiServer的配置
# kubectl config view
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: REDACTED
server: https://192.168.0.200:8443
name: kubernetes
contexts:
- context:
cluster: kubernetes
user: admin
name: kubernetes
current-context: kubernetes
kind: Config
preferences: {}
users:
- name: admin
user:
client-certificate-data: REDACTED
client-key-data: REDACTED
一个客户端可以配置连接多个集群
context用于定义账号与集群的关系,current-context定义当前访问的集群。
RBAC(Role-Based Access Control)
基于角色的访问控制

- role/clusterrole:
- operations
- objects
- rolebinding/clusterrolebinding
- user or service account
- role
role 与 rolebinding在名称空间内定义及在当前名称空间内生效。
clusterrole 与clusterrolebinding 在集群中定义且在 整个集群内生效
注意:也可以建立clusterrole 使用 rolebing 进行绑定。
clusterrole 与clusterrolebinding
- subject 类型:
user group serviceaccount
role clusterrole:
- object:
- resource group
- resource
- nonResourceURLs
- action: get, list, watch, patch, delete, deletecollection
dashboard 的认证登录
- 认证账号类型必须是ServiceAccount 类型,使用rolebinding或者clusterrolebing 进行权限的赋予
- 使用
kubectl get secrets default-ns-admin-token-2tm4n -o jsonpath={.data.token}|base64 -d获取token - kubconfig 方式 是token 的封装
使用 kubeconfig 生成 kubeconfig 文件 使用参数 --kubeconfig 指定文件
03-k8s认证的更多相关文章
- 8.k8s.认证与访问控制
#K8S认证与访问控制(RBAC) 用户证书创建 #k8s认证 #主要认证 方式 http token.https证书 k8s不提供用户管理,API Server把客户端证书的CN字段作为User,把 ...
- mongodb3.03开启认证
原文地址:http://21jhf.iteye.com/blog/2216103 下载了最新mongodb3.03版本,当使用--auth 参数命令行开启mongodb用户认证时遇到很多问题,现总结如 ...
- k8s认证及ServiceAccount-十五
一.ServiceAccount (1)简介 https://www.kubernetes.org.cn/service-account Service account是为了方便Pod里面的进程调用K ...
- k8s认证及serviceAccount、userAccount
1.概述 用kubectl向apiserver发起的命令,采用的是http方式,K8s支持多版本并存. kubectl的认证信息存储在~/.kube/config,所以用curl无法直接获取apis中 ...
- k8s认证与授权
认证用于身份鉴别,而授权则实现权限分派.k8s以插件化的方式实现了这两种功能,且分别存在多种可用的插件.另外,它还支持准入控制机制,用于补充授权机制以实现更精细的访问控制功能. 一.访问控制概述 ap ...
- k8s系列---k8s认证及serviceaccount、RBAC
http://blog.itpub.net/28916011/viewspace-2215100/ 对作者文章有点改动 注意kubeadm创建的k8s集群里面的认证key是有有效期的,这是一个大坑!! ...
- k8s系列----索引
day1:k8s集群准备搭建和相关介绍 day2:k8spod介绍与创建 day3:k8sService介绍及创建 day4:ingress资源和ingress-controller day5:存储卷 ...
- Kubernetes K8S之鉴权RBAC详解
Kubernetes K8S之鉴权概述与RBAC详解 K8S认证与授权 认证「Authentication」 认证有如下几种方式: 1.HTTP Token认证:通过一个Token来识别合法用户. H ...
- kubernetes用户使用token安全认证教程
kubernetes server account的token很容易获取,但是User的token非常麻烦,本文给出一个极简的User token生成方式,让用户可以一个http请求就能获取到. to ...
随机推荐
- 程序员修仙之路--优雅快速的统计千万级别uv(留言送书)
菜菜,咱们网站现在有多少PV和UV了? Y总,咱们没有统计pv和uv的系统,预估大约有一千万uv吧 写一个统计uv和pv的系统吧 网上有现成的,直接接入一个不行吗? 别人的不太放心,毕竟自己写的,自己 ...
- python bmp image injection
1. 将原BMP文件的第三,第四字节替换为\x2F\x2A, 对应js中的注释符号/*BMP文件的第三.四.五.六字节表示BMP文件的大小2. 在BMP文件末尾添加(1)\xFF(2)\x2A\x2F ...
- C#反射使用时注意BindingFlags的用法
c#反射查找方法时,默认只能查到public方法.如果想要查找private方法,需要设定BindingFlags. 即: BindingFlags.Public|BindingFlags.Insta ...
- 【HDU - 2612】Find a way
-->Find a way 直接上Chinese Descriptions: hsj和lsh最近迷上了pokemon go的游戏.在双十一大物期中考试来临之前,他们想抓一只稀有土拨鼠来攒攒人品 ...
- 每天学点node系列-http
任何可以使用JavaScript来编写的应用,最终会由JavaScript编写.--Atwood's Law http模块概览 http模块主要用于创建http server服务,并且 支持更多特性 ...
- BZOJ 2957:楼房重建(分块)
http://www.lydsy.com/JudgeOnline/problem.php?id=2957 题意:…… 思路:对于每一个块,维护一个单调递增的斜率(因为小于前面的斜率的话是肯定看不见的) ...
- iOS组件化开发一远程私有库的升级(三)
一.远程私有库的升级 1. 把新增的类 拖入到 classes 文件夹中 : 2. 修改 pod.spec 文件的 s.verson = ‘0.2.0': 二.更新远程仓库 1.cd 到本地仓库的位置 ...
- ubuntu18.04上搭建KVM虚拟机环境超完整过程
看标题这是篇纯运维的文章.在中小型企业中,一般很少配置专业的运维人员,都是由开发人员兼着.同时,对有志于技术管理的开发人员来说,多了解一些运维及整个软件生命周期的知识,是很有帮助的,因为带团队不仅仅是 ...
- [NOIP2003] 传染病控制题解
问题 F: [NOIP2003] 传染病控制 时间限制: 1 Sec 内存限制: 128 MB 题目描述 [问题背景] 近来,一种新的传染病肆虐全球.蓬莱国也发现了零星感染者,为防止该病在蓬莱国大范 ...
- WinForm控件之【LinkLabel】
基本介绍 超链接标签控件,随处可见应用极为广泛,一般用作触发指定链接跳转指定页面等操作. 常设置属性.事件 ActiveLinkColor:用户单击超链接时超链接显示的颜色: LinkColor:超链 ...