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

 

posted @ 2024-01-27 21:30  しみずよしだ  阅读(3)  评论(0)    收藏  举报