簡體   English   中英

使用 NGINX Ingress 進行 Kubernetes 角色管理

[英]Kubernetes Role Managment with NGINX Ingress

我有一個在 Azure (AKS) 上運行的 Kubernetes 集群,前面有 NGINX Ingress。

我有點困惑如何為多個用戶單獨訪問不同的資源。

用戶應該在應用程序上工作。 這就是為什么如果他們可以讀取日志、描述並在 pod 內執行一些命令就可以了。 但是他們永遠不應該調整一些 Ingress 資源。

Microsoft 提供了一個非常好的教程,如何在 AKS 上處理此類案例: https : //docs.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

根據我的理解,我需要將它們全部部署在同一個命名空間中,否則入口無法轉發請求。 但是我如何為 app1 和 app1-service 授予 group1 的讀取、寫入、執行權限,並讀取其余的權限?

您可以使用resourceNames字段在 RBAC 角色中按名稱指定特定資源。

創建一個允許完全訪問app1app1-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

創建允許讀取所有其他 Pod 和服務的角色:

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: group1
apiVersion: 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和 Service app1-service完全訪問權限,但只有對所有其他資源的讀取訪問權限。

我完全不認為那是真的,您可以在不同的命名空間中擁有入口資源。 此外,您實際上可以在 rbac 中引用資源名稱。

https://kubernetes.io/docs/reference/access-authn-authz/rbac/#referring-to-resources

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM