我为什么要使用托管身份?

Why should I use managed identity?

使用托管身份访问 Azure 服务有什么好处?我经常看到提到的是,多亏了这一点,您才不会向配置文件提交秘密。但我正在使用 ARM 模板部署所有资源,而且我的配置文件中也没有任何秘密。连接字符串等设置是在部署期间设置的。我在这里看到的唯一区别是,使用托管身份,即使有人访问 Azure 门户,他也无法获得我的数据库的登录名和密码。但是此人已经可以访问我的订阅。那么这是一个问题吗?

Managed Identities 还给我什么?

你只是看到了幸福的道路。例如,如果攻击者利用您应用中的漏洞并获取连接字符串怎么办?如果您使用托管身份,he/she 将无法模拟您的服务。

不仅是存储或不存储的配置秘密,还涉及需要存储和管理多少秘密。
当您创建托管身份时,特别是 system-assigned 托管身份,您团队中的任何人都不必管理甚至无法访问与应用程序身份相关的秘密。身份已颁发,您可以为其提供对各种资源(如密钥保管库)的访问权限。没有其他人能够使用该应用程序的身份来利用该访问权限。

如果您将托管服务身份与 Key Vault 之类的东西结合使用,您还可以更轻松地限制有权访问配置机密的人数。您可以仅向少数人提供对保管库的访问权限,并仍然允许其他人 view/edit 该应用程序及其非机密配置。

为什么不在连接字符串中使用加密。托管 ID 位于机器上,如果有人可以访问机器,则可能会受到损害。

  • Secret/key 管理。轮换秘密是最佳实践。这是 使用托管身份自动完成。如果更改密码会很复杂 manually/scripting。

  • Secret/key库存。可以更轻松地查看哪些应用具有哪些功能 权限。

  • 正在撤消访问权限。可以很容易地撤销某个应用程序的访问权限。 可能会害怕通过更新密码来撤销访问权限。

  • 粒度。授予连接字符串对存储帐户的访问权限 将授予对该存储帐户中所有内容的完全访问权限。通过使用 MI/RBAC 在资源上可以设置例如读取权限 一个特定的 blob。