1. Authentication(鉴权)
2. Authorization(授权)
#k8s安全的3把大斧头
3. Admission Control(准入控制)
Pod资源限制:request limit
命名空间限制:ResourceQuota
Pod默认资源限制:LimitRanger
RBAC基于角色授权
角色:
eole: 授权特定的命名空间访问权限
ClusteRole:授权所有命名空间的访问权限
角色绑定:
Rolebinding: 将角色绑定到主体(即subject)
ClusterRoleBinding: 将集群角色绑定到主体
主体(sudject)
user 用户
group 用户组
service Account: 服务号
nohup XXXXXX.sh >> /runtime/deletedata.log 2>&1 &
rbac授权:
1:创建角色(规则)
2:主体(指定用户) #证书不用创建主体
3:角色与主体绑定
创建rbac.yaml
#创建角色
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
namespace: default #只能查看的命名空间
name: pod-reader #角色名称
rules: #角色规则
- apiGroups: [""] #api的组 如果你要授权的资源在一个组里面 你必须把规则组加上
resources: ["pods"] #只能查看pod 如果需要加其他的资源查看 如果server 一定要在多加一个s不然是没有效果的
verbs: ["get", "watch", "list"] #只能使用的命令
#因为是证书创建所以不需要创建主体因为证书里面就带主体
---
#角色与主体绑定
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: read-pods #名称
namespace: default #只能查看的命名空间
subjects: #用户
- kind: User
name: aliang
apiGroup: rbac.authorization.k8s.io
roleRef: #规则
kind: Role
name: pod-reader
apiGroup: rbac.authorization.k8s.io
#授权的用户证书 使用 方法 --kubeconfig=aliang.kubeconfig 参数+证书
https://kubernetes.io/zh/docs/reference/access-authn-authz/rbac/