k8s集群安全机制

2022/5/2 k8sDevops

# 1.概述

  • 访问一个k8s集群的时候,需要经过三个步骤完成具体操作
    1. 第一步:认证
    2. 第二步:鉴权
    3. 第三步:准入控制
  • 进行访问的时候,在这个过程中都需要经过 api-server
    • api-server做统一协调。比如门卫
    • 访问过程中需要证书、token、或者用户名+密码
    • 如果访问pod需要 serviceAccount

# 1.1认证

  • 传输安全:
    • 比如对外不暴露8080端口,只能内部访问,对外使6443
  • 客户端身份认证常用方式
    • https证书认证,基于ca证书
    • http token认证,通过token识别用户
    • http基本认证:用户名+密码 认证

# 1.2.鉴权

  • 基于RBAC鉴权操作
    • RABC: 基于角色访问控制

# 1.3.准入控制

就是进行准入控制的列表,如果列表中有请求内容则通过,没有就拒绝

# 2.RBAC-Role-Based Access Control:基于角色的访问控制

图示

# 角色

role:特定命名空间访问权限 (kubectl create ns xxx)

ClusterRole:对所有命名空间访问权限

# 角色绑定

roleBinding:角色绑定到主体

ClusterRoleBinding:集群角色绑定到主体

# 主体

user:用户

group:用户组

serviceAccount:服务账号

# 举一个🌰

  1. 创建一个命名空间
kubectl create ns roledemo
1
  1. 在新创建的命名空间创建一个pod
kubectl run nginx --image=nginx -n roledemo
kubectl -n reoledemo get   pods
1
2
  1. 创建角色-通过yaml配置文件创建 图示
kubectl create -f rbac-role.yaml
kubectl get role -n roledemo
1
2
  1. 创建角色绑定 图示
kubectl apply -f rbac-rolebinding.yaml
kubectl get role,rolebinding -n roledemo
1
2
  1. 使用证书识别身份
Last Updated: 2022/8/13 下午12:28:10