You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Azure RBAC限制AKS dev命名空间内指定2个Secret的访问?

如何通过Azure RBAC限制AKS中指定Secret的访问权限

在已启用Azure RBAC、未使用Kubernetes RBAC的AKS集群中,要限制dev命名空间内2个特定Secret的访问权限,可通过以下两种精准控制方案实现:

方案一:使用Azure RBAC拒绝分配(快速限制)

拒绝分配的权限优先级高于所有允许权限,适合快速阻止特定用户/组访问目标Secret:

  1. 获取目标Secret的Azure资源ID
    执行Azure CLI命令,替换占位符获取单个Secret的资源ID:

    az resource list --resource-group <你的AKS资源组名> \
      --namespace Microsoft.ContainerService \
      --resource-type managedClusters/namespaces/secrets \
      --query "[?name=='<受限Secret名称>'].id" -o tsv
    

    重复执行获取第二个受限Secret的资源ID。

  2. 创建拒绝分配
    针对需要限制的用户/组,创建拒绝其读取目标Secret的分配:

    az role assignment create --assignee <用户/组的主体ID或UPN> \
      --role "Kubernetes Secret Reader" \
      --scope <第一步获取的Secret资源ID> \
      --deny
    

    对第二个受限Secret重复此命令。

方案二:自定义Azure角色(细粒度权限管控)

如果需要更灵活的权限划分(比如允许大部分用户访问8个Secret,仅特定用户访问2个受限Secret),可通过自定义角色实现:

步骤1:创建排除受限Secret的自定义角色

创建一个JSON文件(例如dev-secrets-reader-exclude.json),内容如下,替换占位符:

{
  "Name": "Dev Secrets Reader (Exclude Restricted)",
  "IsCustom": true,
  "Description": "允许读取dev命名空间内除指定2个Secret外的所有Secret",
  "Actions": [
    "Microsoft.ContainerService/managedClusters/namespaces/secrets/read"
  ],
  "NotActions": [],
  "AssignableScopes": [
    "/subscriptions/<你的订阅ID>/resourceGroups/<你的AKS资源组名>/providers/Microsoft.ContainerService/managedClusters/<你的AKS集群名>/namespaces/dev"
  ],
  "Condition": "!(Microsoft.ContainerService/managedClusters/namespaces/secrets/name in ['<受限Secret1名称>', '<受限Secret2名称>'])"
}

执行命令创建自定义角色:

az role definition create --role-definition dev-secrets-reader-exclude.json

步骤2:分配自定义角色给普通用户

将该角色分配给需要访问大部分Secret的用户/组:

az role assignment create --assignee <用户/组的主体ID或UPN> \
  --role "Dev Secrets Reader (Exclude Restricted)" \
  --scope "/subscriptions/<你的订阅ID>/resourceGroups/<你的AKS资源组名>/providers/Microsoft.ContainerService/managedClusters/<你的AKS集群名>/namespaces/dev"

步骤3:单独授权受限Secret的访问权限

对需要访问2个受限Secret的特定用户,分配内置的Kubernetes Secret Reader角色到单个Secret:

az role assignment create --assignee <授权用户的主体ID或UPN> \
  --role "Kubernetes Secret Reader" \
  --scope <受限Secret1的资源ID>

对第二个受限Secret重复此命令。

权限验证

使用被限制用户的身份登录后,执行kubectl命令验证权限:

# 尝试访问受限Secret,应返回权限不足错误
kubectl get secret <受限Secret名称> -n dev

# 尝试访问普通Secret,应能正常获取
kubectl get secret <普通Secret名称> -n dev

内容的提问来源于stack exchange,提问作者Arockia Daniel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 06:53:20