除微软公共注册表与Azure Lighthouse外,跨租户共享ACR中Bicep模块的方案?
跨租户共享ACR中Bicep模块的替代方法
方法1:跨租户服务主体访问授权
- 在源租户的Azure容器注册表(ACR)中创建一个服务主体,为其分配
AcrPull角色(遵循最小权限原则,仅授予模块拉取权限)。 - 将服务主体的客户端ID、客户端密钥及源ACR名称共享给目标租户的相关用户或应用。
- 目标租户侧通过以下命令登录源ACR:
az acr login --name <源ACR名称> --username <服务主体客户端ID> --password <服务主体客户端密钥> - Bicep文件中直接引用源ACR的私有模块路径,示例:
module storageModule 'br:my-source-acr.azurecr.io/modules/storage:v1.0.0' = { name: 'storage-deployment' params: { storageName: 'mystorageaccount' } }
方法2:自动化同步模块至目标租户ACR
- 在目标租户中新建Azure容器注册表,借助Azure Pipelines、GitHub Actions或Azure Automation等工具,定期将源ACR的Bicep模块同步到目标ACR。
- 用Azure CLI的
az acr import命令完成单模块同步,示例:az acr import --name <目标ACR名称> --source <源ACR名称>.azurecr.io/modules/storage:v1.0.0 --image modules/storage:v1.0.0 - 将同步命令封装为定时任务,确保目标ACR模块与源ACR保持一致,目标租户无需跨租户访问,直接使用自身ACR内的模块即可。
方法3:Azure Private Link + AD B2B私有访问方案
- 在源租户中为ACR配置Azure Private Link,启用私有端点连接功能。
- 在目标租户的虚拟网络中创建私有端点,提交连接请求至源ACR的Private Link资源(需源租户批准)。
- 通过Azure AD B2B邀请目标租户的用户或服务主体加入源租户AD,并为其分配ACR的
AcrPull角色。 - 目标租户侧资源可通过私有网络访问源ACR,无需暴露公网访问,同时实现跨租户权限管控。
内容的提问来源于stack exchange,提问作者Lucky
相关产品推荐
相关产品推荐

