点击蓝字 关注我们
前言
继续学习k8s,今天主要记录集群安全机制和配置。
正文
secret用来保存小片敏感数据的k8s资源,例如密码,token,或者秘钥。这类数据当然也可以存放在Pod或者镜像中,但是放在Secret中是为了更方便的控制如何使用数据,并减少暴露的风险。
其中有两种创建Secret的方法:
以变量形式挂载到容器中
以Volumn形式挂载到容器
Secret的三种类型:
Service Account :用来访问 Kubernetes API,由 Kubernetes 自动创建,并且会自动挂
载到 Pod 的
/run/secrets/kubernetes.io/serviceaccount 目录中
Opaque : base64 编码格式的 Secret,用来存储密码、密钥等
kubernetes.io/dockerconfigjson :用来存储私有 docker registry 的认证信息
创建Secret加密数据
以变量形式挂载到pod容器中。
以volume形式挂载到pod容器中
Configmap:
作用:存储不加密数据到etcd,让Pod以变量或者Volume挂载到容器中
场景:配置文件
kubectl create configmap redis-config --from-file=redis.properties
kubectl get cm
kubectl describe cm redis-config
访问k8s集群时,需要经过三个步骤完成具体操作 第一步 认证 第二步 鉴权(授权) 第三步 准入控制 进行访问时候,过程中都需要经过apiserver,apiserver做统一协调,比如门卫,访问过程中都需要证书、token、或者用户名+密码 如果访问pod需要serviceAccount 传输安全:对外不暴露8080端口,只能内部访问,对外使用6443 基于RBAC进行鉴权 基于角色的访问控制 准入控制就是准入控制器的列表,如果列表有请求内容,通过,没有就拒绝 Role ClusterRote role:特定命名空间 ClusterRole:所有命名空间访问权限 角色绑定: roleBinding:角色绑定到主体 ClusterRoleBinding:集群角色绑定到主体 主体 user:用户 group: 用户组 1、创建命名空间 kubectl get ns kubectl create ns roledemo 2、在新创建的命名空间创建 pod kubectl run nginx --image=nginx -n roledemo kubectl apply -f rabc-role.yaml 3、创建角色 kubectl apply -f rbac-role.yaml 4、角色绑定 kubectl apply -f rbac-binding.yaml 5、证书绑定 绑定证书
原文始发于微信公众号(Th0r安全):云原生安全入门之集群安全机制与配置
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论