作为发布者,如何管理客户租户Key Vault中的密钥与证书?
问题描述
在Azure托管应用的**客户租户托管资源组(MRG)**中部署了Key Vault,发布者租户的用户通过托管应用中心查看时遇到以下限制:
- 概览边栏提示:当前选择的目录(发布者租户MyCompany)与Key Vault所属目录(客户租户)不同,部分操作被禁用。
- 密钥/机密/证书边栏提示:数据平面连接失败,请刷新重试。
已知配置:
- 托管应用设置为客户无法修改MRG,完全由发布者管理。
- 托管应用产品技术配置的授权部分已将安全组
SG-Managed-App-Admins设为所有者权限。 - 当前用户是
SG-Managed-App-Admins成员,可正常修改MRG内其他资源。 - 已为
SG-Managed-App-Admins分配从Key Vault Secrets User到Key Vault Administrator的RBAC角色。
需求:发布者需在密钥过期时更新该Key Vault中的密钥。
解决方案
1. 使用Azure CLI/PowerShell跨租户操作
由于门户受目录差异限制,可通过命令行工具直接指定客户租户上下文操作Key Vault:
Azure CLI示例
# 切换到客户租户与订阅上下文 az account set --subscription <客户订阅ID> --tenant <客户租户ID> # 创建新密钥版本(替换占位符) az keyvault key create --name <密钥名称> --vault-name <Key Vault名称> --kty RSA --size 2048
若需导入现有密钥材料更新版本,可使用az keyvault key import命令。
PowerShell示例
# 连接到客户租户 Connect-AzAccount -Tenant <客户租户ID> -Subscription <客户订阅ID> # 创建新密钥版本 Add-AzKeyVaultKey -VaultName <Key Vault名称> -Name <密钥名称> -Destination Software
2. 集成自动化密钥更新逻辑
在托管应用中嵌入自动化流程,实现密钥自动轮换:
- 用Azure Functions或逻辑应用定期检查密钥过期时间,触发新密钥版本生成。
- 确保自动化服务主体在客户租户的Key Vault上拥有对应数据平面权限(如Key Vault Crypto Officer)。
- 托管应用部署时,将该服务主体的权限配置到MRG的Key Vault中。
3. 通过Azure Lighthouse跨租户管理
将客户租户注册到Azure Lighthouse,实现发布者租户用户直接管理客户资源:
- 在客户租户中部署Azure Lighthouse授权模板,将
SG-Managed-App-Admins安全组授予Key Vault所在订阅/资源组的对应权限。 - 完成后,发布者租户用户可在Azure门户「我的客户」板块切换到客户租户上下文,直接操作Key Vault,规避目录限制。
关键注意事项
- 操作身份(用户/服务主体)必须在客户租户的Key Vault上同时拥有控制平面权限(如MRG所有者)和数据平面权限(如Key Vault Administrator)。
- Key Vault的数据平面访问严格绑定到其所属的客户租户目录,仅依赖发布者租户权限无法突破限制。
内容的提问来源于stack exchange,提问作者renrutsirhc
相关产品推荐
相关产品推荐

