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

问题描述 投票:0回答:2

我想知道是否可以在 Azure Kubernetes 服务上隔离命名空间。现在,如果我将 rbac 角色授予我的同事,他们可以看到所有命名空间,我想隔离部门的命名空间,例如data 只能看到 data 命名空间,dev 只能看到 den 命名空间等..

可能吗?

谢谢

azure kubernetes azure-aks rbac
2个回答
5
投票

是的,您必须启用

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

第一个选项:

---
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>

注意:所有用户必须是

Azure Kubernetes Service Cluster User Role
的成员才能执行
az aks get-credentials


0
投票

当我运行“kubectl get ns”等 kubectl 命令时,我按照上面选项 2 的步骤进行操作,在执行了“az 角色分配创建...”之后,执行了“aks get-credentials...”,我收到此消息:“要登录,请使用 Web 浏览器打开页面 https://microsoft.com/devicelogin 并输入代码 ABCDEFG 进行身份验证”。

当我继续使用代码进行设备登录时,我从身份验证浏览器收到以下错误:“您的登录已成功,但您的管理员需要管理请求访问的设备才能访问此资源。”

这可能只是我们公司的安全政策,但我想知道为什么它会生效?如果我使用我的完整管理员(AKS 所有者)帐户,则执行 kubectl 没有问题。但是,我尝试让 Azure RBAC 与 AKS 配合使用,以限制仅普通用户对选定命名空间的可见性。有什么建议么?谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.