1. 概述

Kubernetes 中用户分登陆用户和 service account。登陆用户可通过 kubectl config 查看上下文,以及当前上下文:

[root@chunqiu ~ (Master)]# kubectl config view
apiVersion: v1
clusters:
- cluster:
certificate-authority: /etc/kubernetes/ssl/ca.pem
server: https://k8s-apiserver:8443
name: bcmt-kubernetes
contexts:
- context:
cluster: bcmt-kubernetes
namespace: default
user: kubectl
name: kubectl-context
current-context: kubectl-context
kind: Config
preferences: {}
users:
- name: kubectl
user:
client-certificate: /etc/kubernetes/ssl/cluster-admin.pem
client-key: /etc/kubernetes/ssl/cluster-admin-key.pem

可以在当前上下文中通过 --user 选项使用其它用户访问当前上下文。

serviceaccout 是默认命名空间就会创建,如果不显示指定 serviceaccount,kubernetes 会为 pod 配置默认 serviceaccount。

serviceaccount 是进程访问 APIServer 的方式,那进程有什么权限访问呢?这就涉及到鉴权了,kubernetes 有多种鉴权方式,RBAC 是常见的鉴权方式,RBAC 定义了进程及用户能够以什么方式访问 kubernetes 的哪些资源。RBAC 和 serviceaccount 之间的桥梁即是 rolebinding。

通过鉴权的访问请求最后会进入到准入控制插件的“筛查”,准入控制插件会配置 pod 的相关信息,如果缺省配置默认值,如果有查看是否准入等。

根据对 APIServer 不同层面的访问,APIServer 会提示不一样的报错,鉴权失败,权限不够等等。

psp 是准入控制的插件之一,配置了集群内 pod 的安全属性。

2. 环境实践

[root@chunqiu ~ (Master)]# kubectl describe clusterrolebindings.rbac.authorization.k8s.io all:psp:restricted
Name: all:psp:restricted
Labels: <none>
Annotations: <none>
Role:
Kind: ClusterRole
Name: psp:restricted
Subjects:
Kind Name Namespace
---- ---- ---------
Group system:serviceaccounts
Group system:authenticated // 注意这里以组为单位,通过 APIServer 鉴权的 serviceaccount 和 kubectl user 将被添加到 group system:serviceaccounts 和 system:authenticated 中,使得组内的“用户”天然用上了 psp 的 security 属性。 [root@chunqiu ~ (Master)]# kubectl describe clusterroles.rbac.authorization.k8s.io psp:restricted
Name: psp:restricted
Labels: <none>
Annotations: <none>
PolicyRule:
Resources Non-Resource URLs Resource Names Verbs
--------- ----------------- -------------- -----
podsecuritypolicies.extensions [] [restricted] [use] [root@chunqiu ~ (Master)]# kubectl get psp
NAME PRIV CAPS SELINUX RUNASUSER FSGROUP SUPGROUP READONLYROOTFS VOLUMES
...
restricted true NET_ADMIN,SYS_RAWIO,SYS_NICE,SYS_RESOURCE,SYS_TIME,IPC_LOCK,NET_RAW,IPC_OWNER,NET_BIND_SERVICE,DAC_OVERRIDE,KILL,CHOWN,FOWNER,SETUID,SETGID,MKNOD RunAsAny RunAsAny RunAsAny RunAsAny false configMap,emptyDir,projected,secret,downwardAPI,persistentVolumeClaim,hostPath [root@chunqiu ~ (Master)]# kubectl get clusterrolebindings.rbac.authorization.k8s.io | grep restricted
all:psp:restricted ClusterRole/psp:restricted 152d
harbor-harbor:psp:restricted ClusterRole/psp:restricted 152d [root@chunqiu ~ (Master)]# kubectl describe clusterrolebindings.rbac.authorization.k8s.io harbor-harbor:psp:restricted
Name: harbor-harbor:psp:restricted
Labels: <none>
Annotations: <none>
Role:
Kind: ClusterRole
Name: psp:restricted
Subjects:
Kind Name Namespace
---- ---- ---------
ServiceAccount harbor-harbor-serviceaccount ncms

参考文章:

Controlling Access to the Kubernetes API

Cluster Administration

