Kubernetes RBAC
RBAC及案例:
RBAC:
用户 操作 对象
动作发出者:Subject
动作承受者:Object
操作:CRUD
读请求:get, list, watch
写请求:create, update, delete, deletecollection, patch
主谓宾:
主
谓宾:定义在Role上
授权:
主 绑定到 Role
Subject:
User Account
Service Account
Group
Object:
资源对象:
集群级别的资源
名称空间级别的资源
每个资源对象,都可由其专用的url path进行标识;
也存在一些非资源型url path
prometheus, /metrics
仅支持get操作
API资源类型:
Role API:名称空间级别,承载名称空间级别的资源对象的权限,其作用范围为Role自身所属的名称空间;
ClusterRole API:集群级别,承载集群级别的,及名称空间级别的资源对象的权限,其作用范围是整个集群;
RoleBinding API: 名称空间级别,仅能引用同一个名称空间下的Role
Subject --> RoleBinding --> Role
ClusterRoleBinding API:
Subject --> ClusterRoleBinding --> ClusterRole
特殊用例:
Subject --> RoleBinding --> ClusterRole
ClusterRole上的权限,被降级使用:
集群级别资源类型的权限:失效
名称级别的资源类型的权限:收缩到当前RoleBinding所属的名称空间中,其它名称空间的都失效
指令式命令:
kubectl create role|clusterrole
kubectl create rolebind|clusterrolebinding
kubectl create role reader --verb=get,list,watch --resource=pods,services,deployments -n default --dry-run=client -o yaml
kubectl create rolebinding tom-with-reader --role=reader --user=tom -n default --dry-run=client -o yaml
kubectl create clusterrole cluster-reader --verb=get,list,watch --resource=pods,services,deployments,namespaces,persistentvolumes --dry-run=client -o yaml
kubectl create clusterrolebinding jerry-cluster-reader --clusterrole=cluster-reader --user=jerry --dry-run=client -o yaml
kubectl create rolebinding mason-cluster-reader --clusterrole=cluster-reader --user=mason -n default --dry-run=client -o yaml