阜城网站建设价格,搜索引擎优化seo公司,wordpress开发oa,销售平台系统目录
一、Kubernetes 安全概述
二、鉴权、授权和准入控制
2.1 鉴权(Authentication)
2.2 授权(Authorization)
2.3 准入控制
三、基于角色的权限访问控制#xff1a; RBAC
四、案例#xff1a;为指定用户授权访问不同命名空间权限 一、Kubernetes 安全概述 K8S安全控…目录
一、Kubernetes 安全概述
二、鉴权、授权和准入控制
2.1 鉴权(Authentication)
2.2 授权(Authorization)
2.3 准入控制
三、基于角色的权限访问控制 RBAC
四、案例为指定用户授权访问不同命名空间权限 一、Kubernetes 安全概述 K8S安全控制框架主要由下面3个阶段进行控制每一个阶段都 支持插件方式通过API Server配置来启用插件。
1. Authentication (鉴权)
2. Authorization (授权)
3. Admission Control (准入控制) 二、鉴权、授权和准入控制 2.1 鉴权(Authentication)
客户端要想访问K8s集群API Server一般需要证书、 Token或者用户名密码 如果Pod访问需要ServiceAccount
三种客户端身份认证
• HTTPS 证书认证基于CA证书签名的数字证书认证
• HTTP Token认证通过一个Token来识别用户
• HTTP Base认证用户名密码的方式认证
2.2 授权(Authorization)
K8s目前支持多种授权策略目前企业主要使用RBAC (Role-Based Access Control基于角色的访问控制)完成授权工作。
RBAC根据API请求属性决定允许还是拒绝。
比较常见的授权维度
• user用户名
• group用户分组
• 资源例如pod、 deployment
• 资源操作方法 get list create update patch watch delete
• 命名空间
• API组 2.3 准入控制 Adminssion Control实际上是一个准入控制器插件列表发送到API Server的请求都需要经过这个列表中的每个准入控制器插件的检查 检查不通过则拒绝请求。 三、基于角色的权限访问控制 RBAC RBAC (Role-Based Access Control基于角色的访问控制)允许通过Kubernetes API动态配置策略。
角色
• Role授权特定命名空间的访问权限
• ClusterRole授权所有命名空间的访问权限
角色绑定
• RoleBinding将角色绑定到主体(即subject)
• ClusterRoleBinding将集群角色绑定到主体
主体(subject)
• User用户
• Group用户组
• ServiceAccount服务账号 四、案例为指定用户授权访问不同命名空间权限 示例为kangll用户授权default命名空间Pod读取权限
1. 用K8S CA签发客户端证书
2. 生成kubeconfig授权文件
3. 创建RBAC权限策略
集群信息 角色 IP 组件 k8s-master1 192.168.2.119 apiServer , controller, schedule, etcd k8s-node1 192.168.2.118 kubelet , kube-proxy, docker ,etcd k8s-node2 192.168.2.210 kubelet , kube-proxy, docker ,etcd
安装cfssl 工具用于生成证书
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
chmod x cfssl_linux-amd64 cfssljson_linux-amd64 cfssl-certinfo_linux-amd64
mv cfssl_linux-amd64 /usr/local/bin/cfssl
mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
mv cfssl-certinfo_linux-amd64 /usr/bin/cfssl-certinfochmod x /usr/local/bin/cfssl
chmod x /usr/local/bin/cfssljson
chmod x /usr/bin/cfssl-certinfo
运行如下命令生成证书
cat ca-config.json EOF
{signing: {default: {expiry: 87600h},profiles: {kubernetes: {usages: [signing,key encipherment,server auth,client auth],expiry: 87600h}}}
}
EOFcat kangll-csr.json EOF
{CN: kangll,hosts: [],key: {algo: rsa,size: 2048},names: [{C: CN,ST: BeiJing,L: BeiJing,O: k8s,OU: System}]
}
EOFcfssl gencert -ca/etc/kubernetes/pki/ca.crt -ca-key/etc/kubernetes/pki/ca.key -configca-config.json -profilekubernetes kangll-csr.json | cfssljson -bare kangll如下图 生成kubeconfig授权文件 运行如下命令
kubectl config set-cluster kubernetes \--certificate-authority/etc/kubernetes/pki/ca.crt \--embed-certstrue \--serverhttps://192.168.2.119:6443 \--kubeconfigkangll.kubeconfig# 设置客户端认证
kubectl config set-credentials kangll \--client-keykangll-key.pem \--client-certificatekangll.pem \--embed-certstrue \--kubeconfigkangll.kubeconfig# 设置默认上下文
kubectl config set-context kubernetes \--clusterkubernetes \--userkangll \--kubeconfigkangll.kubeconfig# 设置当前使用配置
kubectl config use-context kubernetes --kubeconfigkangll.kubeconfig 运行rbac.yaml 创建RBAC权限策略 运行rbac.yaml 创建RBAC权限策略
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:namespace: defaultname: pod-reader
rules:
- apiGroups: []resources: [pods]verbs: [get, watch, list]---kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:name: read-podsnamespace: default
subjects:
- kind: Username: kangllapiGroup: rbac.authorization.k8s.io
roleRef:kind: Rolename: pod-readerapiGroup: rbac.authorization.k8s.io
kangll用户成功的读取 pod 信息 没有delete pod 权限 报错 感谢点赞和关注