如何从不同订阅中的资源分配托管标识

How to assign managed identity from resources in different subscriptons

场景如下:

我们在三个不同的订阅中有三个虚拟机,它们需要连接到常见服务,例如带有 MI 的存储帐户。在这种情况下,我是否需要创建三个不同的 MI,因为源在三个不同的订阅中,或者我可以使用用户分配的 MI 并使用相同的 MI 与三个 VM 连接存储(1:1 关系),即使它们在不同的Azure 中的订阅者?

或者我们必须使用三个不同的 MI 吗?

can i use user assigned MI and use the same MI with three VM's to connect with storage (1:1 relationship) even if they are in different subs in Azure?

是的,你可以。

本质上,用户分配的身份是您Azure AD租户中的服务主体,您可以将其添加到不同订阅中的VM,要求是订阅需要位于同一个AAD租户中。

将用户分配的身份添加到不同订阅中的资源后,显示如下。

如果您想使用虚拟机的用户分配标识访问存储,可以参考此doc, this doc applies to the system-assigned identity, for user-assigned identity, you need to specify the client_id of the user-assigned identity when you get the token, refer to this doc