Kubernetes 权限管理的更多相关文章

  1. kubernetes用户权限管理工具permission-manager

    Permission Manager Permission Manager是一个为Kubernetes RBAC和用户管理提供Web UI的项目,为Kubernetes权限管理提供友好的可视化界面. ...

  2. 理解OpenShift(4):用户及权限管理

    理解OpenShift(1):网络之 Router 和 Route 理解OpenShift(2):网络之 DNS(域名服务) 理解OpenShift(3):网络之 SDN 理解OpenShift(4) ...

  3. Android权限管理之RxPermission解决Android 6.0 适配问题

    前言: 上篇重点学习了Android 6.0的运行时权限,今天还是围绕着Android 6.0权限适配来总结学习,这里主要介绍一下我们公司解决Android 6.0权限适配的方案:RxJava+RxP ...

  4. Android权限管理之Android 6.0运行时权限及解决办法

    前言: 今天还是围绕着最近面试的一个热门话题Android 6.0权限适配来总结学习,其实Android 6.0权限适配我们公司是在今年5月份才开始做,算是比较晚的吧,不过现在Android 6.0以 ...

  5. Android权限管理之Permission权限机制及使用

    前言: 最近突然喜欢上一句诗:"宠辱不惊,看庭前花开花落:去留无意,望天空云卷云舒." 哈哈~,这个和今天的主题无关,最近只要不学习总觉得生活中少了点什么,所以想着围绕着最近面试过 ...

  6. SpringMVC+Shiro权限管理【转】

    1.权限的简单描述 2.实例表结构及内容及POJO 3.Shiro-pom.xml 4.Shiro-web.xml 5.Shiro-MyShiro-权限认证,登录认证层 6.Shiro-applica ...

  7. Android6.0运行时权限管理

    自从Android6.0发布以来,在权限上做出了很大的变动,不再是之前的只要在manifest设置就可以任意获取权限,而是更加的注重用户的隐私和体验,不会再强迫用户因拒绝不该拥有的权限而导致的无法安装 ...

  8. Oracle 表空间和用户权限管理

    一. 表空间 Oracle数据库包含逻辑结构和物理结构. 数据库的物理结构指的是构成数据库的一组操作系统文件. 数据库的逻辑结构是指描述数据组织方式的一组逻辑概念以及它们之间的关系. 表空间是数据库逻 ...

  9. [Django]用户权限学习系列之权限管理界面实现

    本系列前三章: http://www.cnblogs.com/CQ-LQJ/p/5604331.htmlPermission权限基本操作指令 http://www.cnblogs.com/CQ-LQJ ...

  10. [Django]用户权限学习系列之设计自有权限管理系统设计思路

    若在阅读本片文章遇到权限操作问题,请查看本系列的前两章! http://www.cnblogs.com/CQ-LQJ/p/5609690.html和http://www.cnblogs.com/CQ- ...

随机推荐

  1. 【笔记整理】xpath复习

    又是xpath.... 10年前学java就学过了...哈哈哈 要就看w3cschool的教程就行了, 函数部分会用得到: https://www.w3school.com.cn/xpath/xpat ...

  2. ElasticSearch之cat templates API

    命令样例如下: curl -X GET "https://localhost:9200/_cat/templates?v=true&pretty" --cacert $ES ...

  3. 从C++CLI工程的依赖库引用问题看.Net加载程序集机制

    问题 最近在为某第三方MFC项目写C++/CLI工程插件时遇到了如下一个问题: MFC的工程不允许把.Net的依赖程序集放到执行程序的目录(防止影响其稳定性),依赖库只能放到非执行程序子目录的其他目录 ...

  4. C++中自定义结构体或类作为关联容器的键

    目录 1. 概述 2. 实例 1. 概述 STL中像set和map这样的容器是通过红黑树来实现的,插入到容器中的对象是顺序存放的,采用这样的方式是非常便于查找的,查找效率能够达到O(log n).所以 ...

  5. LeetCode206反转链表、24两两交换节点

    206. 反转链表 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL ...

  6. 云图说|云数据库GaussDB如何做到卓越性能

    摘要:对于数据库来说,性能一直被视为最关键的部分.GaussDB作为华为自主创新研发的分布式关系型数据库,那么华为云数据库GaussDB在提升数据库性能方面都有哪些黑科技呢? 本文分享自华为云社区&l ...

  7. Spark的分布式存储系统BlockManager全解析

    摘要:BlockManager 是 spark 中至关重要的一个组件,在spark的运行过程中到处都有 BlockManager 的身影,只有搞清楚 BlockManager 的原理和机制,你才能更加 ...

  8. 华为云登顶HotpotQA多跳知识推理问答评测

    日前,华为云在知识计算领域的多跳知识推理问答取得重大进展.基于自然语言处理领域的领先技术积累,华为云语音语义创新Lab联合华为诺亚方舟实验室在国际权威的HotpotQA评测Fullwiki Setti ...

  9. LiteOS内核源码分析:任务栈信息

    摘要:LiteOS任务栈是高地址向低地址生长的递减栈,栈指针指向即将入栈的元素位置. 我们介绍下LiteOS任务栈的基础概念.LiteOS任务栈是高地址向低地址生长的递减栈,栈指针指向即将入栈的元素位 ...

  10. 背景 | 基于 Transformers 的编码器-解码器模型

    !pip install transformers==4.2.1 !pip install sentencepiece==0.1.95 Vaswani 等人在其名作 Attention is all ...