使用不同租户上的 Azure Active Directory 访问 Azure Service Fabric 应用程序上的 Key Vault

Access Key Vault on Azure Service Fabric app using Azure Active Directory on different tenant

我在 tenantA 中有 Azure 服务结构集群,它需要连接到 tenantB[= 中的 Azure 密钥保管库45=] 加载其上托管的应用程序所需的一些连接字符串

尝试以下设置的想法:

  1. tenantA 中的服务结构集群和 tenantB[=43 中的 Azure 密钥保管库之间建立握手=] 是通过使用属于 tenantB.

    的 Azure AD 应用程序
  2. 将属于tenantB的Azure AD应用程序ID配置到[=31=中的Azure服务结构应用程序配置]租户A

  3. 将 Azure AD 应用程序 ID 添加到 tenantB

    中 Azure 密钥保管库的访问策略

使用此设置,Azure 服务结构集群和 Azure 密钥保管库之间会发生握手吗?

(或)

Azure Service Fabric 集群、Azure Key Vault 和 Azure AD 应用程序必须在同一个租户中?

With this setup, will handshake between Azure service fabric cluster and Azure key vault happen?

不行,当你在tenantB的Azure key vault的access policy中添加tenantB AD App Application ID时,实质上是将AD App对应的service principal添加到keyvault中。服务主体是一个租户中AD应用程序的特定实例,它仅适用于它所在的租户。

即使你通过admin consent URL将tenantB AD App授权给tenantA,它也只是在tenantA中生成一个新的服务主体(企业应用程序),这与你在keyvault中添加的对象不同,一个AD 应用与其对应的服务主体具有 1:many 关系。

Azure service fabric cluster, Azure key vault & Azure AD application have to be in same tenant?

不完全是,但至少service fabric集群和key vault需要在同一个租户,AD App可以在另一个租户,但应该是一个multi-tenant app,然后你需要如上所述同意 keyvault 和 service fabric 集群的租户,然后将新生成的服务主体添加到访问策略中,然后再在 service fabric 集群中使用它。如果你不是很熟悉Azure AD,它会有点复杂,所以我建议你在同一个租户中使用它们。

有关 AD 应用程序和服务主体之间关系的更多详细信息,请参阅此 link

只要用于访问 Key Vault 的应用程序 ID 与 Key Vault 在同一个租户中,应用程序就可以从任何地方运行。应用程序(具有应用程序 ID)将从其自己的租户获取访问令牌,然后使用它来访问 Key Vault。使用应用程序 ID 和密码时,执行代码的环境可以具有来自多个租户的身份。