k8s集群安全机制
1、概述:(1)访问k8s集群的时候,需要经过三个步骤完成具体操作第一步:认证操作第二步:鉴权(授权)第三步:准入控制(2)进行访问时候,过程中都需要经过apiserver,apiserver做统一协调,比如门卫。访问过程中需要证书、token、或者用户名+密码如果访问Pod,需要serviceAccount第一步认证 传输安全* 传输安全: 对外不暴露8080端口,只能内部访问,对外使用端口64
1、概述:
(1)访问k8s集群的时候,需要经过三个步骤完成具体操作
第一步:认证操作
第二步:鉴权(授权)
第三步:准入控制
(2)进行访问时候,过程中都需要经过apiserver,apiserver做统一协调,比如门卫。
访问过程中需要证书、token、或者用户名+密码
如果访问Pod,需要serviceAccount
第一步认证 传输安全
* 传输安全: 对外不暴露8080端口,只能内部访问,对外使用端口6443
* 认证
客户端身份认证常用方式
* https证书认证,基于ca证书
* http token认证, 通过token识别用户
* http 基本认证,用户名+密码认证
第二步 鉴权(授权)
* 基于RBAC进行鉴权操作
* 基于角色的访问控制
第三步 准入控制
* 就是准入控制器的列表,如果列表有请求内容通过,没有拒绝
2、 RBAC
基于角色的访问控制
* 角色
** role:特定命名空间访问权限
** ClusterRole:所有命名空间访问权限
*角色绑定
** roleBinding:角色绑定到主体
** ClusterRoleBinding:集群角色绑定到主体
* 主体
user:用户
group:用户组
serviceAccount:服务账号
1、创建命名空间
kubectl create ns 命名空间名
2、在新创建的命名空间中创建一个Pod
kubectl run nginxNS --image=nginx -n nsdemo
3、创建角色
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
namespace: nsdemo
name: pod-reader
rules:
- apiGroups: [""] # "" indicates the core API group
resources: ["pods"]
verbs: ["get", "watch", "list"]
4、创建角色绑定
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: read-pods1
namespace: nsdemo
subjects:
- kind: User
name: mary
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role # this must be Role or ClusterRole
name: pod-reader # this must match the name of the Role or ClusterRole you wish to bind to
apiGroup: rbac.authorization.k8s.io
部署的时候有问题:❓
更多推荐
所有评论(0)