Citrix DaaS

与 Microsoft Azure 的连接

注意:

自 2023 年 7 月起,Microsoft 已将 Azure Active Directory (Azure AD) 重命名为 Microsoft Entra ID。在本文档中,任何提及 Azure Active Directory、Azure AD 或 AAD 的内容现在均指 Microsoft Entra ID。

创建和管理连接和资源介绍了用于创建连接的向导。以下信息涵盖了特定于 Azure Resource Manager 云环境的详细信息。

注意:

在创建与 Microsoft Azure 的连接之前,必须先将 Azure 帐户设置为资源位置。请参阅 Microsoft Azure Resource Manager 虚拟化环境

创建服务主体和连接

在创建连接之前,必须设置连接用来访问 Azure 资源的服务主体。可以通过以下两种方式创建连接:

  • 使用 Studio 同时创建服务主体和连接
  • 使用先前创建的服务主体创建连接

本部分内容向您展示了如何完成以下任务:

注意事项

在开始之前,请注意以下注意事项:

  • Citrix 建议使用具有贡献者角色的服务主体。但是,请参阅最低权限部分以获取最低权限列表。
  • 在创建第一个连接时,Azure 会提示您为其授予必要的权限。对于将来的连接,您仍然必须进行身份验证,但是 Azure 会记住您以前同意的情况,并且不会再显示提示。
  • 首次使用 Azure 进行身份验证后,系统会邀请一个 Citrix 拥有的多租户应用程序(ID:08b70dc3-76c5-4611-ba7d-3312ba36cb2b)代表经过身份验证的帐户访问您的 Azure Active Directory。如果在“连接详细信息”页面上选择“启用加入了 Azure AD 的设备管理”,则可以允许 Citrix 使用此应用程序,也可以手动为现有服务主体分配角色以进行工作负载配置和 Azure AD 设备管理,
  • 用于身份验证的帐户必须具有使用 Azure RBAC 在订阅中分配角色的权限。例如,订阅的所有者、基于角色的访问控制管理员或用户访问管理员。
  • 用于身份验证的帐户必须是订阅的目录的成员。需要注意两种类型的帐户:“工作或学校”和“个人 Microsoft 帐户”。有关详细信息,请参阅 CTX219211
  • 虽然可以通过将现有 Microsoft 帐户添加为订阅目录的成员来使用该帐户,但如果以前已为用户授予对其中一个目录的资源的来宾访问权限,则可能会出现复杂情况。在这种情况下,他们可能在目录中有一个不会授予其必要权限的占位符条目,并会返回错误。

    通过从目录中删除资源并将其明确添加回来纠正这个问题。但是,请谨慎使用此选项,因为它会对该帐户可以访问的其他资源产生意想不到的影响。

  • 有一个已知问题,即某些帐户实际上是成员时,会被检测为目录来宾。此类配置通常发生在较旧的目录帐户中。解决方法:向目录中添加一个帐户,该帐户采用适当的成员身份值。
  • 资源组只是资源的容器,它们可以包含来自自己所在区域以外的区域的资源。如果您希望资源组的区域中显示的资源可用,这可能会引起混淆。
  • 请确保您的网络和子网足够大,可以容纳您需要的计算机数量。这需要一些先见之明,但 Microsoft 会帮助您指定合适的值,并提供有关地址空间容量的指导。

使用 Studio 创建服务主体和连接

重要:

此功能尚不适用于 Azure 中国订阅。

使用 Studio,您可以在单个工作流程中创建服务主体和连接。服务主体允许连接访问 Azure 资源。向 Azure 进行身份验证以创建服务主体时,应用程序将在 Azure 中注册。为注册的应用程序创建了密钥(称为客户端机密应用程序机密)。注册的应用程序(在本例中为连接)使用客户端机密对 Azure AD 进行身份验证。

在开始之前,请确保您已满足以下必备条件:

  • 在订阅的 Azure Active Directory 租户中具有一个用户帐户。
  • 用于身份验证的帐户必须具有使用 Azure RBAC 在订阅中分配角色的权限。例如,订阅的所有者、基于角色的访问控制管理员或用户访问管理员。
  • 您拥有全局管理员、应用程序管理员或应用程序开发者权限以进行身份验证。创建主机连接后,可以撤消权限。有关角色的详细信息,请参阅 Azure AD 内置角色

