怎么找网站模板,百度数据网站,大学生创新创业大赛ppt模板,长沙网页设计有限公司目录 定义
配置对象
Role
ClusterRole
ServiceAccount
RoleBinding
ClusterRoleBinding
配置示例 定义
Kubernetes的运行是由多种类型的资源组合起来#xff0c;每种资源各司其职完成整个集群的功能。那么自然也需要一套机制控制资源的访问权限#xff0c;保证安全性…目录 定义
配置对象
Role
ClusterRole
ServiceAccount
RoleBinding
ClusterRoleBinding
配置示例 定义
Kubernetes的运行是由多种类型的资源组合起来每种资源各司其职完成整个集群的功能。那么自然也需要一套机制控制资源的访问权限保证安全性RBAC就是Kubernetes提供的资源访问控制机制。
RBACRole-Based Access Control基于角色的访问控制的缩写基于角色Role的访问控制是一种基于组织中用户的角色来调节控制对计算机或网络资源的访问的方法。RBAC类似于我们平时做的系统功能权限设计用户绑定角色角色绑定策略策略绑定资源从而达到资源控制的目的。 配置对象
RBAC主要由5个对象组成具体如下
Role
访问角色也是定义访问规则的位置和我们平时系统里的功能权限设计不同这里没有策略部分定义规则的地方直接就在Role里面定义访问规则Role对象是基于命名空间进行配置标明对某个命名空间下对象的访问配置示例
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:namespace: default //定义适用的命名空间name: limited-configmap-access
rules:
- apiGroups: []resources: [configmaps] //访问的资源类型也可以是services、configmapsresourceNames: [configmap-allowed1, configmap-allowed2] // 定义可以访问哪些configmap如果不指定那就是可以访问default命名空间下所有的verbs: [get, list, watch, update] // 定义访问的权限
ClusterRole
ClusterRole也是一种访问角色配置从命名能看出这是一种基于集群范围的配置Role是对某个NameSpace生效而ClusterRole配置是对整个集群生效配置示例
// 为整个集群内的pods创建访问权限apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:name: pod-manager
rules:
- apiGroups: []resources: [pods]verbs: [get, list, create, update, delete]
ServiceAccount
有了角色之后最终是要配置到账户上的这样才好直接关联到具体的资源ServiceAccount是Kubernetes内部提供的身份用于Pod的自动关联并通过RBAC控制访问。其实Role的绑定目标还有User和Group这两个是集群的外部身份不是Kubernetes的内部资源对象所以这里列举上常用的资源对象配置如下
# serviceaccount.yaml
apiVersion: v1
kind: ServiceAccount
metadata:name: configmap-access-sanamespace: default
RoleBinding
角色绑定有了角色和账户现在就需要将两种资源绑定在一起这样账户才有了Role对应的资源访问能力配置如下
# rolebinding-configmap-access.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:name: configmap-access-bindingnamespace: default
subjects:
- kind: ServiceAccountname: configmap-access-sanamespace: default
roleRef:kind: Rolename: limited-configmap-accessapiGroup: rbac.authorization.k8s.io
ClusterRoleBinding
同理ClusterRoleBinding用来绑定集群类型的Role配置如下
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: bind-node-manager
subjects:
- kind: Groupname: admin-groupapiGroup: rbac.authorization.k8s.io
roleRef:kind: ClusterRolename: node-managerapiGroup: rbac.authorization.k8s.io
配置示例
上面已经介绍完了RBAC几个核心的配置资源对象现在以一个具体的示例来做下配置我们定义一个订单业务相关配置的configmap资源对象只希望订单相关的业务pod进行查看和修改而其他的业务pod只能查看。
定义configmap
apiVersion: v1
kind: ConfigMap
metadata:name: order-configmap
data:app.properties: |price100discount0.5
定义查看查看和更新角色
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:namespace: defaultname: order-admin-access
rules:
- apiGroups: []resources: [configmaps]resourceNames: [order-configmap]verbs: [get, list, watch, update, delete]
定义仅查看角色
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:namespace: defaultname: order-read-access
rules:
- apiGroups: []resources: [configmaps]resourceNames: [order-configmap]verbs: [get, list]
定义拥有全部权限的账户
apiVersion: v1
kind: ServiceAccount
metadata:name: order-admin-sanamespace: default
定义只读权限的账户
apiVersion: v1
kind: ServiceAccount
metadata:name: order-read-sanamespace: default
绑定角色
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:name: order-admin-binddingnamespace: default
subjects:
- kind: ServiceAccountname: order-admin-sanamespace: default
roleRef:kind: Rolename: order-admin-accessapiGroup: rbac.authorization.k8s.io
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:name: order-read-binddingnamespace: default
subjects:
- kind: ServiceAccountname: order-read-sanamespace: default
roleRef:kind: Rolename: order-read-accessapiGroup: rbac.authorization.k8s.io
订单业务pod
apiVersion: v1
kind: Pod
metadata:name: order-podnamespace: default
spec:serviceAccountName: order-admin-sacontainers:- name: order-testimage: /test/order
其他业务pod
apiVersion: v1
kind: Pod
metadata:name: other-podnamespace: default
spec:serviceAccountName: order-read-sacontainers:- name: other-testimage: /test/other