多租户应用仅访问Azure Key Vault密钥而非机密的权限配置问询
解决方案:用Key Vault Crypto Officer角色实现仅密钥访问需求
完全可以通过你提到的Key Vault Crypto Officer角色(ID: 14b46e9e-c2b7-41b4-b07b-48a6ebf60603)实现你的需求,以下是具体说明和配置方式:
角色权限匹配性
这个内置角色的权限仅覆盖Key Vault密钥的管理与读取操作,完全不包含机密(Secrets)的任何访问权限,刚好契合你“读取所有授权租户Key Vault密钥、无法访问机密”的核心要求。
两种权限模式的配置方式
1. 应用权限模式(适合后台服务/无人值守场景)
- 要求每个授权租户的管理员,在其租户内的目标Key Vault资源上,将你的多租户应用主体(Application ID)分配为
Key Vault Crypto Officer角色。 - 配置完成后,你的应用可以以自身身份发起密钥访问请求,无需依赖用户上下文,且始终无法访问机密。
2. 委托权限模式(适合用户交互场景)
- 保留应用的
user_impersonation委托权限即可,但需确保使用应用的用户在其租户内仅被分配Key Vault Crypto Officer角色(无任何机密相关角色权限)。 - 应用通过代理用户身份访问Key Vault时,会继承用户的权限范围,自然无法读取机密。
关键注意事项
- 确保Key Vault仅配置
Key Vault Crypto Officer角色,避免同时分配其他包含机密权限的角色(如Key Vault Secrets User)。 - 多租户场景下,每个租户的管理员需独立完成角色分配操作,因为资源权限是租户级别的,无法跨租户自动授权。
- 配置后务必验证:调用密钥API(如
GET /keys/{key-name})应正常返回,调用机密API(如GET /secrets/{secret-name})应返回403 Forbidden。
内容的提问来源于stack exchange,提问作者Noam
相关产品推荐
相关产品推荐

