对于 Horizon Cloud Service on Microsoft Azure 部署,该服务使用 API 调用来将容器部署到 Microsoft Azure 订阅中,并管理该容器及其置备的 VDI 桌面和场。要使 Horizon Cloud 能够在容器的订阅中使用其 API 调用,请创建应用程序注册。

简介

对于容器的初始部署,容器部署程序会在您选择用于容器的 Microsoft Azure 订阅中调用 API。这些 API 调用会在容器订阅中执行操作,以创建容器管理器虚拟机、虚拟机网卡、网卡上的网络安全组 (NSG) 等项目,所有这些都是 Horizon Cloud 容器所需的资源。

然后,在容器部署后,Horizon Cloud 必须能够继续在容器的订阅中调用 API。容器部署后,服务使用 API 调用来为最佳配置映像创建基础映像虚拟机、在最佳配置映像上运行 sysprep、创建场主机和 VDI 桌面虚拟机、添加和编辑容器的网关配置,以及维护和升级容器。

在运行容器部署程序之前创建应用程序注册

由于容器部署程序需要在容器部署过程中调用 API,以便在容器的订阅中以编程方式创建容器资源,因此在启动部署向导之前,应用程序注册和客户端密钥必须已存在。创建应用程序注册时,会自动在容器订阅中创建服务主体对象。

必须在 Azure 门户中生成客户端密钥,并为 Horizon Cloud 应用程序注册分配角色,以便能够在容器的订阅级别运行。

当外部 Unified Access Gateway 配置部署在其自己的订阅中,而不是容器的订阅中时,如果要使用该功能,则在您运行向导以部署该外部网关时,Horizon Cloud 还必须能够在该网关的订阅中调用 API。在这种情况下,除了容器订阅之外,该订阅中也需要具有应用程序注册和客户端密钥。

关于为应用程序注册分配角色

必须在容器订阅中为 Horizon Cloud 应用程序注册分配角色。通常,内置的 Contributor 角色是 Horizon Cloud 用于容器订阅的角色。之所以使用 Contributor 角色,是因为此角色涵盖了 Horizon Cloud 需要在容器订阅中执行的所有 API 调用。

角色分配必须是直接分配。当前不支持使用基于组的角色分配(在这种情况中,角色被分配给一个组,而应用程序注册是该组的成员)。

如果贵组织希望避免在容器订阅中使用 Contributor 角色,则 Horizon Cloud 也支持使用自定义角色。如果使用自定义角色,该角色需提供 Horizon Cloud 所需使用的特定 API 调用。有关更多信息,请参阅此页面底部附近的自定义角色部分。

注册资源提供程序

在容器的订阅中,下列资源提供程序必须全部具有 Registered 状态。您可能会看到此列表中的某些资源提供程序已具有 Registered 状态,而其他资源提供程序则没有此状态。这是标准 Microsoft Azure 行为所产生的结果,Microsoft Azure 通常会为所有 Azure 订阅注册一组资源提供程序。

在运行容器部署向导之前,您需要确保下列资源提供程序均具有 Registered 状态。在向导的最后一步,将验证这些资源提供程序是否具有 Registered 状态,如果某个资源提供程序处于未注册状态,则会阻止启动容器部署。

  • Microsoft.Compute
  • microsoft.insights
  • Microsoft.Network
  • Microsoft.Storage
  • Microsoft.KeyVault
  • Microsoft.Authorization
  • Microsoft.Resources
  • Microsoft.ResourceHealth
  • Microsoft.ResourceGraph
  • Microsoft.Security
  • Microsoft.DBforPostgreSQL
  • Microsoft.Sql
  • Microsoft.MarketplaceOrdering

以下屏幕截图展示了 Azure 门户中显示的已注册状态和未注册状态。


“资源提供程序”屏幕,带有一个指向未注册的项目的绿色箭头。

要验证容器订阅中的资源提供程序,请执行以下操作:

  1. 登录到 Azure 门户,然后搜索计划在其中部署容器的订阅。
  2. 单击相应订阅名称,并向下滚动直到看到 “订阅”设置菜单中的“资源提供程序”菜单选项资源提供程序)。
  3. 查看上述列表中的资源提供程序,并确认它们均显示 Azure 门户中资源提供程序的“已注册”状态图标已注册)状态。

    如果上述列表中有任何资源提供程序显示为 NotRegistered,请使用门户进行注册。

创建 Horizon Cloud 应用程序注册

您可以使用 Microsoft Azure 门户执行以下适用于您的注册帐户的步骤。例如,以下 Microsoft Azure 云具有特定的门户端点。

  • Microsoft Azure 商业(标准全球区域)
  • Microsoft Azure 中国
  • Microsoft Azure 美国政府

当外部网关使用其自己的订阅,而不是容器的订阅时,如果要使用 Horizon Cloud 功能,您需要在网关的订阅中对其应用程序注册重复执行这些步骤。