使用添加连接和资源向导一起创建服务主体和连接:

  1. 连接页面上,选择创建新连接Microsoft Azure 连接类型和您的 Azure 环境。

  2. 选择可以使用哪些工具来创建虚拟机,然后选择下一步

  3. 在“连接详细信息”页面上,创建服务主体并按如下方式设置连接名称:

    1. 要授予自动清理过时的加入了 Azure AD 的设备的连接权限,请选择“启用加入了 Azure AD 的设备管理”。如果您想通过此连接创建加入了 Azure AD 的计算机,我们建议您选择此选项。有关详细信息,请参阅启用加入了 Azure AD 的设备管理

    2. 输入 Azure 订阅 ID 和连接的名称。输入订阅 ID 后,将启用新建按钮。

    注意:

    连接名称可以包含 1-64 个字符,不能仅包含空格或字符 \/;:#.*?=<>|[]{}"'()'

    1. 选择新建,然后输入 Azure Active Directory 帐户用户名和密码。

    2. 选择登录

    3. 选择“接受”以授予 Citrix DaaS 列出的权限。Azure 创建了一个服务主体,允许 Citrix DaaS 代表指定用户管理 Azure 资源。

      注意:

      Citrix DaaS 需要以下权限才能创建新的服务主体:

      • 以您身份访问 Azure 服务管理
      • 读取和写入应用程序
      • 登录并阅读您的个人资料
      • 保持对您授予访问权限的数据的访问权限
      • 读取和写入目录 RBAC 设置

      只有在选择“启用加入了 Azure AD 的设备管理”时才需要读取和写入目录 RBAC 设置权限。

    4. 选择“接受”后,您将返回到“连接详细信息”页面。

      注意:

      成功对 Azure 进行身份验证后,新建使用现有按钮将消失。连接成功文本显示时带有绿色复选标记,表示成功连接到 Azure 订阅。

    5. 要通过 Citrix Cloud Connector 将 API 请求路由到 Azure,请选中“通过 Citrix Cloud Connector 路由流量”复选框。

      或者,您可以使用 PowerShell 启用此功能。有关详细信息,请参阅为 Azure 管理的流量创建安全的环境

      注意:

      仅当您的部署中有活动的 Citrix Cloud Connector 时,此选项才可用。目前,Connector Appliance 不支持此功能。

    6. 选择下一步

    注意:

    在成功对 Azure 进行身份验证并同意授予所需的权限之后,才能进入下一页。

  4. 按如下方式配置连接的资源:

    • 区域页面上,选择一个区域。
    • 网络页面上,执行以下操作:
      • 键入 1–64 字符的资源名称以帮助确定区域和网络组合。资源名称不能仅包含空格或字符 \/;:#.*?=<>|[]{}"'()'
      • 选择一个虚拟网络/资源组对。(如果您有多个具有相同名称的虚拟网络,将网络名称与资源组配对可提供唯一的组合。)如果您在上一个页面上选择的区域不具有任何虚拟网络,请返回到该页面并选择一个具有虚拟网络的区域。
  5. 摘要页面上,查看设置的摘要,然后选择完成以完成您的设置。

查看应用程序 ID

创建某个连接后,可以查看该连接用于访问 Azure 资源的应用程序 ID。

添加连接和资源列表中,选择连接以查看详细信息。“详细信息”选项卡显示应用程序 ID。

“添加连接和资源”页面上的应用程序 ID

使用 PowerShell 创建服务主体

要使用 PowerShell 创建服务主体,请连接到 Azure Resource Manager 订阅并使用以下部分中提供的 PowerShell cmdlet。

请务必准备好以下项目:

  • SubscriptionId: 您希望预配 VDA 的订阅的 Azure Resource Manager SubscriptionID
  • ActiveDirectoryID:您在 Azure AD 中注册的应用程序的租户 ID。
  • ApplicationName: 要在 Azure AD 中创建的应用程序的名称。

详细步骤如下所示:

  1. 连接到您的 Azure Resource Manager 订阅。

    Connect-AzAccount

  2. 选择您要创建服务主体的 Azure Resource Manager 订阅。

    Get-AzSubscription -SubscriptionId $subscriptionId | Select-AzSubscription

  3. 在您的 AD 租户中创建应用程序。

    $AzureADApplication = New-AzADApplication -DisplayName $ApplicationName

  4. 创建服务主体。

    New-AzADServicePrincipal -ApplicationId $AzureADApplication.AppId

  5. 向服务主体分配角色。

    New-AzRoleAssignment -RoleDefinitionName Contributor -ServicePrincipalName $AzureADApplication.AppId –scope /subscriptions/$SubscriptionId

  6. 在 PowerShell 控制台的输出窗口中,记下 ApplicationId。请在创建主机连接时提供该 ID。

在 Azure 中获取应用程序机密

使用现有服务主体创建连接,必须先在 Azure 门户中获取服务主体的应用程序 ID 和密钥。

详细步骤如下所示:

  1. 从 Studio 或使用 PowerShell 获取应用程序 ID
  2. 登录 Azure 门户。
  3. 在 Azure 中,选择 Azure Active Directory
  4. 从 Azure AD 中的应用程序注册中,选择您的应用程序。
  5. 转到证书和密钥
  6. 单击“客户端密钥”。

Azure 门户中的应用程序密钥

使用现有服务主体创建连接

如果您已经有服务主体,则可以使用它来使用 Studio 创建连接。

请务必准备好以下项目:

  • SubscriptionId
  • ActiveDirectoryID(租户 ID)
  • 应用程序 ID
  • 应用程序机密

    有关详细信息,请参阅获取应用程序机密

  • 机密过期日期

详细步骤如下所示:

添加连接和资源向导中,执行以下操作:

  1. 连接页面上,选择创建新连接Microsoft Azure 连接类型和您的 Azure 环境。

  2. 选择可以使用哪些工具来创建虚拟机,然后选择下一步

  3. 连接详细信息页面上,输入 Azure 订阅 ID 和连接的名称。

    注意:

    连接名称可以包含 1-64 个字符,不能仅包含空格或字符 \/;:#.*?=<>|[]{}"'()'

  4. 选择使用现有。在现有服务主体详细信息窗口中,输入现有服务主体的以下设置。输入详细信息后,将会启用保存按钮。选择保存。除非提供有效的详细信息,否则无法跳过此页面。

    • 订阅 ID。输入您的 Azure 订阅 ID。要获取您的订阅 ID,请登录 Azure 门户并导航到订阅 > 概述
    • Active Directory ID(租户 ID)。输入您在 Azure AD 中注册的应用程序的目录(租户)ID。
    • 应用程序 ID。输入您在 Azure AD 中注册的应用程序的应用程序(客户端)ID。
    • 应用程序机密。输入密钥(客户端机密)。注册的应用程序使用密钥向 Azure AD 进行身份验证。出于安全考虑,我们建议您定期更改密钥。请务必保存密钥,因为以后将无法检索密钥。
    • 机密过期日期。输入应用程序机密的过期日期。在密钥到期之前,您会在控制台上收到警报。但是,如果密钥过期,您会收到错误。

      注意:

      出于安全考虑,有效期从现在起不得超过两年。

    • 身份验证 URL。此字段是自动填充的,不可编辑。
    • 管理 URL。此字段是自动填充的,不可编辑。
    • 存储后缀。此字段是自动填充的,不可编辑。

      在 Azure 中创建 MCS 目录需要访问以下端点。访问这些端点可优化您的网络与 Azure 门户及其服务之间的连接。

  5. 选择“保存”后,您将返回到“连接详细信息”页面。选择下一步进入下一页。

  6. 按如下方式配置连接的资源:

    • 区域页面上,选择一个区域。
    • 网络页面上,执行以下操作:
      • 键入 1–64 字符的资源名称以帮助确定区域和网络组合。资源名称不能仅包含空格或字符 \/;:#.*?=<>|[]{}"'()'
      • 选择一个虚拟网络/资源组对。(如果您有多个具有相同名称的虚拟网络,将网络名称与资源组配对可提供唯一的组合。)如果您在上一个页面上选择的区域不具有任何虚拟网络,请返回到该页面并选择一个具有虚拟网络的区域。
  7. 摘要页面上,查看设置的摘要,然后选择完成以完成您的设置。

