【云原生 • Kubernetes】kubernetes 核心技术 - 集群安全机制
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
一、集群安全机制概述
要知道访问 Kubernetes 集群必需要进行三个步骤即
- 认证
- 鉴权(授权)
- 准入控制
而这个访问过程均需经过 apiserverapiserver 主要作用就是统一协调。除此之外在访问过程中还需要证书、token、用户名/密码等等“手续”。
1.认证
通常的客户端身份认证有这么几种方式
- HTTPS 证书认证基于 CA 证书的认证。
- HTTP Token 认证通过 token 识别用户。
- HTTP 基本认证通过用户名+密码进行认证安全性较低。
此外在认证过程中还有一个概念为 传输安全
意思就是对外不暴露 8080 端口只能在内部访问。对外则统一使用端口 6443。
2. 鉴权(授权)
目前鉴权是基于 RBAC
进行操作的。
RBAC基于角色的访问控制。
3. 准入控制
这其实就是一个记录准入控制器的列表如果该列表中包含你要请求的内容则通过反之则拒绝。
二、RBAC 概述
RBAC(基于角色的访问控制)。在 Kubernetes 集群的访问过程中允许经过控制之后访问的某些资源当为某一个角色设置访问内容后将用户和角色进行绑定那么角色可以访问的内容用户也可以访问。
不仅仅是在 k8s中其实在很多领域都在用 RBAC 机制。
三、RBAC 角色绑定操作演示
第一步创建一个命名空间
#创建命名空间
kubectl create ns xiaoma
第二步在新建的命名空间下创建一个 Pod
#新建Pod
kubectl run nginx --image=nginx -n xiaoma
第三步创建角色vim 一个 yaml 文件 rbac-xiaoma.yaml
并在其中设定角色的相关属性
apiVersion: rbac.authorization.k8s.io/v1
kind: xiaoma
metadata:
namespace: xiaoma
name: pod-reader
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "watch", "list"]
代码含义创建角色 xiaoma该角色对 pod 拥有 get、watch、list 权限。
第四步执行文件角色创建成功之后也可以查看角色
#执行文件即创建角色
kubectl apply -f rbac-xiaoma.yaml
#查看角色
kubectl get xiaoma -n xiaoma
第五步创建角色绑定vim 一个 yaml 文件 rbac-xiaomabinding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: xiaomabinding
metadata:
namespace: xiaomatest
name: read-pods
subjects:
- kind: user
name: majinjian
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: xiaoma
name: pod-reader
apiGroup: rbac.authorization.k8s.io
代码含义将用户 majinjian 与角色 xiaoma 进行绑定。
第六步执行文件并查看角色绑定用户
#执行绑定文件
kubectl apply -f rbac-xiaomabinding.yaml
#查看绑定情况
kubectl get xiaoma,xiaomabinding -n xiaomatest