Azure Kubernetes - 用于命名空间隔离的 RBAC 角色

Ema*_*ele 4 rbac azure kubernetes azure-aks

我想知道是否可以在 Azure Kubernetes 服务上隔离命名空间。现在,如果我将 rbac 角色赋予我的同事,他们可以看到所有命名空间,我想为部门隔离命名空间,例如数据只能看到数据命名空间,开发人员只能看到 den 命名空间等。

是否可以?

谢谢

Phi*_*elz 6

是的,您必须启用AKS-managed Azure Active Directory, Role-based access control (RBAC)& Azure RBAC 进行 Kubernetes 授权。有 2 个选项:

az aks create \
  -g myResourceGroup \
  -n myManagedCluster \
  --enable-aad \
  --enable-azure-rbac
Run Code Online (Sandbox Code Playgroud)

第一个选项:

---
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>
Run Code Online (Sandbox Code Playgroud)

第二个选项是使用 Azure 自定义角色,如此处所述以及用户 yk1 的此示例:

az role assignment create \
  --role "Azure Kubernetes Service RBAC Reader" \
  --assignee <AAD-ENTITY-ID> \
  --scope $AKS_ID/namespaces/<namespace-name>
Run Code Online (Sandbox Code Playgroud)

注意:所有用户必须是成员Azure Kubernetes Service Cluster User Role才能执行az aks get-credentials

  • 您可以将此示例放在`az role assignment create --role "Azure Kubernetes Service RBAC Reader" --assignee &lt;AAD-ENTITY-ID&gt; --scope $AKS_ID/namespaces/&lt;namespace-name&gt;` (2认同)