管理服务主体和连接

本部分内容详细介绍了如何管理服务主体和连接:

配置 Azure 限制设置

Azure Resource Manager 限制订阅和租户的请求,从而根据定义的限制路由流量,根据提供商的特定需求量身自定义。请参阅 Microsoft 站点上的限制 Resource Manager 请求,了解详细信息。订阅和租户存在限制,在这些情况下,管理许多计算机可能会成问题。例如,包含许多计算机的订阅可能会遇到与电源操作有关的性能问题。

提示:

有关详细信息,请参阅使用 Machine Creation Services 提高 Azure 性能

为了帮助缓解这些问题,Citrix DaaS 允许您删除 MCS 内部限制,以使用 Azure 中的更多可用请求配额。

我们建议在大型订阅(例如,包含 1,000 个 VM 的订阅)中打开或关闭 VM 的电源时采用以下最佳设置:

  • 绝对同时操作:500
  • 每分钟最大新操作数:2000
  • 操作的最大并发数:500

使用 Studio 为给定主机连接配置 Azure 操作:

  1. 在 Studio 中,在左侧窗格中选择托管
  2. 选择与 Azure 有关的连接以对其进行编辑。
  3. 编辑连接向导中,选择高级
  4. 高级页面上,使用配置选项指定同时操作的数量、每分钟执行的最大新操作数以及任何其他连接选项。

Azure 限制

默认情况下,MCS 最多支持 500 个并发操作。或者,您可以使用 Remote PowerShell SDK 设置最大并发操作数。

使用 PowerShell 属性 MaximumConcurrentProvisioningOperations 可指定并发 Azure 预配操作的最大数量。使用此属性时,请注意:

  • MaximumConcurrentProvisioningOperations 的默认值为 500。
  • 使用 PowerShell 命令 Set-item 配置 MaximumConcurrentProvisioningOperations 参数。

启用加入了 Azure AD 的设备管理

Azure 中过时的加入了 Azure AD 的设备可能会阻止新计算机加入 Azure AD,从而导致它们无法正常工作。为避免潜在问题,您可以授予连接权限来管理加入了 Azure AD 的设备。有了这个权限,连接就可以自动清理过时的加入了 Azure AD 的设备。

注意:

删除计算机或计算机目录时,无法从 Azure AD 中删除加入了 Azure AD 的设备。

  1. 在 Studio 中,在左侧窗格中选择“托管”。
  2. 选择连接,然后在操作栏中选择编辑连接
  3. 从左侧窗格中选择“连接属性”。
  4. 如果在“连接属性”页面中选择“启用加入了 Azure AD 的设备管理”,请单击“保存/应用”。
  5. 在“确认登录 Azure”窗口中选择以下选项:

    • 登录 Azure:选择此选项可让 Citrix 管理云设备管理员角色。
      1. Click Enable
      2. 在出现的 Azure 登录窗口中,输入您的 Azure AD 密码并完成登录流程。
    • 不登录 Azure:选择此选项可手动管理云设备管理员角色。
      1. Click Enable。更新在没有登录工作流程的情况下生效。

如果在“连接属性”页面中选择“启用加入了 Azure AD 的设备管理”,则单击“编辑设置”>“使用现有设置”。在“确认登录 Azure”窗口中选择以下选项:

  • 登录 Azure:选择此选项可让 Citrix 管理云设备管理员角色。
    1. Click Enable
    2. 在出现的 Azure 登录窗口中,输入您的 Azure AD 密码,完成登录流程。
    3. 输入现有服务主体详细信息。
    4. 单击保存
  • 不登录 Azure:选择此选项可手动管理云设备管理员角色。
    1. Click Enable
    2. 输入现有服务主体详细信息。
    3. 单击保存

登录完成后,您将返回到主机连接和资源列表。单击列表中的连接,然后单击底部窗格中的“详细信息”选项卡。您可以看到加入了 Azure AD 的设备管理字段显示了 Enabled

使用 Studio 启用加入了 Azure AD 的设备管理时,无论选择何种主机连接创建方法(新建或使用现有方法),都必须使用 Azure AD 进行身份验证。Azure AD 内置云设备管理员角色已分配给服务主体。要采用加入了 Azure AD 的设备管理的最低权限,可以手动从服务主体中删除云设备管理员角色的分配,然后创建一个仅包含最低权限的 Azure AD 自定义角色并将其分配给服务主体。

注意:

管理现有主机连接的服务主体

