【发布时间】:2021-12-11 14:24:50
【问题描述】:
我想知道是否可以在 Azure Kubernetes 服务上隔离命名空间。现在,如果我将 rbac 角色分配给我的同事,他们可以看到所有命名空间,我想为部门隔离命名空间,例如data 只能看到 data 命名空间,dev 只能看到 den 命名空间等。
有可能吗?
谢谢
【问题讨论】:
标签: azure kubernetes azure-aks rbac
我想知道是否可以在 Azure Kubernetes 服务上隔离命名空间。现在,如果我将 rbac 角色分配给我的同事,他们可以看到所有命名空间,我想为部门隔离命名空间,例如data 只能看到 data 命名空间,dev 只能看到 den 命名空间等。
有可能吗?
谢谢
【问题讨论】:
标签: azure kubernetes azure-aks rbac
是的,您必须启用 AKS-managed Azure Active Directory、Role-based access control (RBAC) 和 Azure RBAC for Kubernetes Authorization。有两种选择:
az aks create \
-g myResourceGroup \
-n myManagedCluster \
--enable-aad \
--enable-azure-rbac
第一个选项:
---
apiVersion: v1
kind: Namespace
metadata:
name: data
labels:
kubernetes.io/metadata.name: data
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: data-view-access
namespace: data
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: view
subjects:
- kind: Group
namespace: data
name: <GROUP_OBJECT_ID>
第二个选项是按照here 的说明使用 Azure 自定义角色,以及用户 yk1 的示例:
az role assignment create \
--role "Azure Kubernetes Service RBAC Reader" \
--assignee <AAD-ENTITY-ID> \
--scope $AKS_ID/namespaces/<namespace-name>
注意:所有用户必须是Azure Kubernetes Service Cluster User Role 的成员才能执行az aks get-credentials
【讨论】:
az role assignment create --role "Azure Kubernetes Service RBAC Reader" --assignee <AAD-ENTITY-ID> --scope $AKS_ID/namespaces/<namespace-name>
Azure Kubernetes Service Cluster User Role 和 Azure Kubernetes Service RBAC Reader 的所有命名空间,或者如果您使用的是 Option1:您可以使用 ClusterRoleBinding 而不是 RoleBinding 作为 ClusterRole view。您能否将答案标记为正确以帮助其他有相同问题的用户?