首页 > 其他分享 >1-k8s集群安全-Role_RoleBinding

1-k8s集群安全-Role_RoleBinding

时间:2024-05-10 10:36:37浏览次数:10  
标签:用户 认证 RoleBinding API Role 集群 k8s

1.k8s集群安全-Role RoleBinding

认证(Authentication)、鉴权(Authoriaztion)、准入控制(AdmissionContorl)三步来保障其安全

Authentication(认证

1.由一到多个认证插件完成。收到请求后,API Server依次调用为其配置的认证插件来认证客户端身份,直到其中的一个插件可以识别出请求者的身份。
2.认证方式现共有8种,可以启用一种或多种认证方式,只要有一种认证方式通过,就不再进行其它方式的认证。
3.通常启用Client Certs和Service Accout Tokens两种认证方式。

Authorization(授权

1.由一到多个授权插件进行,负责确定那些通过认证的用户是否有权限执行其发出的资源操作请求,如创建、读取、删除或者修改指定对象等
2.授权方式现共有6种,AlwaysDeny、AlwaysAllow、ABAC、RBAC、Webhook、Node
3.默认集群强制开启RBAC(系统推荐)

Admission Control(准入控制)

通过授权检测的用户所请求的修改相关的操作还要经由一到多个准入控制插件的遍历检测,例如是否违反系统资源限制等

用户和组

用户:UserAccount与ServiceAccount
1.用户账户是针对人而言的。 服务账户是针对运行在 pod 中的进程而言的。
2.用户账户是全局性的,其名称在集群各 namespace 中都是全局唯一的。服务账户是 namespace 隔离的。
3.通常情况下,集群的用户账户可能会从企业数据库进行同步,其创建需要特殊权限,并且涉及到复杂的业务流程。
4.服务账户创建的目的是为了更轻量,允许集群用户为了具体的任务创建服务账户 ( 即权限最小化原则 )。

组
用户账号的逻辑集合。Kubernetes几个内建的用于特殊目的的组:
system:unauthenticated               未通过任何一个授权插件检验的账号会进入该组
system:authenticated                 认证成功后的用户自动加入的一个组
system:serviceaccounts               包含当前系统所有的Service Account对象
system:serviceaccounts:<namespace>   包含指定名称空间内所有的Service Account对象

RBAC(Role Based Access Control):基于角色访问控制授权

允许管理员通过Kubernetes API动态配置授权策略。RBAC就是用户通过角色与权限进行关联;
RBAC只有授权,没有拒绝授权,所以只需要定义允许该用户做什么即可;
RBAC包括四种类型:Role、ClusterRole、RoleBinding、ClusterRoleBinding。

Role和ClusterRole:

1.Role是一系列的权限的集合,Role只能授予单个namespace中资源的访问权限。
2.ClusterRole作用于集群中的所有namespace,用于编写集群中的通用规则

RoleBinding和ClusterRoleBinding

1.RoleBinding是将Role中定义的权限授予给用户或者用户组。它包含一个subjects列表(users,groups,service accounts),并引用该Role。
2.RoleBinding对集群中单个namespace进行授权,ClusterRoleBinding对集群中所有namespace进行授权
3.编写ClusterRole,然后在不同的namaspace中使用RoleBinding来引用

访问k8s的API Server的客户端主要分为两类:

kubectl :用户家目录中的 .kube/config 里面保存了客户端访问API Server的密钥相关信息,这样当用kubectl访问k8s时,它就会自动读取该配置文件,向API Server发起认证,然后完成操作请求。

pod:Pod中的进程需要访问API Server,如果是人去访问或编写的脚本去访问,这类访问使用的账号为:UserAccount;而Pod自身去连接API Server时,使用的账号是:ServiceAccount,生产中后者使用居多。

kubectl向apiserver发起的命令,采用的是http方式,其实就是对URL发起增删改查的操作。

$ kubectl proxy --port=8888 &

$ curl http://localhost:8888/api/v1/namespaces/default

$ curl http://localhost:8888/apis/apps/v1/namespaces/default/deployments

以上两种api的区别是:

api它是一个特殊链接,只有在核心v1群组中的对象才能使用。

apis 它是一般API访问的入口固定格式名。

标签:用户,认证,RoleBinding,API,Role,集群,k8s
From: https://www.cnblogs.com/lixunblogs/p/18167054

相关文章

  • docker安全_k8s安全
    docker安全&k8s安全同一个进程,在docker中的进程ID和主机的进程ID不同docker默认并不能运行主机中的所有命名docker中的root并不是主机中的rootdocker中关于安全规则的命令以主机指定用户运行容器dockerrun--user=1000centos添加/删除容器中的某功能并运行dockerrun......
  • ansible05-ansible roles
    5.ansiblerolesroles将变量、任务、模板等文件单独配置在yaml文件中,在main.yaml中用include字段来指定要执行的yaml文件官方建议目录/etc/ansible/roles调用roles的yml文件与roles目录平级roles的目录结构roles目录中创建角色名比如叫做project,其子目录包含如下:files/ ......
  • apisix~helm方式的部署到k8s
    什么是apisixApacheAPISIX是一个高性能、轻量级的开源API网关,基于Nginx和OpenResty构建。APISIX提供了丰富的功能和灵活的配置,适用于构建现代的微服务架构和云原生应用。以下是ApacheAPISIX的一些主要特点和功能:动态路由:APISIX支持基于请求路径、方法、头部等条......
  • k8s-Pod的概念和存在的意义
    1.Pod的概念pod是k8s中部署的最小单元包含多个容器(也就是说pod是一组容器的集合)一个pod中容器共享网络命名空间pod是短暂的  2.Pod存在的意思2.1创建容器使用docker,一个docker对应是一个容器,一个容器有进程,一个容器运行一个应用程序2.2Pod是多进程设计,运动多个......
  • k8s资源编排-yml介绍
    yaml文件:叫做“资源清单文件”,通过kubecl命令直接使用yaml文件就可以实现对大量的资源对象进行编排部署了。    2.Yaml的组成部分yaml由2个部分组成:2.1控制器定义2.2被控制对象 yaml文件自己写比较繁琐,还好有自动生成yml格式文件的方式:1.使用kubectlcreate......
  • k8s——api
    api概述api是k8s系统的重要部分,组件之间的所有操作和通信均由apiserver处理的restapi调用,大多数情况下,api定义和实现都符合标准的httprest格式,可以通过kubctl命令管理工具或其他命令行工具来执行api类型alpha包含alpha名称的版本(例如v1alpha1)该软件可能会包含错误。......
  • Kubernetes——K8s基础指令
    1、查看类命令#获取节点和服务版本信息kubectlgetnodes#获取节点和服务版本信息,并查看附加信息kubectlgetnodes-owide#获取pod信息,默认是default名称空间kubectlgetpod#获取pod信息,默认是default名称空间,并查看附加信息如:pod的IP及在哪个节点运行kubectlg......
  • k8s集群搭建--kubeadm方式
    1.搭建集群的硬件条件: 使用3台服务器:一个master,两个node。我们这里的案例是搭建单master集群的方式。具体操作步骤:1.“在所有节点中”执行以下步骤的命令,做一些初始化:  上面的命令,在所有master和node节点中都要全部执行一次!!! 2.在所有节点安装Docker/Kubeadm/k......
  • k8s搭建集群
    1.单master集群模式缺点:如果master宕机了,就整个集群也没有办法访问了。 2.多master集群 模式 3.快速搭建k8s集群--Kubeadm: 4.快速搭建k8s集群--二进制方式: ......
  • k8s——核心概念篇
    服务的分类有状态代表应用nginxapache优点对客户端透明,无依赖关系,可以高效实现扩容,迁移缺点不能存储数据,需要额外的数据服务支撑无状态代表应用MYSQLRedis优点可以独立存储数据,实现数据管理缺点集群环境下需要实现主从,数据同步,备份,水平扩容......