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

3
我想知道在Azure Kubernetes服务上是否有可能隔离命名空间。现在,如果我给我的同事RBAC角色,他们可以看到所有的命名空间,我希望将命名空间分隔为部门,例如数据只能看到数据命名空间,开发只能看到dev命名空间等等。
这是可能的吗?
谢谢。
1个回答

5

是的,您需要启用AKS托管的Azure活动目录基于角色的访问控制(RBAC)Kubernetes授权的Azure RBAC。有两个选项:

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>

第二个选项是使用Azure自定义角色,如此处所述,并且可以参考用户yk1的示例: 这里
az role assignment create \
  --role "Azure Kubernetes Service RBAC Reader" \
  --assignee <AAD-ENTITY-ID> \
  --scope $AKS_ID/namespaces/<namespace-name>

注意:为了执行az aks get-credentials命令,所有用户必须是Azure Kubernetes Service集群用户角色的成员。


2
您可以将此示例放在其中: az role assignment create --role "Azure Kubernetes Service RBAC Reader" --assignee <AAD-ENTITY-ID> --scope $AKS_ID/namespaces/<namespace-name> - YK1
1
非常感谢,我已经添加了你的示例! - Philip Welz
大家好,抱歉耽擱了。感謝提供範例。有了這個命令,我可以區分命名空間,因此如果我為所有命名空間創建一些 Azure AD 群組,例如:rbac_namespace1、rbac_namespace2 等等... 我可以使用該命令將群組設置為相關的命名空間嗎?我需要授予哪些角色來管理命名空間的所有方面? - Emanuele
谢谢Phil,我认为我更喜欢通过RBAC进行管理。那么在此之后,我可以将用户从以下角色中删除吗?Azure Kubernetes服务集群管理员角色、Azure Kubernetes服务集群用户角色、Azure Kubernetes服务贡献者角色?现在我们必须将用户放入所有这些角色中,因为如果没有它,用户什么也做不了。我今天会进行测试并让您知道结果。 - Emanuele
嗨,我通过 Philip 描述的第一个选项解决了我的问题。 - Emanuele
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接