使用服务主体创建主机连接后,您可以选择编辑主机连接使其具有:

  • 新的服务主体
  • 使用其他现有服务主体
  1. 在 Studio 中,从左侧窗格中选择托管
  2. 选择连接,然后在操作栏中选择编辑连接
  3. 从左侧窗格中选择“连接属性”。
  4. 在出现的“连接属性”页面上,单击“编辑设置”。现在,您可以选择创建新的服务主体或使用其他现有服务主体。

    编辑设置

    • 单击“创建服务主体”以创建新的服务主体。按照提示登录到您的 Azure AD 用户帐户。Citrix 使用多租户应用程序 ID 08b70dc3-76c5-4611-ba7d-3312ba36cb2b 为现有主机连接创建新的服务主体并授予适当的权限。

      如果在“连接属性”页面上选择“启用加入了 Azure AD 的设备管理”,则将 Azure AD 内置云设备管理员角色分配给新创建的服务主体。

    • 单击“使用现有服务”为该主机连接使用其他现有服务主体。但是,有两种情况:

      • 如果选择“启用加入了 Azure AD 的设备管理”,则系统会提示您登录 Azure AD 用户帐户。Citrix 使用多租户应用程序 ID 08b70dc3-76c5-4611-ba7d-3312ba36cb2b 将 Azure AD 内置云设备管理员角色分配给现有服务主体。
      • 如果您没有选择“启用加入了 Azure AD 的设备管理”,则系统不会提示您登录 Azure AD 用户帐户。输入该现有服务主体的应用程序 ID 和密钥。

要了解如何启用加入了 Azure AD 的设备管理,请参阅启用加入了 Azure AD 的设备管理

在 Azure 中启用映像共享

创建或更新计算机目录时,可以选择来自不同的 Azure 租户和订阅的共享映像(通过 Azure Compute Gallery 共享)。要允许在租户内部或租户之间共享映像,必须在 Azure 中进行必要的设置:

在租户内(跨订阅)共享映像

要在 Azure Compute Gallery 中选择属于其他订阅的映像,必须与该订阅的服务主体 (SPN) 共享该映像。

例如,如果存在服务主体 (SPN 1),则在 Studio 中将其配置为:

服务主体:SPN 1

订阅:订阅 1

租户:租户 1

映像处于不同的订阅中,在 Studio 中将其配置为:

订阅:订阅 2

租户:租户 1

如果您想与订阅 1 (SPN 1) 共享订阅 2 中的映像,请转到订阅 2,然后与 SPN1 共享资源组。

必须使用 Azure 基于角色的访问控制 (RBAC) 与其他 SPN 共享映像。Azure RBAC 是用于管理 Azure 资源访问权限的授权系统。有关 Azure RBAC 的详细信息,请参阅 Microsoft 文档 What is Azure role-based access control (Azure RBAC)(什么是 Azure 基于角色的访问控制 (Azure RBAC))。要授予访问权限,您可以使用贡献者角色向资源组作用域内的服务主体分配角色。要分配 Azure 角色,您必须拥有 Microsoft.Authorization/roleAssignments/write 权限,例如用户访问管理员或所有者。有关与其他 SPN 共享映像的详细信息,请参阅 Microsoft 文档 Assign Azure roles using the Azure portal(使用 Azure 门户分配 Azure 角色)。

在租户之间共享映像

要使用 Azure Compute Gallery 在租户之间共享映像,请创建应用程序注册。

例如,如果有两个租户(租户 1 和租户 2),并且您想与租户 1 共享您的映像库,那么:

  1. 为租户 1 创建应用程序注册。有关详细信息,请参阅创建应用程序注册

  2. 通过使用浏览器请求登录,授予租户 2 对应用程序的访问权限。将 Tenant2 ID 替换为租户 1 的租户 ID。将 Application (client) ID 替换为您创建的应用程序注册的应用程序 ID。完成替换后,将 URL 粘贴到浏览器中,然后按照登录提示登录到租户 2。例如:

    https://login.microsoftonline.com/<Tenant 2 ID>/oauth2/authorize?client_id=<Application (client) ID>&response_type=code&redirect_uri=https%3A%2F%2Fwww.microsoft.com%2F
    <!--NeedCopy-->
    

    有关详细信息,请参阅向租户 2 授予访问权限

  3. 授予应用程序对租户 2 资源组的访问权限。以租户 2 身份登录,为应用程序提供对包含库映像的资源组的注册访问权限。有关详细信息,请参阅对跨租户的请求进行身份验证

使用 Studio 将共享租户添加到连接中

在 Studio 中创建或更新计算机目录时,可以从不同 Azure 租户和订阅中选择共享映像(通过 Azure Compute Gallery 共享)。该功能要求您为关联的主机连接提供共享租户和订阅信息。

注意:

确保已在 Azure 中配置了必要的设置,以允许在租户之间共享映像。有关详细信息,请参阅在租户之间共享映像

请完成以下步骤以建立连接:

  1. 在 Studio 中,在左侧窗格中选择托管
  2. 选择连接,然后在操作栏中选择编辑连接

    共享租户

  3. 共享租户中,执行以下操作:
    1. 提供与连接的订阅关联的应用程序 ID 和应用程序机密。DaaS 使用此信息向 Azure AD 进行身份验证。
    2. 通过订阅连接添加共享Azure Compute Gallery 的租户和订阅。最多可以为每个租户添加八个共享租户和八个订阅。
  4. 完成后,选择应用以应用您所做的更改并使窗口保持打开,或者选择确定应用更改并关闭窗口。

使用 PowerShell 实现映像共享

本部分内容将指导您完成使用 PowerShell 共享映像的过程:

从其他订阅中选择一个映像