要自行在 Azure 门户中完成以下所有步骤,您的门户登录帐户必须具有足够的权限,以在计划在其中部署容器的订阅中创建应用程序注册并为该应用程序注册分配角色。如果您不是该订阅的所有者或管理员,请询问该订阅的所有者或管理员,您是否具有创建应用程序注册并为该应用程序注册分配角色所需的权限。

  1. 使用能够注册应用程序的凭据登录到 Microsoft Azure 门户
  2. 在门户的搜索栏中,搜索 App registrations,然后单击结果列表中显示的应用程序注册
    此屏幕截图展示了在 Azure 门户中搜索词语“App registrations”,并在结果中看到“App registrations”时的情况

    此时,门户将显示“应用程序注册”页面。

  3. 在“应用程序注册”页面上,单击新建注册
    此屏幕截图展示了“新建注册”操作在 Azure 门户的“应用程序注册”页面上所处的位置
  4. 键入显示名称,以提醒您此注册供 Horizon Cloud 使用。
  5. 选择仅限此组织目录中的帐户
  6. 将可选的“重定向 URI”部分保留为默认的空状态。
  7. 单击注册按钮以完成创建应用程序注册。

    新创建的应用程序注册会显示在屏幕上。

  8. 复制应用程序 ID 和目录 ID 并将其保存到一个稍后运行部署向导时可以检索的位置。以下屏幕截图显示了名为 Hzn-Cloud-Principal 的应用程序注册,其中的绿色箭头指向显示的应用程序 ID 和目录 ID。
    服务主体的详细信息屏幕,其中的箭头指向应用程序 ID。

  9. 然后,创建应用程序注册的客户端密码:
    1. 在上方的屏幕截图中,请查看 Microsoft Azure 门户中的“证书和密钥”菜单项 所在的位置。在 Azure 门户中,单击新创建的应用程序注册页面上的证书和密钥
    2. 单击新建客户端密码
    3. 门户将显示添加客户端密钥屏幕,如以下屏幕截图所示。键入描述,选择过期时间,然后单击添加。密钥描述不得超过 16 个字符,例如 Hzn-Cloud-Key1
      密钥屏幕,其中显示新添加的从不过期的密钥。

      重要说明: 保持此屏幕处于打开状态,直到您将密钥值复制并粘贴到一个稍后可以检索的位置。

      客户端密钥屏幕中显示的身份验证密钥,其中对值进行了像素化处理。

    4. 将密钥值复制到一个稍后运行部署向导时可以检索的位置。向导中有一个可粘贴此值的字段。
  10. Horizon Cloud 应用程序注册添加角色分配。在订阅级别分配角色:
    1. 导航到订阅的设置屏幕,方法是:单击 Microsoft Azure 门户主导航栏中的所有服务,单击订阅,然后单击计划让容器部署程序在其中部署容器的订阅名称。
      注: 此时,请记下屏幕中的订阅 ID,稍后在部署向导中需要用到该值。

      Azure 门户中的订阅详细信息,其中对 ID 进行了像素化处理,并且有一个绿色箭头指向该 ID。

    2. 单击 “访问控制 (IAM)”菜单项访问控制 (IAM)),然后单击添加 > 添加角色分配以打开添加角色分配屏幕。
    3. 添加角色分配屏幕中,对于角色,选择 Contributor 角色。

      如果贵组织表示希望对 Horizon Cloud 使用自定义角色,请选择贵组织为此设置的自定义角色。

    4. 将访问权限分配给下拉列表中,选择 Azure AD 用户、组或应用程序
    5. 使用选择框搜索 Horizon Cloud 应用程序注册的名称。以下屏幕截图展示了此步骤。
      Azure 门户的“添加权限”屏幕的屏幕截图,其中选择了所有者角色并且正在搜索服务主体。

    6. 单击为创建的 Horizon Cloud 应用程序注册指定的名称,以使其成为选定成员,然后单击保存
      在“添加权限”屏幕中,将服务主体添加为具有所有者角色的选定成员。

摘要

此时,您已创建并配置 Horizon Cloud 应用程序注册,已确认 Horizon Cloud 所需的资源提供程序的注册状态,并且获得了在容器部署向导的第一个步骤中所需输入的订阅相关值。四个订阅相关值为:

  • 订阅 ID
  • Azure Active Directory ID
  • 应用程序 ID
  • 应用程序密钥值
注: Horizon Cloud 无法检测或知晓您为应用程序注册的客户端密码设置的过期时间。为确保 Horizon Cloud 可以继续使用此应用程序注册来进行必要的 API 调用以管理容器及其资源,您必须记得在达到密钥过期日期之前刷新密钥,然后在 Horizon Cloud 环境中输入新密钥。目前,可使用 Microsoft Azure 门户设置的最长过期时间为两 (2) 年。如果密钥在两年后过期,并且您未在密钥过期之前刷新密钥或在 Horizon Cloud 环境中输入新密钥信息以将其用于容器,则与已过期密钥关联的容器将停止工作。如果您希望创建的密钥的生命周期超过 Microsoft Azure 门户用户界面允许的两年时间,Microsoft Azure 当前支持使用 PowerShell、Azure CLI 或 Graph API 实现这一点。

自定义角色和 Horizon Cloud 应用程序注册

如果贵组织希望避免在容器的订阅中使用 Contributor 角色,贵组织可以创建一个自定义角色,并将其分配给 Horizon Cloud 应用程序注册。必须对该自定义角色进行配置,以便允许 Horizon Cloud 所需的 API 调用。如果贵组织希望避免在容器订阅中使用 Contributor 角色,请参阅当您的组织希望对 Horizon Cloud 应用程序注册使用自定义角色时中的内容。