Azure Stack Hub 的标识提供者概述

Azure Stack Hub 需要 Microsoft Entra ID 或 Active Directory 联合身份验证服务 (AD FS),并由 Active Directory 作为标识提供者提供支持。 提供者的选择是首次部署 Azure Stack Hub 时做出的一次性决定。 本文中的概念和授权详细信息可帮助你选择适当的标识提供者。

选择 Microsoft Entra ID 还是 AD FS 取决于部署 Azure Stack Hub 的模式:

  • 在连接模式下部署它时,可以使用 Microsoft Entra ID 或 AD FS。
  • 在未建立 Internet 连接的离线模式下部署时,仅支持 AD FS。

若要详细了解依赖于 Azure Stack Hub 环境的选项,请参阅以下文章:

重要

Azure AD Graph 即将弃用,将于 2023 年 6 月 30 日停用。 有关详细信息,请参阅此部分

标识提供者的一般概念

后续部分介绍标识提供者的一般概念及其在 Azure Stack Hub 中的用法。

标识提供者的术语

目录租户和组织

目录是保留用户、应用程序、组和服务主体相关信息的容器。

目录租户是一个组织,例如 Azure 或你自己的公司。

  • Microsoft Entra ID 支持多个租户,并且可以支持多个组织,其中每个组织都位于其自己的目录中。 如果使用的是 Microsoft Entra ID 并且具有多个租户,则可以从一个租户向应用和用户授予对同一目录的其他租户的访问权限。
  • AD FS 仅支持单个租户,因此仅支持单个组织。

用户和组

用户帐户(标识)是标准帐户,可使用用户 ID 和密码对个人进行身份验证。 组可以包含用户或其他组。

创建和管理用户与组的方式取决于所用的标识解决方案。

在 Azure Stack Hub 中,用户帐户:

  • 以“username@domain”格式创建。 尽管 AD FS 可将用户帐户映射到 Active Directory 实例,但 AD FS 不支持使用“\<域>\<别名>”格式。
  • 可以设置为使用多重身份验证。
  • 限制为它们首先注册到的目录,即其组织的目录。
  • 可从本地目录导入。 有关详细信息,请参阅将本地目录与 Microsoft Entra ID 集成

登录到组织的用户门户时,请使用 https://portal.local.azurestack.external URL。 从用于注册 Azure Stack Hub 的域以外的域登录 Azure Stack Hub 门户时,用于注册 Azure Stack Hub 的域名必须追加到门户 URL 后面。 例如,如果 Azure Stack Hub 已注册到 fabrikam.partner.onmschina.cn 并且登录的用户帐户为 admin@contoso.com,则用于登录用户门户的 URL 将为:https://portal.local.azurestack.external/fabrikam.partner.onmschina.cn.

来宾用户

来宾用户是其他目录租户中的用户帐户,这些用户已获得目录中资源的访问权限。 要支持来宾用户,请使用 Microsoft Entra ID 并启用对多租户的支持。 若已启用支持,可以邀请来宾用户访问目录租户中的资源,方便他们与外部组织协作。

若要邀请来宾用户,云操作员和用户可以使用 Azure AD B2B 协作。 受邀用户可以从你的目录访问文档、资源和应用,并且你仍可控制自己的资源和数据。

可以作为来宾用户登录到其他组织的目录租户。 为此,请将该组织的目录名称追加到门户 URL。 例如,如果你属于 Contoso 组织,但想要登录 Fabrikam 目录,请使用 https://portal.local.azurestack.external/fabrikam.partner.onmschina.cn.

应用

可以向 Microsoft Entra ID 或 AD FS 注册应用,然后向组织中的用户提供这些应用。

应用包括:

  • Web 应用:示例包括 Azure 门户和 Azure 资源管理器。 它们支持 Web API 调用。
  • 本机客户端:示例包括 Azure PowerShell、Visual Studio 和 Azure CLI。

应用可支持两种租户:

  • 单租户:仅支持应用注册时所在的目录中的用户和服务。

    注意

    由于 AD FS 仅支持单个目录,因此在 AD FS 拓扑中创建的应用设计为单租户应用。

  • 多租户:支持应用注册时所在目录以及其他租户目录中的用户和服务使用。 通过多租户应用,其他租户目录(其他 Microsoft Entra 租户)的用户可以登录到你的应用。

    有关多租户的详细信息,请参阅启用多租户

    有关如何开发多租户应用的详细信息,请参阅多租户应用