可以在 Azure Compute Gallery 中选择属于同一 Azure 租户中不同共享订阅的映像,以使用 PowerShell 命令创建和更新 MCS 目录。

  1. 在托管单元根文件夹中,Citrix 创建了一个名为 sharedsubscription 的新共享订阅文件夹。
  2. 列出租户中的所有共享订阅。

    Get-ChildItem -Path "XDhyp:\HostingUnits\azres\sharedsubscription.folder"
    <!--NeedCopy-->
    
  3. 选择一个共享订阅,然后列出该共享订阅的所有共享资源组。

    Get-ChildItem -Path "XDhyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription"
    <!--NeedCopy-->
    
  4. 选择一个资源组,然后列出该资源组的所有库。

    Get-ChildItem -Path "XDhyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\ xyz.resourcegroup"
    <!--NeedCopy-->
    
  5. 选择一个库,然后列出该库的所有映像定义。

    Get-ChildItem -Path "XDhyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\xyz.resourcegroup\testgallery.gallery"
    <!--NeedCopy-->
    
  6. 选择一个映像定义,然后列出该映像定义的所有映像版本。

    Get-ChildItem -Path "XDhyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\xyz.resourcegroup\sigtestdef.imagedefinition"
    <!--NeedCopy-->
    
  7. 使用以下元素创建和更新 MCS 目录:

    • 资源组
    • 库映像定义
    • 库映像版本

使用共享租户 ID 更新托管连接自定义属性

执行 Set-Item 以使用共享租户 ID 和订阅 ID 来更新托管连接自定义属性。在 CustomProperties 中添加属性 SharedTenantsShared Tenants 的格式为:

[{"Tenant":"94367291-119e-457c-bc10-25337231f7bd","Subscriptions":["7bb42f40-8d7f-4230-a920-be2781f6d5d9"]},{"Tenant":"50e83564-c4e5-4209-b43d-815c45659564","Subscriptions":["06ab8944-6a88-47ee-a975-43dd491a37d0"]}]
<!--NeedCopy-->

例如:

Set-Item -CustomProperties "<CustomProperties xmlns=`"http://schemas.citrix.com/2014/xd/machinecreation`" xmlns:xsi=`"http://www.w3.org/2001/XMLSchema-instance`">
<Property xsi:type=`"StringProperty`" Name=`"SubscriptionId`" Value=`"123`" />
<Property xsi:type=`"StringProperty`" Name=`"ManagementEndpoint`" Value=`"https://management.azure.com/`" />
<Property xsi:type=`"StringProperty`" Name=`"AuthenticationAuthority`" Value=`"https://login.microsoftonline.com/`" />
<Property xsi:type=`"StringProperty`" Name=`"StorageSuffix`" Value=`"core.windows.net`" />
<Property xsi:type=`"StringProperty`" Name=`"TenantId`" Value=`"123abc`" />
<Property xsi:type=`"StringProperty`" Name=`"SharedTenants`" Value=`"`[ { 'Tenant':'123abc', 'Subscriptions':['345', '567'] } ]`"` />
</CustomProperties>"
-LiteralPath @("XDHyp:\Connections\aazure") -PassThru -UserName "advc345" -SecurePassword
$psd
<!--NeedCopy-->

注意:

您可以添加多个租户。每个租户可以有多个订阅。

从其他租户中选择一个映像

可以在 Azure Compute Gallery 中选择属于不同 Azure 租户的映像,以使用 PowerShell 命令创建和更新 MCS 目录。

  1. 在托管单元根文件夹中,Citrix 创建了一个名为 sharedsubscription 的新共享订阅文件夹。
  2. 列出所有共享的订阅。

    Get-ChildItem XDHyp:\HostingUnits\azres\sharedsubscription.folder
    <!--NeedCopy-->
    
  3. 选择一个共享订阅,然后列出该共享订阅的所有共享资源组。

    Get-ChildItem XDHyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription
    <!--NeedCopy-->
    
  4. 选择一个资源组,然后列出该资源组的所有库。

    Get-ChildItem XDHyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\ xyz.resourcegroup
    <!--NeedCopy-->
    
  5. 选择一个库,然后列出该库的所有映像定义。

    Get-ChildItem XDHyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\xyz.resourcegroup\efg.gallery
    <!--NeedCopy-->
    
  6. 选择一个映像定义,然后列出该映像定义的所有映像版本。

    Get-ChildItem XDHyp:\HostingUnits\azres\image.folder\abc123.sharedsubscription\xyz.resourcegroup\efg.gallery\hij.imagedefinition
    <!--NeedCopy-->
    
  7. 使用以下元素创建和更新 MCS 目录:

    • 资源组
    • 库映像定义
    • 库映像版本

为 Azure 管理的流量创建安全的环境

MCS 允许通过环境中的 Cloud Connector 路由网络流量(从 Citrix Cloud 到 Azure 虚拟机管理程序的 API 调用)。此实现可帮助您锁定 Azure 订阅,以允许来自特定 IP 地址的网络流量。为此,请在 CustomProperties 中添加 ProxyHypervisorTrafficThroughConnector。设置自定义属性后,可以将 Azure 策略配置为拥有 Azure 托管磁盘的专用磁盘访问权限。

如果您将 Azure 策略配置为自动为每个新磁盘创建磁盘访问权限以使用私有端点,则不能使用与 Azure 强制执行的相同磁盘访问对象同时上载或下载五个以上的磁盘或快照。如果您在资源组级别配置 Azure 策略,则此限制适用于每个计算机目录;如果您在订阅级别配置 Azure 策略,则适用于所有计算机目录。 如果您未将 Azure 策略配置为自动为每个新磁盘创建磁盘访问权限以使用私有端点,则不会强制执行五次并发操作的限制。

注意:

目前,Connector Appliance 不支持此功能。有关与此功能相关的 Azure 限制,请参阅使用 Azure 私有链接限制托管磁盘的导入/导出访问权限

启用代理

要启用代理,请在主机连接上设置自定义属性,如下所示:

  1. 使用 Remote PowerShell SDK 打开 PowerShell 窗口。有关详细信息,请参阅 https://docs.citrix.com/en-us/citrix-daas/sdk-api.html#citrix-virtual-apps-and-desktops-remote-powershell-sdk/
  2. 运行以下命令:

    Add-PSSnapin citrix*.
    cd XDHyp:\Connections\
    dir
    <!--NeedCopy-->
    
  3. 将连接中的 CustomProperties 复制到记事本并将属性设置 <Property xsi:type="StringProperty" Name="ProxyHypervisorTrafficThroughConnector" Value="True" /> 附加到 CustomProperties 以启用代理。例如:

    <CustomProperties xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.citrix.com/2014/xd/machinecreation">
    <Property xsi:type="StringProperty" Name="SubscriptionId" Value="4991xxxx-2xxx-4xxx-8xxx-ff59a830xxxx" />
    <Property xsi:type="StringProperty" Name="ManagementEndpoint" Value="https://management.azure.com/" />
    <Property xsi:type="StringProperty" Name="AuthenticationAuthority" Value="https://login.microsoftonline.com/" />
    <Property xsi:type="StringProperty" Name="StorageSuffix" Value="core.windows.net" />
    <Property xsi:type="StringProperty" Name="TenantId" Value="5cxxxxx-9xxx-4xxx-8xxx-dffe3efdxxxx" />
    <Property xsi:type="StringProperty" Name="ProxyHypervisorTrafficThroughConnector" Value="True" />
    </CustomProperties>
    <!--NeedCopy-->
    
  4. 在 PowerShell 窗口中,为修改后的自定义属性分配一个变量。例如:

    $customProperty = '<CustomProperties xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.citrix.com/2014/xd/machinecreation">
    <Property xsi:type="StringProperty" Name="SubscriptionId" Value="4991xxxx-2xxx-4xxx-8xxx-ff59a830xxxx" />
    <Property xsi:type="StringProperty" Name="ManagementEndpoint" Value="https://management.azure.com/" />
    <Property xsi:type="StringProperty" Name="AuthenticationAuthority" Value="https://login.microsoftonline.com/" />
    <Property xsi:type="StringProperty" Name="StorageSuffix" Value="core.windows.net" />
    <Property xsi:type="StringProperty" Name="TenantId" Value="5cxxxxx-9xxx-4xxx-8xxx-dffe3efdxxxx" />
    <Property xsi:type="StringProperty" Name="ProxyHypervisorTrafficThroughConnector" Value="True" />
    </CustomProperties>'
    <!--NeedCopy-->
    
  5. 运行 $cred = Get-Credential。如果出现提示,请提供连接凭据。凭据是 Azure 应用程序 ID 和密钥。
  6. 运行 Set-Item -PSPath XDHyp:\Connections\<Connection_Name> -CustomProperties $customProperty -username $cred.username -Securepassword $cred.password

    重要:

    如果您收到一条提示缺失 SubscriptionId 的消息,请将自定义属性中的所有双引号 (“) 替换为反引号,然后是双引号 (`”)。例如:

    <CustomProperties xmlns:xsi=`"http://www.w3.org/2001/XMLSchema-instance`" xmlns=`"http://schemas.citrix.com/2014/xd/machinecreation`">
    <Property xsi:type=`"StringProperty`" Name=`"SubscriptionId`" Value=`"4991xxxx-2xxx-4xxx-8xxx-ff59a830xxxx`" />
    <Property xsi:type=`"StringProperty`" Name=`"ManagementEndpoint`" Value=`"https://management.azure.com/`" />
    <Property xsi:type=`"StringProperty`" Name=`"AuthenticationAuthority`" Value=`"https://login.microsoftonline.com/`" />
    <Property xsi:type=`"StringProperty`" Name=`"StorageSuffix`" Value=`"core.windows.net`" />
    <Property xsi:type=`"StringProperty`" Name=`"TenantId`" Value=`"5cxxxxx-9xxx-4xxx-8xxx-dffe3efdxxxx`" />
    <Property xsi:type=`"StringProperty`" Name=`"ProxyHypervisorTrafficThroughConnector`" Value=`"True`" />
    </CustomProperties>
    <!--NeedCopy-->
    
  7. 运行 dir 以验证更新的 CustomProperties 设置。

