安全应用程序模型框架

Microsoft引入了一个安全、可缩放的框架,用于通过 Microsoft Azure 多重身份验证(MFA)体系结构对云解决方案提供商(CSP)合作伙伴和控制面板供应商(CPV)进行身份验证。 CSP 合作伙伴和控制面板供应商可以依靠新模型提升合作伙伴中心 API 集成调用的安全性。 这有助于包括Microsoft、CSP 合作伙伴和控制面板供应商在内的各方保护其基础结构和客户数据免受安全风险的影响。

重要

截至 2023 年 6 月 30 日,已弃用 Azure Active Directory (Azure AD) Graph。 今后,我们在 Azure AD Graph 中没有进一步的投资。 除了与安全相关的修补程序之外,Azure AD Graph API 没有 SLA 或维护承诺。 对新特性和功能的投资将仅在 Microsoft Graph 中进行。

我们将以增量步骤停用 Azure AD Graph,以便有足够的时间将应用程序迁移到 Microsoft Graph API。 稍后我们将宣布,我们将阻止使用 Azure AD Graph 创建任何新应用程序。

若要了解详细信息,请参阅 重要说明:Azure AD Graph 停用和 Powershell 模块弃用

范围

本文适用于以下合作伙伴:

  • 控制面板供应商(CPV)是独立软件供应商,他们开发供 CSP 合作伙伴使用的应用来与合作伙伴中心 API 集成。 CPV 不是直接访问合作伙伴仪表板或 API 的 CSP 合作伙伴。 它们是开发应用程序(通常是 Web 应用)的公司,使 CSP 能够通过统一市场销售其产品。
  • 使用“应用 ID + 用户”身份验证并直接与合作伙伴中心 API 集成的 CSP 间接提供商和 CSP 直接合作伙伴。

注意

若要获得 CPV 资格,必须先加入合作伙伴中心作为 CPV。 如果你是也是 CPV 的现有 CSP 合作伙伴,则此先决条件也适用于你。

保护应用程序开发

在代表 CSP 为Microsoft产品下订单的过程中,CPV 中的市场应用程序与 Microsoft API 进行交互,为客户下订单和预配资源。

其中一些 API 包括:

  • 合作伙伴中心 API 实现商业运营,例如下单和管理订阅生命周期。
  • Microsoft Graph API,这些 API 为 CSP 租户和 CSP 客户的租户实现标识管理。
  • 实现 Azure 部署功能的 Azure 资源管理器 (ARM) API。

CSP 合作伙伴有权在调用 Microsoft API 时代表其客户执行委派特权。 委派的权限允许 CSP 合作伙伴完成其客户的购买、部署和支持方案。

市场应用程序旨在帮助 CSP 合作伙伴为客户列出其解决方案。 为此,市场应用程序需要模拟 CSP 合作伙伴特权来调用Microsoft API。

由于 CSP 合作伙伴特权很高,并且提供对所有合作伙伴客户的访问权限,因此必须了解这些应用程序的设计方式,以抵御安全利用途径。 对这些敏感应用程序的安全攻击可能会导致客户数据受到损害。 因此,权限授予和合作伙伴特权模拟必须设计为遵循最低特权原则。 以下原则和最佳做法确保市场应用程序可持续且能够承受妥协。

凭据模拟的安全原则

  • 市场应用程序不得存储 CSP 合作伙伴的任何凭据。

  • 不应共享 CSP 合作伙伴用户密码。

  • CSP 合作伙伴租户 Web 应用密钥不得与控制面板供应商共享。

  • 市场应用程序必须与合作伙伴信息一起提供应用程序标识,而不是在进行模拟 CSP 合作伙伴标识的调用时仅使用合作伙伴凭据。

  • 对市场应用程序的访问必须基于最低特权原则,并在权限中明确阐明。

  • 必须将市场应用程序的授权透视到多个凭据。

  • 必须同时提供应用程序凭据和合作伙伴凭据才能获得访问权限。

    重要

    重要的是,没有单一的妥协点。

  • 访问权限必须限制为特定受众或 API。

  • Access 必须标识模拟的目的。

  • 市场应用程序的访问权限必须有时间限制。 CSP 合作伙伴必须能够续订或撤销对市场应用程序的访问权限。

  • 必须制定快速控制或修正过程来处理市场应用程序凭据泄露。

  • 所有用户帐户都应使用双重身份验证(2FA)。

  • 应用程序模型应对额外的安全预配友好,例如条件访问更好的安全模型。

注意

