我有一个在Azure (AKS)上运行的Kubernetes集群,前面是NGINX in。
我有点搞不懂如何为多个用户分离对不同资源的访问。
用户应该在应用程序上工作。这就是为什么如果他们能够在豆荚中读取日志、描述和执行一些命令是很好的。但是他们不应该调整一些外来的资源。
微软提供了一个非常好的教程,如何在AKS:https://learn.microsoft.com/en-us/azure/aks/azure-ad-rbac上处理类似的情况。
有一个示例说明如何将权限添加到整个命名空间中的组。
我现在的问题是,如何将组的权限添加到命名空间中的特定重新源。
例如,我有以下资源:
ressource type namespace
ingress-controller pod nginx-ingress
ingress-service service nginx-ingress
ingress-nginx ingress nginx-ingress
app1-service service nginx-ingress
app1 pod nginx-ingress
app2-service service nginx-ingress
app2 pod nginx-ingress据我理解,我需要在同一个名称空间中部署所有这些请求,否则入口无法转发请求。但是,我如何为group1和app1 -服务授予读、写、执行权限,并将其读给其他人呢?
发布于 2020-03-20 18:22:57
可以使用resourceNames字段在RBAC角色中按名称指定特定资源。
创建一个允许完全访问app1和app1-service的角色
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: app1-admin
rules:
- apiGroups:
- ""
resourceNames:
- app1
- app1-service
resources:
- pods
- pods/exec
- service
verbs:
- get
- list
- watch
- create创建允许对所有其他Pods和服务进行读取访问的角色:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: read-all
rules:
- apiGroups:
- ""
resources:
- pods
- service
verbs:
- get
- list
- watch创建两个RoleBindings,将这两个角色绑定到group1组:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: app1-admin-group1
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: app1-admin
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: Group
name: group1apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: read-all-group1
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: read-all
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: Group
name: group1现在,group1的成员应该可以完全访问Pod app1和服务app1-service,但只能读取对所有其他资源的访问。
发布于 2020-03-20 18:02:39
我认为这一点都不正确,您可以在不同的名称空间中拥有入口资源。此外,您还可以引用rbac中的资源名称。
https://kubernetes.io/docs/reference/access-authn-authz/rbac/#referring-to-resources
https://stackoverflow.com/questions/60779307
复制相似问题