Azure Stack Hub 的标识提供者概述

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

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

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

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

标识提供者的一般概念

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

标识提供者的术语

目录租户和组织

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

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

  • Azure AD 支持多个租户并可支持多个组织(各自位于自身的目录中)。 如果使用 Azure AD 并且有多个租户,则可以授权应用和用户从一个租户访问同一目录中的其他租户。
  • AD FS 仅支持单个租户,因此仅支持单个组织。

用户和组

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

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

在 Azure Stack Hub 中,用户帐户:

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

登录到组织的用户门户时,请使用 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。

来宾用户

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

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

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

应用

可以向 Azure AD 或 AD FS 注册应用,然后将其提供给组织中的用户。

应用包括:

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

应用可支持两种租户:

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

    备注

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

  • 多租户:支持应用注册时所在目录以及其他租户目录中的用户和服务使用。 另一个租户目录(另一个 Azure AD 租户)的用户可以使用多租户应用登录到应用。

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

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

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

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

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

有关应用和服务主体的详细信息,请参阅 Azure Active Directory 中的应用程序和服务主体对象

服务主体

服务主体是应用或服务的一组凭据,可授予 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 令牌来建立其标识。 由于 Azure AD 和 AD FS 使用的协议一致,因此可以使用 Azure Active Directory 身份验证库 (ADAL) 在本地环境或 Azure 中进行身份验证(在联网场景中)。 还可以通过 ADAL 使用 Azure PowerShell 和 Azure CLI 等工具进行跨云的和本地的资源管理。

标识和标识系统

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

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

如果设置采用多租户的 Azure AD,则有些应用会传播到新的目录。

身份验证和授权

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

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 Active Directory 全局管理员权限。 但是,某些操作可能需要全局管理员凭据(例如,资源提供程序安装程序脚本或需要授予权限的新功能)。 可以临时复原帐户的全局管理员权限,也可以使用单独的全局管理员帐户(该帐户应是默认提供程序订阅的所有者)。

使用基于角色的访问控制

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

后续步骤