CSP 间接提供商和 CSP 直接合作伙伴使用应用 ID + 用户身份验证并直接与合作伙伴中心 API 集成,必须遵循上述原则来保护自己的市场应用程序。

应用程序标识和概念

多租户应用程序

多租户应用程序通常是软件即服务(SaaS)应用程序。 可以通过在 Azure 仪表板上将应用程序类型配置为多租户,将应用程序配置为接受来自任何Microsoft Entra 租户的登录。 任何 Microsoft Entra 租户中的用户在同意配合应用程序使用其帐户之后,便可登录到应用程序。

若要详细了解如何创建多租户应用程序,请参阅 使用多租户应用程序模式登录任何Microsoft Entra 用户。

若要让用户登录到Microsoft Entra ID 中的应用程序,应用程序必须在用户的租户中表示,这样组织就可以在用户从租户登录应用程序时执行唯一策略等操作。 对于单个租户应用程序,此注册非常简单:在 Azure 仪表板中注册应用程序时,会发生此注册。

对于多租户应用程序,应用程序的初始注册位于开发人员使用的 Microsoft Entra 租户中。 当来自不同租户的用户首次登录应用程序时,Microsoft Entra 将要求他们同意应用程序所请求的权限。 如果他们同意,则会在用户的租户中创建名为服务主体的应用程序的表示形式,并且登录过程可以继续。 还会在目录中创建一个委托,用于记录用户对应用程序的同意。

注意

使用应用 ID + 用户身份验证并直接与合作伙伴中心 API 集成的 CSP 间接提供商和 CSP 直接合作伙伴必须使用同一同意框架同意其市场应用程序。

许可体验受应用程序请求的权限影响。 Microsoft Entra ID 支持两种类型的权限:仅限应用和委派。

  • 仅应用权限 直接授予应用程序标识。 例如,可以授予应用程序读取租户中用户列表的权限,而不考虑谁登录到应用程序。
  • 委派权限 授予应用程序充当用户可执行的操作子集的登录用户的能力。 例如,可以向应用程序授予读取已登录用户的日历的委派权限。

某些权限由普通用户同意,而另一些权限则要求租户管理员同意。 有关 Microsoft Entra 许可框架的详细信息,请参阅 了解 Microsoft Entra 应用程序许可体验

多租户应用程序打开授权 (OAuth) 令牌流

在多租户应用程序开放授权(OAuth)流中,应用程序表示为 CPV 或 CSP 合作伙伴租户中的多租户应用程序。

若要访问Microsoft API(合作伙伴中心 API、Graph API 等),CSP 合作伙伴必须登录到应用程序并同意允许应用程序代表他们调用 API。

注意

使用应用 ID 和用户身份验证并直接与合作伙伴中心 API 集成的 CSP 间接提供商和 CSP 直接合作伙伴必须同意其市场应用程序才能使用相同的同意框架。

应用程序通过许可和 OAuth 授予获得对合作伙伴资源(如 Graph 和合作伙伴中心 API)的访问权限。

创建多租户应用程序

多租户应用程序必须符合以下要求:

  • 它必须是具有应用程序 ID 和密钥的 Web 应用。
  • 它必须关闭隐式身份验证模式。

此外,我们建议遵循以下最佳做法:

  • 将证书用于密钥。
  • 启用条件访问以应用 IP 范围限制。 这可能需要在 Microsoft Entra 租户上启用更多功能。
  • 为应用程序应用访问令牌生存期策略。

获取令牌时,必须显示应用 ID 和密钥。 密钥可以是证书。

可将应用程序配置为调用多个 API,包括 Azure 资源管理器 API。 以下是合作伙伴中心 API 所需的最低权限集:

  • Microsoft Entra ID 委派权限: 以登录用户身份访问目录
  • 合作伙伴中心 API 委派的权限: 访问

多租户应用程序必须获取合作伙伴的同意,并使用许可并授予对合作伙伴中心 API 的进一步调用。 同意是通过 OAuth 身份验证代码流获取的。

若要获得同意,CPV 或 CSP 合作伙伴必须构建一个载入网站,该网站可以接受来自 Microsoft Entra ID 的身份验证代码授予。

有关详细信息,请参阅使用 OAuth 2.0 代码授予流授权访问 Azure Active 和 Directory Web 应用程序的权限。

下面是多租户应用程序捕获 CSP 合作伙伴同意的步骤,以及用于调用合作伙伴中心 API 的可重用令牌。

