Azure管理身份为何取代存储的证书以及如何在2026年使用

2026年9月5日2 次浏览来源:Dev.to阅读原文

每个Azure项目最终都有相同的对话.

我们在哪里储存连接字符串?

有人提出一个环境变量,还有人指出,环境变量最终会出现在部署管道中,在多克作曲文件中,在Terraform状态中,偶尔也会发生意外的犯事.

秘密管理者被提出,而秘密管理者需要自己的证书才能访问这些秘密.

问题在重演。

管理身份并不能通过再增加一层来解决秘密管理者的问题.

它从方程式中完全去除了Azure内部运行的工作量的证书,因此应用程序不以存储的证书认证,而是以自身的身份认证,使用Azure自动管理的身份.

管理身份到底能做什么 当您在 Azure 资源上启用一个管理身份时, Azure 在 Microsoft Entra ID 中创建了一个与该资源寿命周期相联的身份.

资源然后可以请求 Azure Central 元数据服务端点的短寿命符,它只能从 Azure 基础设施内部得到,这些符号是资源用来认证其他 Azure 服务的.

没有可存储的,没有可手动旋转的,也没有可以泄露到寄存器中的,因为证书从不存在在您代码库或配置的任何地方的静态字符串.

来自微软文档的关键属性是准确的:被管理的身份给运行在Azure资源访问其它资源上的代码,而不需要开发人员直接处理或将证书放入代码.

强调"代码运行在Azure资源"很重要,因为"管理身份"只在Azure内部工作.

本地开发机器无法到达Straits元数据服务端点,这意味着本地开发流量仍然需要一个替代认证机制,一般情况下或只为开发配置的服务主机.

系统指定 vs 用户指定 管理身份有两种类型,微软目前在其官方最佳做法文档中更新的建议是,用户指定身份在范围更广的假想中效率更高.

直接在资源上创建系统指定身份,其生命周期与该资源相联,因此当资源被删除时,身份也被删除.

这听起来很方便,但造成了规模化的管理问题:每个资源都有自己的身份,每个身份都需要自己的角色任务,如果有20个App服务,所有人都需要读取同一存储账户的访问权限,则最终会管理20个独立身份,其中20个独立的角色任务必须保持同步.

用户指定身份在Azure作为独立资源创建,可以同时被分配到多个资源,其生命周期独立于任何特定资源.

如果您删除 App 服务, 身份会持续 。

你可以预先定义一个用户指定的身份可以访问什么,得到拥有您访问控制政策的人的批准,然后在每次不经过新的批准周期的情况下分配到新的资源.

微软的命名建议明确了操作区别:名称身份在他们的许可设定后而不是在消费者之后.

被命名的身份比任何特定的工作量活得更久,其目的在审计日志中仍可读取,而被命名的身份则无法传达其所能做的事情,其权限往往会随着团队的变化而随时间而漂移.

大多数开发者在"管理身份"(Turn on Control Edition)上犯了安全错误并移除了被硬编码的证书,这是正确的第一步,但停止的地方是大多数团队留下了显著空白的地方.

管理下的身份并不能保证工作量的安全。

他们使它没有证书, 和区别很重要, 因为身份仍然持有 任何你已经给予它

分享