azure - 订阅移动后更新关联的 Azure AD 租户的 key 保管库,而无需同步部署所有依赖的应用程序

标签 azure azure-active-directory azure-storage azure-keyvault

我正在将订阅从 Azure AD 的一个租户移至另一个租户。我已查看并遵循 this doc 中概述的流程。一切安好。下一步是按照 this doc 更改已移动订阅的 Key Vault 租户 ID 。这就是我无法找到一种方法来做到这一点,即不涉及更改和部署依赖于 Key Vault 的多个应用程序以及移动。理想情况下,我希望将第二个租户(新租户)与 key 保管库关联,在新租户中注册应用程序,并让这些应用程序根据自己的发布周期更新配置,一旦所有应用程序更新为使用新的 ClientID/Secret 在新的 Azure AD 租户中生成,我将删除旧的租户关联。但是, key 保管库在任何给定时间只能与一个租户关联。可以使用什么策略来实现平稳过渡,而不强制一次性同步部署所有依赖应用程序?似乎唯一的解决方案是创建一个与新 AD 租户关联的新 key 保管库,注册应用程序并颁发新的 ClientID/Secret,并让它们按照自己的部署计划上线。最终可以删除旧的 key 保管库。这似乎是一个相当麻烦的方法。还有其他办法吗?

为了让事情变得更加复杂,存储帐户 key 配置为 managed by key vault并且所有应用程序都使用 key vault to get access to storage而不是直接使用存储帐户 key 。此处存储帐户也只能由单个 key 保管库链接和管理。

Only a single Key Vault object should manage storage account keys. Don't allow key management from multiple objects.

这意味着,除非存储 key 保管库链接的更新与使用此类存储的所有应用程序同步并部署,否则即使创建新 key 保管库并迁移所有应用程序以使用这些 key 保管库的方法也将无法工作。其中一些应用程序由不同时区的不同团队管理,因此同步部署相当困难,而且如果任何应用程序部署要回滚,它要么会失去对存储帐户的访问权限,要么所有应用程序都必须回滚。

虽然订阅移动到不同的 Azure AD 租户的情况可能并不常见,但我确信它已经完成,这就是为什么我希望获得一些关于如何执行此操作而无需执行此操作的指导所有依赖 Key Vault 的应用程序的同步部署。

更新1

事实证明,在移动订阅后, key 保管库访问处于非常困惑的状态。旧租户的用户甚至看不到 Key Vault,因为没有订阅,而只要 Key Vault 的租户仍然是旧的,新租户的用户就无法执行任何操作(看不到 key 、 secret 、证书或更新访问策略) 。如果 key 保管库更新到新租户,用户仍然看不到现有 key 、 secret 和证书。他们确实有权更新访问策略,但现有的 key 、 secret 和证书甚至无法从门户中查看。 Powershell 可以列出/查看这些,但无法更新任何值!所以那里也存在差异。 Key Vault 团队的人员可以确认这些吗?或者租户的举动中应该有一个大红色警告,表明这将使对任何现有 key 、 secret 和证书的访问无效。

最佳答案

让 KeyVault 移动租户会保留旧租户值,以便现有访问策略不会失败。但是,当租户值更新为新租户时,旧的访问策略将失效,因为新租户中不存在这些身份,必须使用新身份重新创建它们。这是设计使然。虽然不是官方文档,但我不久前在博客上谈到了这一点:

https://azidentity.azurewebsites.net/post/2018/05/16/azure-key-vault-known-portal-issues-the-directory-currently-selected-differs-from-this-key-vault-s-directory

关于azure - 订阅移动后更新关联的 Azure AD 租户的 key 保管库,而无需同步部署所有依赖的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59873354/

相关文章:

sql-server - 获取 Azure SQL 数据库上所有数据库的平均 DTU

azure - 将 AAD 应用程序添加为安全组的成员

azure - 将 azure 中的存储帐户防火墙中的跨租户子网列入白名单

azure - 如何锁定 Azure 存储表中的项目以一次仅允许一个 Azure 函数访问其数据

azure-devops - 如何从发布任务修改 Azure DevOps 发布定义变量?

azure - 将 Visual Studio 连接到 Azure 时出现问题。目标机器拒绝连接?

azure - 如何将分支策略与Azure Repos中的工作项连接?

iis-7 - URL 重写模块、Azure 和 web.config

c# - Azure 应用程序注册 - C# 应用程序的 SQL Server 权限

c# - 将文件批量上传到 Azure 的最快方法 (C#)