使用以下步骤获取合作伙伴同意。

  1. 构建合作伙伴加入 Web 应用程序,该应用程序可以托管合作伙伴的同意链接,以便单击以接受多租户应用程序的同意。
  2. CSP 合作伙伴单击同意链接。 例如: https://login.microsoftonline.com/common/oauth2/authorize?&client_id=<marketplaceappid>&response_ty
  3. Microsoft Entra 登录页说明了将代表用户授予给应用程序的权限。 CSP 合作伙伴可以决定使用管理员代理或销售代理凭据登录并批准同意。 根据用于登录的用户角色授予应用程序的权限。
  4. 授予同意后,Microsoft Entra ID 会在 CSP 合作伙伴的租户中创建 CPV 多租户应用程序的服务主体。 向应用程序授予 OAuth 授权,以代表用户执行操作。 这些授予允许多租户应用程序代表合作伙伴调用合作伙伴中心 API。 此时,Microsoft Entra 登录页重定向到合作伙伴加入 Web 应用程序。 Web 应用程序从 Microsoft Entra ID 接收授权代码。 合作伙伴加入 Web 应用程序必须使用授权代码以及应用程序 ID 和密钥来调用 Microsoft Entra ID 令牌 API 以获取刷新令牌。
  5. 安全地存储刷新令牌。 刷新令牌是合作伙伴凭据的一部分,用于代表合作伙伴获取对合作伙伴中心 API 的访问权限。 获取刷新令牌后,对其进行加密并将其存储在密钥存储中,例如 Azure 密钥保管库

令牌请求调用流

在调用合作伙伴中心 API 之前,CPV 或 CSP 合作伙伴的应用程序必须获取访问令牌。 这些 API 以资源 URL https://api.partnercenter.microsoft.com表示。

CPV 应用程序应确定它必须模拟的合作伙伴帐户,以基于产品或联合登录调用合作伙伴中心 API。 应用程序从密钥存储中检索该合作伙伴租户的加密刷新令牌。 在使用之前,必须解密刷新令牌。

对于只有一个租户同意的 CSP 合作伙伴,合作伙伴帐户是指 CSP 合作伙伴的租户。

刷新令牌是多受众令牌。 这意味着,刷新令牌可用于根据授予的同意为多个访问群体获取令牌。 例如,如果为合作伙伴中心 API 和Microsoft图形 API 提供合作伙伴同意,则可以使用刷新令牌为这两个 API 请求访问令牌。 访问令牌具有“代表”授权,并允许市场应用程序模拟在调用这些 API 时同意的合作伙伴。

一次可以为单个受众获取访问令牌。 如果应用程序需要访问多个 API,则必须为目标受众请求多个访问令牌。 若要请求访问令牌,应用程序需要调用Microsoft Entra ID 令牌 API。 或者,它还可以使用 Microsoft Entra SDK 的 AuthenticationContext.AcquireTokenAsync 并传入以下信息:

  • 资源 URL,这是要调用的应用程序的终结点 URL。 例如,Microsoft合作伙伴中心 API 的资源 URL 为 https://api.partnercenter.microsoft.com
  • 应用程序凭据由 Web 应用的应用程序 ID 和密钥组成。
  • 刷新令牌

生成的访问令牌允许应用程序调用资源中提到的 API。 应用程序无法请求未作为许可请求的一部分授予权限的 API 的访问令牌。 UserPrincipalName (UPN) 属性值是用户帐户的 Microsoft Entra 用户名。

更多注意事项

条件性访问

在管理云资源方面,云安全的关键方面是标识和访问。 在移动优先的云优先世界中,用户可以从任何位置使用各种设备和应用访问组织的资源。 仅仅专注于谁可以访问资源已经不够了。 若要掌握安全性和工作效率之间的平衡,还需要考虑如何访问资源。 通过使用 Microsoft Entra 条件访问,可以满足此要求。 使用条件访问时,可以根据条件就云应用的访问实施自动化的访问控制决策。

有关详细信息,请参阅 Microsoft Entra ID 中的条件访问是什么?

基于 IP 范围的限制

可以将令牌限制为仅颁发到特定 IP 地址范围。 此功能有助于仅将攻击外围应用限制为特定网络。

多重身份验证

强制实施多重身份验证有助于通过将凭据验证强制实施到两个或多个表单来限制凭据泄露情况。 此功能允许Microsoft Entra ID 在颁发令牌之前,通过安全辅助通道(如移动或电子邮件)验证调用方的身份。

有关详细信息,请参阅 工作原理:Azure 多