k8s 认证基础

0x00 前言

要想研究一个东西是不是存在安全问题,那么就要知道这个东西是什么,怎么用的,如何认证,认证方式等问题,了解这些才能更好的去解释学习安全问题。

0x01 访问控制

首先是k8s用户k8s用户分为service account以及user account。

1.service account

1.1 解释

service account是k8s为pod内部的进程访问apiserver创建的一种用户,在pod外部也可以通过sa的token和证书访问apiserver,在pod外部一般都是采用client证书的方式。
可以通过配置文件指定sa用户

1.2 操作

查看serviceAccounts

kubectl get serviceAccounts
kubectl -s 192.168.247.156:8080 svc

在这里插入图片描述

2. User Account

2.1 解释

User Account是给人用的,默认的用户是kubernetes-admin@kubernetes,也就是管理员用户

2.2 操作

切换用户:kubectl config user-context

3.认证、授权和准入

APIserver是访问以及管理资源对象的唯一入口,访问Apiservice需要经过三个流程

  • 认证(Authenticator),身份鉴别
  • 授权(Authorization)判断用户权限和动作是否对应
  • 准入控制(Adminission Control)用于补充授权机制以实现更加精细的访问控制

0x02 认证管理

1.静态令牌文件认证

令牌信息保存与文本文件中,由“令牌、用户名、用户ID和所属的用户组”四个字段组成,用户组为可选字段

格式:token,user,uid,“group1,group2,group3”
如 3e6745.42c03381b4162e8e,jack,998,kubeadmin

2.x509

客户端证书认证:客户端在请求报文中携带x509证书的数字证书用于认证,x509就是一种证书格式

3.引导令牌

一种动态管理承载令牌进行身份认证的方式,用于简化K8s集群的节点认证过程。

4.静态密码文件

用户名和密码等令牌以明文格式存储的CSV格式文件,使用 --basic-auth-file 选项进行加载

5. 服务账户令牌

apiserver自动启动,service account 自动创建

6.OPENID连接令牌

OAuth2 认证风格

7.webhook令牌

接受带有令牌的post请求身份验证,这个在gitlab和Jenkins中比较常见

8.认证代理

可以通过http头部的指定字段,或者特定字段进行认证

9.keystone

借助外部的keystone服务器进行身份验证

10.匿名请求

将"system:anonymous"用户绑定到"cluster-admin"用户组

猜你喜欢

转载自blog.csdn.net/qq_36869808/article/details/130046960