管理应用程序机密和机密过期日期

请务必在机密过期之前更改连接的应用程序机密。在密钥到期之前,您会在 Studio 上收到警报。

在 Azure 中创建应用程序机密

可以通过 Azure 门户为连接创建应用程序机密。

  1. 选择 Azure Active Directory
  2. 从 Azure AD 中的应用程序注册中,选择您的应用程序。
  3. 转到证书和密钥
  4. 单击“客户端密钥”>“新建客户端密钥”。

    创建应用程序密钥

  5. 提供密码的说明并指定持续时间。完成后,选择“添加”。

    注意:

    请务必保存客户端密钥,因为您以后将无法检索该密钥。

  6. 复制客户端机密值和过期日期。
  7. 在 Studio 中,编辑相应的连接,将“应用程序密钥”和“密钥到期日期”字段中的内容替换为您复制的值。

更改机密到期日期

您可以使用 Studio 添加或修改正在使用的应用密钥的到期日期。

  1. 添加连接和资源向导中,右键单击某个连接,然后单击编辑连接
  2. 在“连接属性”页上,单击“密钥到期日期”以添加或修改正在使用的应用程序密钥的过期日期。

更改密钥到期日期

所需的 Azure 权限

本节详细介绍了 Azure 所需的最低权限一般权限

最低权限

最低权限可提供更好的安全控制。但是,如果仅提供最低权限,则需要额外权限的新功能将失败。本节按操作列出最低权限。

创建主机连接

使用从 Azure 获得的信息添加主机连接。

"Microsoft.Network/virtualNetworks/read",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/disks/read",
"Microsoft.Resources/providers/read",
"Microsoft.Resources/subscriptions/locations/read",
"Microsoft.Resources/tenants/read"
<!--NeedCopy-->

VM 的电源管理

打开或关闭计算机实例的电源。

"Microsoft.Compute/virtualMachines/read",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/virtualMachines/start/action",
"Microsoft.Compute/virtualMachines/restart/action",
"Microsoft.Insights/diagnosticsettings/delete",
"Microsoft.Insights/diagnosticsettings/read",
"Microsoft.Insights/diagnosticsettings/write",
<!--NeedCopy-->

