使用Azure自定义RBAC限制生产资源访问的方法及通配符权限咨询
Azure RBAC限制生产资源访问的实用方案
一、通配符能不能实现生产资源的访问限制?
Azure RBAC里没法直接用通配符来排除特定资源。RBAC的权限逻辑是“允许优先”,通配符(比如*)只能用来匹配所有符合条件的资源,做不到“除了Prod之外”的排除。不过可以结合**拒绝分配(Deny Assignment)**加通配符间接实现,但得小心——拒绝权限会盖过允许权限,容易误封合法访问,一般不推荐这种方式。
二、给非生产资源全权限的几种方法
1. 按资源组或标签分配权限
- 如果Dev、Test、Prod各自在独立资源组里,直接把自定义RBAC角色分配到Dev和Test的资源组就行,Prod那边不分配,简单直接。
- 要是资源分散,给所有非Prod资源打统一标签(比如
Env: Non-Prod),分配角色的时候加个标签条件,只给带这个标签的资源开权限。操作时在角色分配的“条件”里写@Resource[Microsoft.Resources/tags/Env] StringEquals 'Non-Prod'。
2. 用拒绝分配排除Prod
先把自定义角色分配到整个订阅,然后针对Prod资源组/单个Prod资源创建拒绝分配,拒绝该角色的所有权限。注意拒绝分配不能手动直接创建,得通过Azure Policy或者特定系统场景触发,适合需要全局权限但排除特定资源的情况。
3. 借助管理组划分权限
如果把Non-Prod(Dev+Test)和Prod分到不同的管理组,直接把自定义角色分配到Non-Prod管理组,组里的所有资源都会继承权限,Prod管理组的资源自动不受影响,适合多环境层级清晰的架构。
4. Azure Policy做补充限制
写个Azure Policy规则,比如当资源标签是Env: Prod时,拒绝非授权角色的写入/读取操作。这算是RBAC的补充,能进一步锁死Prod资源的访问权限。
内容的提问来源于stack exchange,提问作者Vinayak S B
相关产品推荐
相关产品推荐