注册应用时,请创建两个对象:

  • 应用程序对象:应用在所有租户中的全局表示形式。 此关系是与软件应用的一对一关系,且只存在于应用首先注册到的目录中。

  • 服务主体对象:在最初注册应用的目录中针对应用创建的凭据。 服务主体也是在使用该应用的其他每个租户的目录中创建的。 此关系可以是与软件应用的一对多关系。

有关应用和服务主体的详细信息,请参阅 Microsoft Entra ID 中的应用程序和服务主体对象

服务主体

服务主体是应用或服务的一组凭据,可授予 Azure Stack Hub 中资源的访问权限。 使用服务主体可将应用权限与应用用户权限区分开来。

服务主体是在使用应用的每个租户中创建的。 服务主体建立的标识用于登录和访问受该租户保护的资源(例如用户)。

  • 单租户应用在其首次创建所在的目录中只有一个服务主体。 此服务主体在应用注册期间创建并允许用户使用。
  • 多租户 Web 应用或 API 将在每个租户中创建一个服务主体,前提是该租户的用户同意使用此应用。

服务主体的凭据可以是通过 Azure 门户生成的密钥,也可以是证书。 证书的使用很适合自动化,因为证书被视为比密钥更安全。

注意

在 Azure Stack Hub 中使用 AD FS 时,只有管理员可以创建服务主体。 使用 AD FS 时,服务主体需要证书,并需要通过特权终结点 (PEP) 来创建。 有关详细信息,请参阅使用应用标识访问资源

若要了解 Azure Stack Hub 的服务主体,请参阅创建服务主体

服务

Azure Stack Hub 中与标识提供者交互的服务将作为应用注册到标识提供者。 如同应用,注册可让服务在标识系统中进行身份验证。

所有 Azure 服务都使用 OpenID Connect 协议和 JSON Web 令牌来建立其标识。 由于 Microsoft Entra ID 和 AD FS 使用一致的协议,你可以使用 Microsoft 身份验证库 (MSAL) 获取安全令牌,以便在本地或者向 Azure(在连接的方案中)进行身份验证。 还可以通过 MSAL 使用 Azure PowerShell 和 Azure CLI 等工具进行跨云的和本地的资源管理。

标识和标识系统

Azure Stack Hub 的标识包括用户帐户、组和服务主体。

安装 Azure Stack Hub 时,有多个内置应用和服务在目录租户中自动向标识提供者注册。 有些注册的服务用于管理。 还有些服务供用户使用。 默认注册提供核心服务标识,此类标识可彼此交互,以及与今后添加的标识交互。

如果使用多租户设置 Microsoft Entra ID,则某些应用将传播到新目录。

身份验证和授权

按应用和用户进行身份验证

Azure Stack Hub 层之间的标识

对应用和用户而言,Azure Stack Hub 的体系结构可以用四个层来描述。 各层之间的交互可以使用不同类型的身份验证。

层级之间的身份验证
工具与客户端,例如管理员门户 为了访问或修改 Azure Stack Hub 中的资源,工具和客户端将使用 JSON Web 令牌来调用 Azure 资源管理器。
Azure 资源管理器验证 JSON Web 令牌并扫视所颁发令牌中的声明,以评估用户或服务主体在 Azure Stack Hub 中的授权级别。
Azure 资源管理器及其核心服务 Azure 资源管理器与资源提供程序通信,以传输用户的通信。
传输通过 Azure 资源管理器模板使用直接命令式调用或声明式调用。
资源提供程序 传递给资源提供程序的调用通过基于证书的身份验证进行保护。
随后,Azure 资源管理器和资源提供程序持续通过 API 通信。 对于从 Azure 资源管理器 收到的每个调用,资源提供程序使用该证书来验证调用。
基础结构和业务逻辑 资源提供程序使用所选的身份验证模式与业务逻辑和基础结构通信。 Azure Stack Hub 随附的默认资源提供程序使用 Windows 身份验证来保护此通信。

身份验证所需的信息

对 Azure 资源管理器进行身份验证

若要在标识提供者中进行身份验证并接收 JSON Web 令牌,必须提供以下信息:

  1. 标识系统(颁发机构)的 URL:可用于访问标识提供者的 URL。 例如,https://login.chinacloudapi.cn
  2. Azure 资源管理器的应用 ID URI:已向标识提供者注册的 Azure 资源管理器的唯一标识符, 也是每个 Azure Stack Hub 安装中的唯一标识符。
  3. 凭据:用于在标识提供者中进行身份验证的凭据。
  4. Azure 资源管理器 的 URL:该 URL 是 Azure 资源管理器服务的位置。 例如,https://management.chinacloudapi.cnhttps://management.local.azurestack.external