创建、更新或删除 VM

创建计算机目录,然后添加、删除、更新计算机和删除计算机目录。

以下是主映像是托管磁盘或与主机连接位于同一区域的快照时所需的最低权限列表。

"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Resources/deployments/validate/action",
"Microsoft.Resources/tags/read",
"Microsoft.Resources/tags/write",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/virtualMachines/write",
"Microsoft.Compute/virtualMachines/delete",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/snapshots/read",
"Microsoft.Compute/snapshots/write",
"Microsoft.Compute/snapshots/delete",
"Microsoft.Compute/snapshots/beginGetAccess/action",
"Microsoft.Compute/snapshots/endGetAccess/action",
"Microsoft.Compute/disks/read",
"Microsoft.Compute/disks/write",
"Microsoft.Compute/disks/delete",
"Microsoft.Compute/disks/beginGetAccess/action",
"Microsoft.Compute/disks/endGetAccess/action",
"Microsoft.Compute/locations/publishers/artifacttypes/types/versions/read",
"Microsoft.Compute/skus/read",
"Microsoft.Compute/virtualMachines/extensions/read",
"Microsoft.Compute/virtualMachines/extensions/write",
"Microsoft.Features/providers/features/read",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/subnets/join/action",
"Microsoft.Network/virtualNetworks/subnets/read",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/write",
"Microsoft.Network/networkSecurityGroups/delete",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkInterfaces/read",
"Microsoft.Network/networkInterfaces/write",
"Microsoft.Network/networkInterfaces/delete",
"Microsoft.Network/networkInterfaces/join/action",
"Microsoft.Network/locations/usages/read",
"Microsoft.Compute/capacityReservationGroups/capacityReservations/read"
<!--NeedCopy-->

您需要根据以下功能的最低权限获得下列额外的权限:

  • 如果主映像是与主机连接位于同一区域的存储帐户中的 VHD:

     "Microsoft.Storage/storageAccounts/read",
     "Microsoft.Storage/storageAccounts/listKeys/action",
     <!--NeedCopy-->
    
  • 如果主映像是 Azure Compute Gallery(以前为共享映像库)中的 ImageVersion:

     "Microsoft.Compute/galleries/read",
     "Microsoft.Compute/galleries/images/read",
     "Microsoft.Compute/galleries/images/versions/read",
     <!--NeedCopy-->
    
  • 如果主映像是托管磁盘、快照或 VHD 位于与主机连接区域不同的区域:

     "Microsoft.Storage/storageAccounts/read",
     "Microsoft.Storage/storageAccounts/listKeys/action",
     "Microsoft.Storage/storageAccounts/write",
     "Microsoft.Storage/storageAccounts/delete",
     "Microsoft.Storage/checknameavailability/read",
     "Microsoft.Storage/locations/usages/read",
     "Microsoft.Storage/skus/read",
     <!--NeedCopy-->
    
  • 如果您使用 Citrix 管理的资源组:

     "Microsoft.Resources/subscriptions/resourceGroups/write",
     "Microsoft.Resources/subscriptions/resourceGroups/delete",
     <!--NeedCopy-->
    
  • 如果您将主映像放入共享租户或订阅的 Azure Compute Gallery(前身为共享映像库)中:

     "Microsoft.Compute/galleries/write",
     "Microsoft.Compute/galleries/images/write",
     "Microsoft.Compute/galleries/images/versions/write",
     "Microsoft.Compute/galleries/read",
     "Microsoft.Compute/galleries/images/read",
     "Microsoft.Compute/galleries/images/versions/read",
     "Microsoft.Compute/galleries/delete",
     "Microsoft.Compute/galleries/images/delete",
     "Microsoft.Compute/galleries/images/versions/delete",
     "Microsoft.Resources/subscriptions/read",
     <!--NeedCopy-->
    
  • 如果您使用 Azure 专用主机支持:

     "Microsoft.Compute/hostGroups/read",
     "Microsoft.Compute/hostGroups/write",
     "Microsoft.Compute/hostGroups/hosts/read",
     <!--NeedCopy-->
    
  • 如果您将服务器端加密 (SSE) 与客户管理的密钥 (CMK) 结合使用:

     "Microsoft.Compute/diskEncryptionSets/read",
     <!--NeedCopy-->
    
  • 如果您使用 ARM 模板(计算机配置文件)部署 VM:

     "Microsoft.Resources/deployments/write",
     "Microsoft.Resources/deployments/operationstatuses/read",
     "Microsoft.Resources/deployments/read",
     "Microsoft.Resources/deployments/delete",
     "Microsoft.Insights/DataCollectionRuleAssociations/Read",
     "Microsoft.Insights/dataCollectionRules/read",
     <!--NeedCopy-->
    
  • 如果使用 Azure 模板规范作为计算机配置文件:

     "Microsoft.Resources/templateSpecs/read",
     "Microsoft.Resources/templateSpecs/versions/read",
     <!--NeedCopy-->
    

创建、更新和删除包含非托管磁盘的计算机

下面是主映像为 VHD 并使用管理员提供的资源组时所需的最低权限列表:

"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Resources/tags/read",
"Microsoft.Resources/tags/write",
"Microsoft.Storage/storageAccounts/delete",
"Microsoft.Storage/storageAccounts/listKeys/action",
"Microsoft.Storage/storageAccounts/read",
"Microsoft.Storage/storageAccounts/write",
"Microsoft.Storage/checknameavailability/read",
"Microsoft.Storage/locations/usages/read",
"Microsoft.Storage/skus/read",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/virtualMachines/delete",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/virtualMachines/write",
"Microsoft.Resources/deployments/validate/action",
"Microsoft.Network/networkInterfaces/delete",
"Microsoft.Network/networkInterfaces/join/action",
"Microsoft.Network/networkInterfaces/read",
"Microsoft.Network/networkInterfaces/write",
"Microsoft.Network/networkSecurityGroups/delete",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/write",
"Microsoft.Network/virtualNetworks/subnets/read",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/subnets/join/action",
"Microsoft.Network/locations/usages/read",
<!--NeedCopy-->

