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认证的更多相关文章

  1. 8.k8s.认证与访问控制

    #K8S认证与访问控制(RBAC) 用户证书创建 #k8s认证 #主要认证 方式 http token.https证书 k8s不提供用户管理,API Server把客户端证书的CN字段作为User,把 ...

  2. mongodb3.03开启认证

    原文地址:http://21jhf.iteye.com/blog/2216103 下载了最新mongodb3.03版本,当使用--auth 参数命令行开启mongodb用户认证时遇到很多问题,现总结如 ...

  3. k8s认证及ServiceAccount-十五

    一.ServiceAccount (1)简介 https://www.kubernetes.org.cn/service-account Service account是为了方便Pod里面的进程调用K ...

  4. k8s认证及serviceAccount、userAccount

    1.概述 用kubectl向apiserver发起的命令,采用的是http方式,K8s支持多版本并存. kubectl的认证信息存储在~/.kube/config,所以用curl无法直接获取apis中 ...

  5. k8s认证与授权

    认证用于身份鉴别,而授权则实现权限分派.k8s以插件化的方式实现了这两种功能,且分别存在多种可用的插件.另外,它还支持准入控制机制,用于补充授权机制以实现更精细的访问控制功能. 一.访问控制概述 ap ...

  6. k8s系列---k8s认证及serviceaccount、RBAC

    http://blog.itpub.net/28916011/viewspace-2215100/ 对作者文章有点改动 注意kubeadm创建的k8s集群里面的认证key是有有效期的,这是一个大坑!! ...

  7. k8s系列----索引

    day1:k8s集群准备搭建和相关介绍 day2:k8spod介绍与创建 day3:k8sService介绍及创建 day4:ingress资源和ingress-controller day5:存储卷 ...

  8. Kubernetes K8S之鉴权RBAC详解

    Kubernetes K8S之鉴权概述与RBAC详解 K8S认证与授权 认证「Authentication」 认证有如下几种方式: 1.HTTP Token认证:通过一个Token来识别合法用户. H ...

  9. kubernetes用户使用token安全认证教程

    kubernetes server account的token很容易获取,但是User的token非常麻烦,本文给出一个极简的User token生成方式,让用户可以一个http请求就能获取到. to ...

随机推荐

  1. 自定义实现一个loghub(或kafka)的动态分片消费者负载均衡?

    一般地,像kafka之类的消息中间件,作为一个可以保持历史消息的组件,其消费模型一般是主动拉取方式.这是为了给消费者足够的自由,回滚或者前进. 然而,也正是由于将消费消息的权力交给了消费者,所以,消费 ...

  2. 数据库读写分离Master-Slave

    数据库读写分离Master-Slave 一个平台或系统随着时间的推移和用户量的增多,数据库操作往往会变慢,这时我们需要一些有效的优化手段来提高数据库的执行速度:如SQL优化.表结构优化.索引优化.引擎 ...

  3. 使用Python爬取微信公众号文章并保存为PDF文件(解决图片不显示的问题)

    前言 第一次写博客,主要内容是爬取微信公众号的文章,将文章以PDF格式保存在本地. 爬取微信公众号文章(使用wechatsogou) 1.安装 pip install wechatsogou --up ...

  4. pc微信浏览器打开页面显示空白,其他浏览器正常

    pc微信浏览器不兼容es6的语法糖.

  5. idea初见问题整理_错误: -source 1.5 中不支持 diamond 运算符

    最近在移动工程到idea下,顺便改目录结构,遇到的问题不一定全部记录,有些答案摘抄自别人博客,已注明来源,由于不是摘抄自同一作者,且有自己的一些内容,所以标注为原创. 1.(错误: -source 1 ...

  6. django-haystack+whoosh+jieba实现中文全文搜索

    先上效果图 附上个人网站:https://liyuankun.cn 安装依赖库 注意:这里我们不安装django-haystack,因为要添加中文分词的功能很麻烦,所以我直接集成了一个中文的djang ...

  7. K8s集群部署(二)------ Master节点部署

    Master节点要部署三个服务:API Server.Scheduler.Controller Manager. apiserver提供集群管理的REST API接口,包括认证授权.数据校验以 及集群 ...

  8. C语言:正负数之间取模运算(转载)

    如果 % 两边的操作数都为正数,则结果为正数或零:如果 % 两边的操作数都是负数,则结果为负数或零.C99 以前,并没有规定如果操作数中有一方为负数,模除的结果会是什么.C99 规定,如果 % 左边的 ...

  9. redhat6.0下配置DNS

    最近操作系统要结课,老师要求在redhat上配置各种服务器角色,包括dhcp.ftp.web.dns.前三个都还好,但就dns,被折磨的死去活来的,真让人头大.还好在同学的帮助下最后配置成功,实现了正 ...

  10. X-Admin&ABP框架开发-数据字典

    在业务型的系统开发中,我们需要维护各种个样的类型,比如客户类型.客户行业.商品类型等等,这些类型往往信息量不多,并且相似度极高,如果采用一类型一表去设计,将会造成极大的工作量,通过将这部分类型的信息进 ...