连接到 微软 Azure

注意:

自 2023 年 7 月起,微软 已将 Azure 活动目录 (Azure AD) 重命名为 微软 Entra ID。本文档中,任何对 Azure 活动目录、Azure AD 或 AAD 的引用现在均指 微软 Entra ID。

(/zh-cn/citrix-virtual-apps-desktops/2407/install-configure/connections.html)介绍了创建连接的向导。以下信息涵盖了 Azure Resource Manager 云环境特有的详细信息。

注意:

在创建到 Microsoft Azure 的连接之前,您必须完成将 Azure 帐户设置为资源位置的设置。请参阅(/zh-cn/citrix-virtual-apps-desktops/2407/install-configure/install-prepare/azure.html)。

创建服务主体并建立连接

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

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

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

  • 使用 Web Studio 创建服务主体和连接(/zh-cn/citrix-virtual-apps-desktops/2407/install-configure/connections/connection-azure-resource-manager.html#create-a-service-principal-and-connection-using-web-studio)
  • 使用 PowerShell 创建服务主体(/zh-cn/citrix-virtual-apps-desktops/2407/install-configure/connections/connection-azure-resource-manager.html#create-a-service-principal-using-powershell)
  • 在 Azure 中获取应用程序机密(/zh-cn/citrix-virtual-apps-desktops/2407/install-configure/connections/connection-azure-resource-manager.html#get-the-application-secret-in-azure)
  • 使用现有服务主体创建连接(/zh-cn/citrix-virtual-apps-desktops/2407/install-configure/connections/connection-azure-resource-manager.html#create-a-connection-using-an-existing-service-principal)

注意事项

  • Citrix® 建议使用具有贡献者角色的服务主体。但是,请参阅最低权限部分以获取最低权限列表。
  • 首次创建连接时,Azure 会提示您授予其必要的权限。对于将来的连接,您仍然需要进行身份验证,但 Azure 会记住您之前的同意,并且不会再次显示提示。
  • 用于身份验证的帐户必须具有使用 Azure RBAC 在订阅中分配角色的权限。例如,订阅的所有者、基于角色的访问控制管理员或用户访问管理员。
  • 用于身份验证的帐户必须是订阅目录的成员。需要注意两种类型的帐户:“工作或学校”帐户和“个人 Microsoft 帐户”。有关详细信息,请参阅 CTX219211
  • 尽管您可以通过将现有 Microsoft 帐户添加为订阅目录的成员来使用它,但如果用户之前被授予对目录某个资源的来宾访问权限,则可能会出现复杂情况。在这种情况下,他们可能在目录中有一个占位符条目,该条目未授予他们必要的权限,并且会返回错误。

    通过从目录中删除资源并明确地重新添加它们来纠正此问题。但是,请谨慎使用此选项,因为它会对帐户可以访问的其他资源产生意外影响。

  • 存在一个已知问题,即某些帐户在实际上是成员时被检测为目录来宾。这种配置通常发生在较早建立的目录帐户中。解决方法:向目录添加一个帐户,该帐户将采用正确的成员资格值。
  • 资源组只是资源的容器,它们可以包含来自其自身区域以外的区域的资源。如果您期望资源组区域中显示的资源可用,这可能会造成混淆。
  • 确保您的网络和子网足够大,可以容纳您所需的计算机数量。这需要一些远见,但 Microsoft 会根据地址空间容量提供指导,帮助您指定正确的值。

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

重要:

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

使用 Web Studio,您可以在单个工作流中创建服务主体和连接。服务主体授予连接访问 Azure 资源的权限。当您向 Azure 进行身份验证以创建服务主体时,会在 Azure 中注册一个应用程序。为注册的应用程序创建一个密钥(称为客户端密钥或应用程序密钥)。注册的应用程序(在本例中为连接)使用客户端密钥向 Azure AD 进行身份验证。

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

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

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

  1. 连接页面上,选择创建新连接Microsoft Azure连接类型和您的 Azure 环境。
  2. 选择用于创建虚拟机的工具,然后选择下一步
  3. 连接详细信息页面上,输入您的 Azure 订阅 ID 和连接名称。输入订阅 ID 后,创建新按钮将启用。

    注意:

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

  4. 选择创建新,然后输入 Azure Active Directory 帐户用户名和密码。
  5. 选择登录
  6. 选择 接受,以便授予 Citrix Virtual Apps and Desktops™ 所列出的所有权限。Citrix Virtual Apps and Desktops 会创建一个服务主体,该主体允许其代表指定用户管理 Azure 资源。
  7. 选择接受后,您将返回向导中的连接页面。

    注意:

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

  8. 在“连接详细信息”页面上,选择“下一步”。

    注意:

    在成功向 Azure 进行身份验证并同意授予所需权限之前,您无法继续访问下一页。

  9. 请为该连接配置所需的资源。这些资源主要由区域和网络组成。

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

查看应用程序 ID

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

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

使用 PowerShell 创建服务主体

要使用 PowerShell 创建服务主体,请连接到您的 Azure 资源管理器 订阅,并使用以下部分中提供的 PowerShell cmdlet。

确保您已准备好以下各项:

  • SubscriptionId: Azure 资源管理器 SubscriptionID,用于您希望在其中预配虚拟桌面代理 (VDA) 的订阅。
  • ActiveDirectoryID:您已在 Azure 活动目录 中注册的应用程序的租户 ID。
  • ApplicationName:此项指要在 Azure AD 中创建的应用程序的名称。

具体步骤如下所示:

连接到您的 Azure 资源管理器订阅。

`Connect-AzAccount`
  1. 选择要在其中创建服务主体的 Azure Resource Manager 订阅。

    Get-AzSubscription -SubscriptionId $subscriptionId | Select-AzSubscription

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

    $AzureADApplication = New-AzADApplication -DisplayName $ApplicationName

  3. 创建服务主体。

    New-AzADServicePrincipal -ApplicationId $AzureADApplication.AppId

  4. 为服务主体分配角色。

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

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

获取 Azure 中的应用程序机密

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

具体步骤如下所示:

  1. 从 Web Studio 管理界面或使用 PowerShell 获取 应用程序 ID
  2. 登录 Azure 门户。
  3. 在 Azure 中,选择 Azure 活动目录
  4. 在 Azure AD 的 应用注册 中,选择您的应用程序。
  5. 转到 证书和密码
  6. 单击 客户端密码

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

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

确保您已准备好以下各项:

  • 订阅 ID
  • 活动目录 ID (租户 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 进行身份验证。我们建议您定期更改密钥以确保安全。请务必保存该密钥,因为以后无法检索该密钥。
    • 机密过期日期。输入应用程序机密过期后的日期。在机密密钥过期前 14 天,您会在“托管”节点中的特定主机连接上看到警告图标。但是,如果机密密钥过期,您将收到错误。

      注意:

      出于安全目的,过期期限从现在起不能超过两年。

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

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

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

  6. 为该连接配置所需的资源。这些资源主要包括区域和网络设置。

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

管理和维护服务主体和连接

本节详细介绍了如何管理服务主体和连接:

配置 Azure 限制设置

Azure Resource Manager 会限制对订阅和租户的请求,根据定义的限制路由流量,并根据提供商的特定需求进行调整。有关详细信息,请参阅 Microsoft 网站上的限制 Resource Manager 请求。订阅和租户存在限制,管理大量计算机可能会出现问题。例如,包含大量计算机的订阅可能会遇到与电源操作相关的性能问题。

提示:

有关详细信息,请参阅使用机器创建服务提高 Azure 性能

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

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

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

使用 Web Studio 配置针对特定 Azure 连接的 Azure 平台操作:

  1. 在 Web Studio 中,选择左侧窗格中的 托管
  2. 选择该连接。
  3. 编辑连接 向导中,选择 高级
  4. 高级 页面上,使用配置选项指定每分钟的并发操作数和最大新操作数,以及任何其他连接选项。

Azure 流量限制

MCS 默认支持 500 个最大并发操作。或者,您可以使用远程 PowerShell SDK 设置最大并发操作数。

使用 PowerShell 属性 MaximumConcurrentProvisioningOperations 来指定 Azure 预配操作的最大并发数。使用此属性时,请考虑:

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

在 Azure 中启用映像共享

创建或更新计算机目录时,您可以从不同的 Azure 租户和订阅中选择共享映像(通过 Azure 计算库共享)。要在租户内部或跨租户启用映像共享,您必须在 Azure 中进行必要的设置:

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

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

例如,如果存在一个服务主体 (SPN 1),它在 Studio 中配置为:

服务主体: SPN 1

订阅:订阅 1

租户:租户 1

映像位于不同的订阅中,它在 Studio 中配置为:

订阅:订阅 2

租户:租户 1

如果要将订阅 2 中的映像与订阅 1 (SPN 1) 共享,请转到订阅 2,并将资源组与 SPN1 共享。

必须使用 Azure 基于角色的访问控制 (RBAC) 与另一个 SPN 共享映像。Azure RBAC 是用于管理对 Azure 资源的访问的授权系统。有关 Azure RBAC 的更多信息,请参阅 Microsoft 文档 什么是 Azure 基于角色的访问控制 (Azure RBAC)。要授予访问权限,您需要以“参与者”角色在资源组范围为服务主体分配角色。要分配 Azure 角色,您必须拥有 Microsoft.Authorization/roleAssignments/write 权限,例如“用户访问管理员”或“所有者”。有关与另一个 SPN 共享映像的更多信息,请参阅 Microsoft 文档 使用 Azure 门户分配 Azure 角色

有关使用 PowerShell 命令从不同订阅选择映像的信息,请参阅 从不同订阅选择映像

跨租户共享映像

要通过 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 身份登录,并授予应用程序注册对包含库映像的资源组的访问权限。有关详细信息,请参阅 跨租户验证请求

要使用 PowerShell 命令从不同租户的映像创建目录,请执行以下操作:

  1. 使用共享租户 ID 更新托管连接自定义属性
  2. 从不同租户中选择映像

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

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

注意:

请确保您已在 Azure 中配置了必要的设置,以启用跨租户的映像共享。有关详细信息,请参阅 跨租户共享映像

对于连接,请完成以下步骤:

  1. 在 Web Studio 中,选择左侧窗格中的 托管
  2. 选择连接,然后在操作栏中选择 Edit Connection

    共享租户

  3. 共享租户中,执行以下操作:

    • 提供与连接订阅关联的应用程序 ID 和应用程序密钥。Citrix Virtual Apps and Desktops 使用此信息向 Azure AD 进行身份验证。
    • 添加与连接订阅共享 Azure Compute Gallery 的租户和订阅。每个租户最多可以添加 8 个共享租户和 8 个订阅。
  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 目录:

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

    有关如何使用远程 PowerShell SDK 创建目录的信息,请参阅 https://developer-docs.citrix.com/projects/citrix-virtual-apps-desktops-sdk/en/latest/creating-a-catalog/

使用共享租户 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 计算库中选择属于不同 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 目录:

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

    有关如何使用 Remote PowerShell SDK 创建目录的信息,请参阅 https://developer-docs.citrix.com/projects/citrix-virtual-apps-desktops-sdk/en/latest/creating-a-catalog/

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

请务必在密钥过期之前更改连接的应用程序密钥。在密钥过期前 14 天,您会在托管节点中的特定主机连接上看到一个警告图标。但是,如果密钥过期,您将收到错误。

在 Azure 中创建应用程序机密

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

  1. 选择 Azure 活动目录
  2. 在 Azure AD 的应用注册中,选择您的应用程序。
  3. 转到证书和机密
  4. 单击客户端机密 > 新建客户端机密
  5. 提供机密描述并指定持续时间。完成后,选择添加

    注意:

    请务必保存客户端机密,因为以后无法检索。

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

更改机密的过期日期

您可以使用 Web Studio 添加或修改正在使用的应用程序机密的过期日期。

注意:

在机密密钥过期前 14 天,您会在托管节点中特定主机连接上看到一个警告图标。

  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-->

虚拟机电源管理

启动或关闭计算机实例。

"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-->

创建、更新或删除虚拟机

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

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

"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",
<!--NeedCopy-->

对于以下功能,您需要在最低权限的基础上额外授予以下权限:

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

     "Microsoft.Storage/storageAccounts/read",
     "Microsoft.Storage/storageAccounts/listKeys/action",
     <!--NeedCopy-->
    
  • 如果主映像是来自共享映像库的 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 计算库(以前称为共享映像库)中:

     "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-->

一般性权限

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

以下权限集提供了面向未来的最佳兼容性,尽管它包含的权限比当前功能集实际所需的要多:

"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",
<!--NeedCopy-->

验证主机连接上的权限

您可以验证主机连接上的权限,以执行与创建和管理 MCS 计算机目录相关的任务。此实现可帮助您提前找出不同场景(例如创建、删除和更新 VM、VM 的电源管理)所需的缺失权限,从而避免在关键时刻受阻。

您可以使用 PowerShell 命令 Test-HypHypervisorConnection 验证主机连接上的权限。该命令的结果将捕获为一个列表,列表中的每个项目都分为三个部分。

  • 类别:用户可以执行的用于创建和管理 MCS 计算机目录的操作或任务。
  • 纠正措施:管理员必须执行的步骤,以解决用户缺少权限的差异。
  • 缺少权限:某个类别缺少权限的列表。

要验证权限,请执行以下操作:

  1. 创建到 Azure 的主机连接。
  2. 从 交付控制器™ 主机打开 PowerShell 窗口。
  3. 运行 asnp citrix* 以加载思杰特定的 PowerShell 模块。
  4. 运行以下命令以验证您是否具有测试连接所需的权限。

    Test-HypHypervisorConnection -LiteralPath "XDHyp:\Connections\AzureCon"
    <!--NeedCopy-->
    

    SPN 所需的角色级别权限:

    • Microsoft.Authorization/roleDefinitions/read(在订阅的级别上进行操作,或者在提供了资源组的情况下,在资源组的级别上进行操作)
    • Microsoft.Authorization/roleAssignments/read (在订阅的层级上,或者在资源组的层级上,如果资源组已经被提供的话)

    SPN 所需的 API 级别权限:

    微软.图:

    • 应用程序.读取.所有
    • 目录.读取.所有
    • 服务主体终结点.读取.所有
  5. 在您添加了查找权限所需的缺失权限之后,请运行以下命令,以验证您是否在各个类别中拥有权限。

    示例:

    若要测试需要更高级别授权的订阅级别连接,请执行以下操作:

    Test-HypHypervisorConnection -LiteralPath XDHyp:\Connections\ AzureCon -SecurePassword $password -UserName 922e65d5-38ae-4cf5-xxxx-xxxxxxxxx
    <!--NeedCopy-->
    

    示例:

    若要测试不需要高级别授权的资源组级别连接,请执行以下操作:

    Test-HypHypervisorConnection -LiteralPath XDHyp:\Connections\testles -CustomProperties $customProperties | Format-List
    <!--NeedCopy-->
    

    注意:

    CustomProperties 参数用于提供资源组级别,因为资源组是连接特定信息。

    示例:

    要在资源组级别测试具有更高级别授权的连接:

    Test-HypHypervisorConnection -LiteralPath XDHyp:\Connections\testles -SecurePassword $password -UserName 922e65d5-38ae-4cf5-832b-54122196b7dd -CustomProperties $customProperties
    <!--NeedCopy-->
    

有关权限的信息,请参阅所需的 Azure 权限

下一步操作

更多信息

连接到 微软 Azure