当主体(客户端、应用或用户)发出访问资源所需的身份验证请求时,该请求必须包含:

  • 主体的凭据。
  • 主体想要访问的资源的应用 ID URI。

凭据已由标识提供者验证。 标识提供者还会验证应用 ID URI 是否用于已注册的应用,以及主体是否拥有适当的权限,可获取该资源的令牌。 如果请求有效,则授予 JSON Web 令牌。

然后,必须将此令牌传入发往 Azure 资源管理器的请求的标头中。 Azure 资源管理器执行以下操作(不遵循特定的顺序):

  • 验证 issuer (iss) 声明,确认令牌来自正确的标识提供者。
  • 验证 audience (aud) 声明,确认令牌已颁发给 Azure 资源管理器。
  • 验证 JSON Web 令牌是否已使用通过 OpenID 配置的证书进行签名,并且为 Azure 资源管理器所知。
  • 检查 issued at (iat) 和 expiration (exp) 声明,确认令牌处于活动状态并且可以接受。

完成所有验证后,Azure 资源管理器使用对象 ID (oid) 和 groups 声明来生成主体可以访问的资源列表。

令牌交换协议示意图

使用基于角色的访问控制

Azure Stack Hub 中基于角色的访问控制 (RBAC) 与 Azure 中的实现一致。 可以通过将相应的 RBAC 角色分配给用户、组和应用,来管理资源访问权限。 有关如何在 Azure Stack Hub 中使用 RBAC 的信息,请参阅以下文章:

使用 Azure PowerShell 进行身份验证

有关使用 Azure PowerShell 在 Azure Stack Hub 中进行身份验证的详细信息,请参阅配置 Azure Stack Hub 用户的 PowerShell 环境

使用 Azure CLI 进行身份验证

有关使用 Azure PowerShell 在 Azure Stack Hub 中进行身份验证的信息,请参阅安装和配置与 Azure Stack Hub 配合使用的 Azure CLI

Azure Policy

Azure Policy 可帮助实施组织标准并大规模评估合规性。 它通过其合规性仪表板提供一个聚合视图来评估环境的整体状态,并可以按资源、按策略粒度向下钻取。 它还通过对现有资源的批量修正以及对新资源的自动修正,帮助资源符合规范。

Azure Policy 的常见用例包括实施监管来满足资源一致性、法规遵从性、安全性、成本和管理方面的要求。 Azure 环境中已内置了这些常见用例的策略定义,以帮助你入门。

注意

Azure Stack Hub 目前不支持 Azure Policy。

Azure AD Graph

Azure 已于 2020 年 6 月 30 日宣布弃用 Azure AD Graph,并且其停用日期为 2023 年 6 月 30 日。 Azure 已通过电子邮件通知客户有关此更改的信息。 有关更多详细信息,请参阅 Azure AD Graph 停用和 Powershell 模块弃用博客。

以下部分介绍此弃用对 Azure Stack Hub 的影响。

Azure Stack Hub 团队正在与 Azure Graph 团队密切合作,以确保你的系统在 2023 年 6 月 30 日之后继续工作(如有必要),确保平稳过渡。 最重要的操作是确保你符合 Azure Stack Hub 服务策略。 客户将在 Azure Stack Hub 的管理门户中收到警报,并且需要更新主目录和已加入的所有来宾目录。

大部分迁移本身将由集成的系统更新体验完成;客户需要通过手动步骤才能向这些应用程序授予新权限,这将需要 Azure Stack Hub 环境使用的每个 Microsoft Entra 目录中的应用程序管理员权限。 在包含这些更改的更新包完成安装后,管理门户中会发出警报,指示您使用多租户 UI 或 PowerShell 脚本完成此步骤。 这与载入其他目录或资源提供程序时执行的操作相同;有关详细信息,请参阅在 Azure Stack Hub 中配置多租户

如果使用 AD FS 作为 Azure Stack Hub 的标识系统,这些 Graph 更改不会直接影响你的系统。 但是,Azure CLI、Azure PowerShell 等最新版本的工具将需要新的 Graph API,它们将无法工作。 确保只使用给定的 Azure Stack Hub 版本明确支持的这些工具的版本。

除了管理门户中的警报外,我们还将通过更新发行说明传达更改,并将传达哪个更新包需要更新主目录和已加入的所有来宾目录。

后续步骤