【问题标题】:Access Key Vault on Azure Service Fabric app using Azure Active Directory on different tenant使用不同租户上的 Azure Active Directory 访问 Azure Service Fabric 应用程序上的 Key Vault
【发布时间】:2021-07-22 18:33:33
【问题描述】:

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

想试试下面的设置:

  1. tenantA 中的 Service Fabric 集群和 tenantB 中的 Azure 密钥库之间建立握手是通过使用 Azure AD 应用程序属于 租户B

  2. 将属于 tenantB 的 Azure AD 应用程序 ID 配置到 tenantA

    中的 Azure Service Fabric 应用程序配置
  3. 将 Azure AD 应用程序 ID 添加到 tenantB

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

通过此设置,Azure Service Fabric 集群和 Azure Key Vault 之间会发生握手吗?

(或)

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

【问题讨论】:

    标签: azure azure-active-directory azure-service-fabric azure-keyvault azure-security


    【解决方案1】:

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

    【讨论】:

    • @Matt Small,现在我们说对了。谢谢。你能解释一下我在租户 A 上运行的应用程序如何具有可见性/识别某些天蓝色 AD 应用程序属于租户 B 吗?
    • 创建客户端的代码需要与密钥保管库位于同一租户的服务主体。代码可以在任何地方执行。当代码创建客户端时,它会从 Key Vault 的租户获取身份验证令牌并使用它来获取机密。一旦获得该秘密,应用程序就可以在任何地方使用它。如果不是这样,则本地应用程序将无法调用 Key Vault。
    • @Matt Small,因此为了获取身份验证令牌,客户端调用 AAD OAuth 端点并提供应用程序 ID 和相应的秘密/证书。然后,AAD OAuth 端点有责任 1) 验证 Azure 上任何租户之间是否存在应用程序 ID,2) 使用密钥/证书进行验证,然后向调用应用程序颁发访问令牌,无论调用应用程序属于哪个租户。这个流程正确吗?
    • 是的,这是正确的。 AAD OAuth 端点可以跨任何租户验证服务主体(注册的应用程序)。但是,当它颁发令牌时,令牌必须与 Key Vault 中的访问策略中的身份相匹配。这意味着该身份与 Key Vault 位于同一租户中。
    【解决方案2】:

    通过此设置,Azure Service Fabric 集群和 Azure Key Vault 之间会发生握手吗?

    这不行,当你将tenantB AD App Application ID添加到tenantB中Azure key vault的访问策略时,本质上是你将AD App对应的服务主体添加到keyvault中。服务主体是一个租户中 AD 应用程序的特定实例,它只适用于它所在的租户。

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

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

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

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

    【讨论】:

    • 任何方式我都可以在同一个租户中拥有 Azure AD 应用程序和 KeyVault,但在另一个租户上拥有 Azure SF 集群,并且仍然连接 Azure SF 集群和 KeyVault 以获得应用程序机密?
    • @Joy Wang,这个example 说在其他租户上创建的服务主体可以针对家庭租户密钥库进行配置,我说对了吗?
    • @ZackieKhan 也许我误解了你的意思。 1.如果你在SF集群中使用租户ID、客户端ID和秘密连接Azure keyvault,我认为它可以在另一个租户中。 2.不,服务主体只适用于它所在的租户,如果它位于消费者租户中,它将不适用于家庭租户。
    • @ZackieKhan 你能分享你提到的关于在 SF 集群中连接 keyvault 的文档吗?
    • 我指的是“docs.microsoft.com/en-us/azure/active-directory/develop/…” 如流程图中所述,您能否解释一下 HR App 的 contoso/fabrikam 服务主体如何连接到 Adatum 租户的 HR APP 密钥?
    猜你喜欢
    • 2019-03-13
    • 2020-01-04
    • 2017-09-24
    • 2020-05-08
    • 1970-01-01
    • 2016-12-20
    • 1970-01-01
    • 2022-12-22
    • 2021-10-24
    相关资源
    最近更新 更多