管理加入了 Azure AD 的设备

以下是管理加入了 Azure AD 的设备所需的最低权限列表:

"microsoft.directory/devices/standard/read"
"microsoft.directory/devices/delete"
<!--NeedCopy-->

成本管理

以下是检索虚拟机定价所需的最低权限:

"Microsoft.Consumption/pricesheets/read"
<!--NeedCopy-->

一般权限

贡献者角色拥有管理所有资源的完全访问权限。这组权限不会阻止您获取新功能。

以下权限集提供了将来的最佳兼容性,尽管它包含的权限超过了当前功能集所需的权限亦如此:

"Microsoft.Compute/diskEncryptionSets/read",
"Microsoft.Compute/disks/beginGetAccess/action",
"Microsoft.Compute/disks/delete",
"Microsoft.Compute/disks/endGetAccess/action",
"Microsoft.Compute/disks/read",
"Microsoft.Compute/disks/write",
"Microsoft.Compute/galleries/delete",
"Microsoft.Compute/galleries/images/delete",
"Microsoft.Compute/galleries/images/read",
"Microsoft.Compute/galleries/images/versions/delete",
"Microsoft.Compute/galleries/images/versions/read",
"Microsoft.Compute/galleries/images/versions/write",
"Microsoft.Compute/galleries/images/write",
"Microsoft.Compute/galleries/read",
"Microsoft.Compute/galleries/write",
"Microsoft.Compute/hostGroups/hosts/read",
"Microsoft.Compute/hostGroups/read",
"Microsoft.Compute/hostGroups/write",
"Microsoft.Compute/snapshots/beginGetAccess/action",
"Microsoft.Compute/snapshots/delete",
"Microsoft.Compute/snapshots/endGetAccess/action",
"Microsoft.Compute/snapshots/read",
"Microsoft.Compute/snapshots/write",
"Microsoft.Compute/virtualMachines/deallocate/action",
"Microsoft.Compute/virtualMachines/delete",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/virtualMachines/restart/action",
"Microsoft.Compute/virtualMachines/start/action",
"Microsoft.Compute/virtualMachines/write",
"Microsoft.Compute/locations/publishers/artifacttypes/types/versions/read",
"Microsoft.Compute/skus/read",
"Microsoft.Compute/virtualMachines/extensions/read",
"Microsoft.Compute/virtualMachines/extensions/write",
"Microsoft.Network/networkInterfaces/delete",
"Microsoft.Network/networkInterfaces/join/action",
"Microsoft.Network/networkInterfaces/read",
"Microsoft.Network/networkInterfaces/write",
"Microsoft.Network/networkSecurityGroups/delete",
"Microsoft.Network/networkSecurityGroups/join/action",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/networkSecurityGroups/write",
"Microsoft.Network/virtualNetworks/subnets/read",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/virtualNetworks/subnets/join/action",
"Microsoft.Network/locations/usages/read",
"Microsoft.Resources/deployments/operationstatuses/read",
"Microsoft.Resources/deployments/read",
"Microsoft.Resources/deployments/validate/action",
"Microsoft.Resources/deployments/write",
"Microsoft.Resources/deployments/delete",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Resources/subscriptions/resourceGroups/write",
"Microsoft.Resources/subscriptions/resourceGroups/delete",
"Microsoft.Resources/providers/read",
"Microsoft.Resources/subscriptions/locations/read",
"Microsoft.Resources/subscriptions/read",
"Microsoft.Resources/tags/read",
"Microsoft.Resources/tags/write",
"Microsoft.Resources/tenants/read",
"Microsoft.Resources/templateSpecs/read",
"Microsoft.Resources/templateSpecs/versions/read",
"Microsoft.Storage/storageAccounts/delete",
"Microsoft.Storage/storageAccounts/listKeys/action",
"Microsoft.Storage/storageAccounts/read",
"Microsoft.Storage/storageAccounts/write",
"Microsoft.Storage/checknameavailability/read",
"Microsoft.Storage/locations/usages/read",
"Microsoft.Storage/skus/read",
"Microsoft.Features/providers/features/read",
"Microsoft.Insights/DataCollectionRuleAssociations/Read",
"Microsoft.Insights/dataCollectionRules/read",
"Microsoft.Insights/diagnosticsettings/delete",
"Microsoft.Insights/diagnosticsettings/read",
"Microsoft.Insights/diagnosticsettings/write",
"Microsoft.Compute/capacityReservationGroups/capacityReservations/read"
"Microsoft.Consumption/pricesheets/read"
<!--NeedCopy-->

Azure AD 权限

如果您创建加入了 Azure AD 的计算机目录,那么当您启用加入了 Azure AD 的设备管理时,MCS 将负责管理 Azure AD 设备。Azure AD内置的云设备管理员角色提供了最佳的兼容性,尽管它包含的权限确实超过了当前功能集所需的权限。

配置所需的 Azure 主机连接权限

您可以在 Azure 中轻松配置绑定到主机连接的服务主体或用户帐户所需的所有最低权限,以便使用 ARM 模板执行所有 MCS 操作。此 ARM 模板可自动执行以下操作:

  • 创建具有操作所需最低权限的 Azure 角色。
  • 在订阅级别将此角色分配给现有 Azure 服务主体。

您可以使用 Azure 门户或 PowerShell 命令部署此 ARM 模板。有关详细信息,请参阅 Citrix Virtual Apps and Desktops 操作的 ARM 模板

下一步的去向

更多信息

与 Microsoft Azure 的连接