Citrix DaaS™

使用 Image Portability Service 在资源位置之间迁移工作负载

注意:

现有的云版 IPS 已弃用。现在提供本地版 IPS。有关此本地解决方案的更多信息,请参阅我们的文档

云版 IPS 将于 2026 年 4 月 27 日下线。请务必在此日期之前完全过渡到新的本地版 IPS。

如有任何疑问或需要更多信息,请联系您的 Citrix 代表。

Image Portability Service 简化了跨平台映像的管理。Citrix Virtual Apps and Desktops™ REST API 可用于自动执行 Citrix Virtual Apps and Desktops 站点中资源的管理。

  • Image Portability 工作流始于您使用 Citrix Cloud 启动两个资源位置之间的映像迁移。导出映像后,Image Portability Service 可帮助您传输和准备映像,使其在目标虚拟机管理程序或公有云上运行。最后,Citrix Provisioning 或 Machine Creation Services™ 在目标环境中预配映像。

  • 组件

  • Image Portability Service 组件包括:

  • Citrix Cloud™ 服务
  • Citrix Credential Wallet
  • Citrix Connector™ Appliance
  • Compositing Engine VM
  • PowerShell 示例脚本

Citrix Cloud 服务

Citrix Cloud Services API 是一种 REST API 服务,可与 Image Portability Service 交互。使用 REST API 服务,您可以创建和监控 Image Portability 作业。例如,您可以发出 API 调用来启动 Image Portability 作业(例如导出磁盘),然后发出调用来获取作业状态。

Citrix Credentials Wallet

Citrix Credentials Wallet 服务安全地管理系统凭据,允许 Image Portability Service 与您的资产交互。例如,当从 vSphere 导出磁盘到 SMB 共享时,Image Portability Service 需要凭据才能打开与 SMB 共享的连接以写入磁盘。如果凭据存储在 Credential Wallet 中,则 Image Portability Service 可以检索并使用这些凭据。

此服务使您能够完全管理您的凭据。Cloud Services API 充当访问点,使您能够创建、更新和删除凭据。

Compositing Engine

Compositing Engine 是 Image Portability Service 的主力。Compositing Engine (CE) 是在 Image Portability 导出或准备作业开始时创建的单个 VM。这些 VM 在作业发生的同一环境中创建。例如,当从 vSphere 导出磁盘时,CE 在 vSphere 服务器上创建。同样,当在 Azure、AWS 或 Google Cloud 中运行准备作业时,CE 分别在 Azure、AWS 或 Google Cloud 中创建。CE 将您的磁盘挂载到自身,然后对磁盘执行必要的操作。准备或导出作业完成后,CE VM 及其所有组件都将被删除。

Connector Appliance

Connector Appliance 运行提供程序软件以管理 IPS 资源,它在您的环境(包括本地和您的 Azure、AWS 或 Google Cloud 订阅中)中运行,并充当单个作业的控制器。它从云服务接收作业指令,并创建和管理 Compositing Engine VM。Connector Appliance VM 充当云服务与您的环境之间单一、安全的通信点。在您的每个资源位置(本地、Azure、AWS 或 Google Cloud)中部署一个或多个 Connector Appliance。出于安全考虑,每个资源位置都会部署一个 Connector Appliance。通过将 Connector Appliance 和 Compositing Engine 部署在同一位置,部署的安全状况将大大提高,因为所有组件和通信都保留在您的资源位置内。

PowerShell 模块

我们提供了一系列 PowerShell 模块,可在脚本中使用,作为开发您自己的自定义自动化的起点。提供的模块按原样支持,但如果您的部署需要,您可以修改它们。

  • PowerShell 自动化使用提供的配置参数来组成对 Citrix Cloud API 服务的 REST 调用,以启动作业,然后随着作业的进行向您提供定期更新。

  • 如果您想开发自己的自动化解决方案,可以使用您首选的编程语言直接调用云服务。有关配置和使用 Image Portability Service REST 端点和 PowerShell 模块的详细信息,请参阅 API 门户。

  • 工作流

Image Portability Service 使用多阶段工作流来准备从本地资源位置到您的公有云订阅的主目录映像。该服务从本地虚拟机管理程序平台导出映像,然后您将其上传到您的公有云订阅(我们提供的 PowerShell 上传实用程序可以帮助自动化此过程)。然后,Image Portability 准备映像以使其与您的公有云平台兼容。最后,映像发布并准备好作为新的计算机目录部署在您的云资源位置中。

  • Image Portability 工作流

  • 这些高级工作流基于映像的源和目标预配配置(Machine Creation 或 Citrix Provisioning™)。所选工作流决定了需要哪些 Image Portability 作业步骤。

请参阅下表,了解每个受支持的 IPS 工作流需要哪些作业。

  • 工作流(源到目标) 导出 上传 准备 发布
  • | — | — | — | — | — |
  • MCS 到 MCS
  • PVS 到 MCS*
  • PVS 到 PVS 不适用
MCS 到 PVS

*假设您拥有作为 Citrix Provisioning vDisk 的原始映像,并且不需要直接从源平台虚拟机管理程序导出它。

要求

要开始使用 Image Portability,您必须满足以下要求。

  • Citrix 计算机目录映像

IPS 要求使用具有以下经过测试的配置之一的映像:

  • Windows Server 2016、2019 和 2022H2
  • Windows 10 或 11
  • 使用 Machine Creation Services 或 Citrix Provisioning 预配
  • Citrix Virtual Delivery Agent

  • 在 Azure 中为控制台访问启用了远程桌面服务

映像可移植性服务支持以下虚拟机管理程序和云平台:

源平台:

  • VMware vSphere 7.0 和 8.0

  • XenServer 8/Citrix Hypervisor 8.2

  • Nutanix AHV(仅限 Prism Element)

  • Microsoft Azure

  • Google Cloud Platform

  • 目标平台:

  • VMware vSphere 8.0

  • XenServer 8/Citrix Hypervisor 8.2

    • Nutanix AHV(仅限 Prism Element)

    • Microsoft Azure

    • AWS

    • Google Cloud Platform

Citrix Connector Appliance

-  您需要在计划使用映像可移植性的每个资源位置中安装和配置 Citrix Connector Appliance。例如,如果您使用映像可移植性将映像从 vSphere 移动到 Azure、AWS 和 Google Cloud,则至少需要四个 Citrix Connector Appliance:

-  有关详细说明,请参阅[部署 Connector Appliance](#deploy-connector-appliances)。

SMB (Windows) 文件共享

您需要一个 Windows SMB 文件共享来存储导出作业的输出。该共享必须可供将在您使用映像可移植性服务的资源位置中创建的 Compositing Engine VM 访问。请确保共享上的可用空间至少是映像文件系统配置大小的两倍。

用于运行 PowerShell 脚本的计算机

请确保运行 PowerShell 脚本的计算机具有以下各项:

-  PowerShell 版本 5.1。
  • 与 SMB 文件共享的快速网络连接。它可以是托管文件共享的同一台计算机。

  • 与您计划使用映像可移植性功能的公共云平台的快速网络连接。例如,Azure、AWS 或 Google Cloud。

    有关如何从 PowerShell Gallery 下载和配置映像可移植性模块的详细信息,请参阅准备用于 PowerShell 的计算机部分。

您的 Citrix Cloud 客户 ID

请确保您拥有有效的 Citrix DaaS 订阅

要继续,您需要访问 Citrix DaaS(以前称为 Citrix Virtual Apps and Desktops 服务)。如果您没有访问权限,请联系您的 Citrix 代表。

有关创建和配置用于映像可移植性的 API 客户端的说明,请参阅 API 入门文档。

Azure 所需的权限和配置

为了使映像可移植性服务能够对您的 Azure 资源执行操作,您需要向映像可移植性服务使用的 Azure 服务主体授予某些 Azure 功能的权限。有关详细列表,请参阅 Microsoft Azure 所需的权限

您可以将 Contributor 角色分配给关联资源中的服务主体。或者,要分配所需的最低权限,您可以创建具有所需权限的自定义角色,并将其分配给作用域限定为相应资源的服务主体。

有关为 Azure 服务主体配置安全角色以及创建自定义角色的详细信息,请参阅 Azure 文档。

Google Cloud 所需的权限和配置

Image Portability Service 若要在您的 Google Cloud 项目中执行操作,您需要向 Image Portability Service 使用的 Google Cloud 服务主体授予特定功能的权限。

有关详细列表,请参阅所需的 Google Cloud 权限

您可以使用以下角色分配这些权限:

  • Cloud Build 编辑者
  • Compute 管理员
  • Storage 管理员
  • 服务帐号用户

有关配置服务帐号权限的更多信息,请参阅 Google Cloud 文档

Amazon Web Services 所需权限和配置

若要使用 Amazon Web Services (AWS) 帐号执行镜像可移植性服务工作流,相应的 Identity and Access Management (IAM) 身份必须具有正确的权限。

有关详细列表,请参阅 AWS 所需权限

设置 Image Portability Service

若要设置 Image Portability Service,您需要:

部署连接器设备

Image Portability 需要 Citrix Connector Appliances 来创建 Image Portability 作业。Connector Appliances 有助于保护与您的本地和公共云环境的交互。Connector Appliances 会与 Image Portability Service 通信,以报告作业状态和整体服务运行状况。

若要在您的环境中部署和配置 Connector Appliance,请按照《适用于云服务的连接器设备》中的步骤操作。

在规划部署时,请注意设备所需的硬件配置网络端口访问

部署并注册设备后,将自动安装启用 Image Portability 所需的组件。

准备用于 PowerShell 的计算机

为了帮助您快速开始使用 Image Portability,我们创建了 PowerShell 模块,您可以自定义这些模块并将其与服务配合使用。

  • 以下部分介绍了如何准备一台计算机以运行 PowerShell 脚本。这些脚本只是几个示例。请根据您的需要修改或增强它们。

  • 注意:

    初始安装后,请使用 Update-Module 更新 PowerShell 模块。

PowerShell 要求

若要使用 PowerShell 脚本,您需要满足以下条件:

  • 一台 Windows 计算机,用于运行驱动镜像可移植性作业的 PowerShell 脚本。该计算机:

    • 具有最新版本的 PowerShell。

    • 与本地 SMB 文件共享具有 10-Gbs 或更快的网络连接,并与您的公共云(例如 Azure、AWS 或 Google Cloud)具有快速连接。

    • 可以是托管文件共享的同一台计算机。

    • 是运行 Windows 10、Windows Server 2019 或 Windows Server 2022 且具有最新 Microsoft 补丁的计算机。

    • 可以连接到 Microsoft PowerShell Gallery 以下载所需的 PowerShell 库。

    • 根据您的 Windows 版本,您可能需要禁用 TLS 1.0/1.1 支持。有关更多信息,请参阅 Microsoft PowerShell Gallery TLS 支持文档

    • 默认情况下,PowerShell 不会自动通过代理服务器进行身份验证。请确保您已根据 Microsoft 和您的代理供应商的最佳实践配置 PowerShell 会话以使用您的代理服务器。

  • 如果在运行 PowerShell 脚本时遇到与 PowerShellGet 缺失或旧版本相关的错误,则需要按如下方式安装最新版本:


    -  Install-Module -Name PowerShellGet -Force -Scope CurrentUser -AllowClobber

<!--NeedCopy-->

安装库和模块

Image Portability Service 依赖于 Microsoft PowerShell Gallery 中的库来驱动可移植性操作。

重要提示:

初始安装后,请使用 Update-Module 安装新版本。

  1. 运行以下 PowerShell 命令以下载最新模块:

    
    Install-Module -Name "Citrix.Workloads.Portability","Citrix.Image.Uploader" -Scope CurrentUser
    
    <!--NeedCopy-->
    
    • 要更改 PATH 环境变量:

      Y 并按 Enter 接受。

    • 要安装 NuGet 提供程序:

      Y 并按 Enter 接受。

    • 如果提示有关不受信任的存储库:

      A(全部是)并按 Enter 继续。

  2. 运行以下命令确认所有必需模块均已下载:

    
    Get-InstalledModule -Name Citrix.*
    
    <!--NeedCopy-->
    

    此命令返回类似于以下内容的输出:

    名称 存储库 描述
    Citrix.Image.Uploader PSGallery 用于将 VHD(x) 上传到 Azure 存储帐户、AWS 或 GCP 并获取 VHD(x) 信息的命令
    Citrix.Workloads.Portability PSGallery Citrix Image Portability Service 映像作业的独立 Cmdlet

将模块更新到最新版本

运行以下命令将脚本更新到最新版本。


    -  Update-Module -Name "Citrix.Workloads.Portability","Citrix.Image.Uploader" -Force

<!--NeedCopy-->

安装 Citrix Virtual Apps and Desktops Remote PowerShell SDK

-  Image Portability Service 需要 Citrix Virtual Apps and Desktops Remote PowerShell SDK 才能在 Citrix Cloud 中创建和管理可移植性作业。

-  在您的计算机上下载并安装 [Remote PowerShell SDK](/zh-cn/citrix-daas/sdk-api.html)。

安装特定于平台的第三方组件

    -  Image Portability Service PowerShell 模块不安装第三方依赖项。因此,您可以将安装限制为仅针对您所定位的平台。如果您正在使用以下平台之一,请按照相关说明安装平台依赖项:
VMware
    -  如果您正在创建与您的 VMware 环境通信的 Image Portability 作业,请运行以下命令安装所需的 VMware PowerShell 模块。

        -  Install-Module -Name VMWare.PowerCLI -Scope CurrentUser -AllowClobber -Force -SkipPublisherCheck

<!--NeedCopy-->
Amazon Web Services
    -  如果您正在 AWS 中创建 Image Portability 作业,请下载并安装 [AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html),然后运行这些命令安装所需的 AWS PowerShell 模块:

Install-Module -Name AWS.Tools.Installer
Install-AWSToolsModule AWS.Tools.EC2,AWS.Tools.S3

<!--NeedCopy-->
Azure

如果您正在 Azure 中创建 Image Portability 作业,请下载并安装 Azure 命令行实用程序,然后运行这些命令安装所需的 Azure PowerShell 模块:


Install-Module -Name Az.Accounts -Scope CurrentUser -AllowClobber -Force
Install-Module -Name Az.Compute -Scope CurrentUser -AllowClobber -Force

<!--NeedCopy-->
Google Cloud

如果您正在 Google Cloud 中创建 Image Portability 作业,请在您的计算机上下载并安装 Google Cloud SDK

卸载脚本和模块

运行以下命令卸载 Image Portability 软件使用的模块。

注意:

卸载 IPS 模块时,第三方脚本和组件不会自动删除。

要卸载模块:


Get-InstalledModule -Name "Citrix.Workloads.Portability","Citrix.Images.Uploader" | Uninstall-Module

<!--NeedCopy-->

将凭据添加到凭据钱包

对于端到端自动化场景,您可以配置映像可移植性服务,以非交互方式通过 Citrix Cloud、您的公有云和本地资源进行身份验证。此外,当我们的 API 直接通过您的本地和公有云资源进行身份验证时,映像可移植性服务会使用存储在 Citrix 凭据钱包中的凭据。按照本节所述设置凭据是运行导出、准备和发布作业的必需步骤。

运行作业时,映像可移植性服务需要访问您可以控制的资源。例如,如果映像可移植性服务要将磁盘从 vSphere 服务器导出到 SMB 共享,则该服务需要登录到这两个系统。为了保护此帐户信息,映像可移植性服务使用 Citrix 凭据钱包服务。此服务将您的凭据以用户定义的名称存储在钱包中。当您要运行作业时,请提供要使用的凭据名称。此外,这些凭据可以随时从钱包中更新或删除。

通常为以下平台存储凭据:

-  Microsoft Azure
    -  AWS
    -  Google Cloud
  • SMB Share
    • VMware vSphere
    • Nutanix AHV
    • XenServer®

要管理凭据,请参阅 映像可移植性服务 API开发人员 API 门户 的“凭据管理”部分。

使用映像可移植性服务

要在您的本地资源位置中准备映像以用于您的公有云订阅,需要在 Citrix Cloud 中创建映像可移植性作业。您可以创建作业以在脚本或程序中直接对服务进行 API 调用,也可以使用我们开发的示例 PowerShell 模块来自动执行 API 调用。有关使用 REST API 和 PowerShell 模块创建 IPS 作业的信息,请参阅 映像可移植性服务开发人员 API 门户

使用 Citrix Provisioning 发布计算机目录

映像可移植性服务 (IPS) 可与 Azure、AWS、Google Cloud、Nutanix、vSphere 和 XenServer 中的 Machine Creation Services (MCS) 结合使用,也可与 Azure、Google Cloud、vSphere 和 XenServer 中的 Citrix Provisioning (PVS) 结合使用。您可以将本指南中介绍的 PowerShell 和 REST 解决方案与您的平台工具、平台 API 或 Citrix DaaS™ SDK 结合使用,以创建无缝且自动化的端到端工作流,从而基于准备好的映像创建计算机目录。根据您选择的云平台,在 IPS 准备作业完成与创建目录或分配给 PVS 目标之间可能需要中间步骤。

AWS

在 AWS 上,IPS 会生成包含准备好的映像的 EC2 EBS 卷(默认)或从准备好的映像创建的 Amazon Machine Image (AMI)。有关如何创建 AMI 而不是默认卷的信息,请参阅 映像可移植性服务开发人员 API 门户

请注意,MCS 需要 AMI 才能创建目录。IPS 使用 AWS VM 导入来创建 AMI,这有一些特定要求。在使用 IPS 创建 AMI 之前,请参阅 AWS VM Import/Export 用户指南 以了解相关要求并确保已满足这些要求。

Azure

在 Azure 上,IPS 会生成可直接用作 MCS 主映像的托管磁盘。要将生成的映像分配给 PVS 目标,IPS 提供了一个“发布”操作,用于将托管磁盘复制到 PVS 存储中的 VHD(x) 文件。

Google Cloud

Google Cloud 上的 IPS 准备作业会生成一个磁盘。MCS 需要 Google Cloud 实例模板。从磁盘创建 MCS 实例模板的过程在 准备主 VM 实例和永久性磁盘 中有详细介绍。

对于 Google Cloud 上的 PVS 目标,IPS 提供了一个“发布”操作,用于将磁盘复制到 PVS 存储中的 VHD(x) 文件。

自动化 VDA 配置

在准备源自本地的 Citrix 管理映像时,您可以重新配置映像中的 VDA,以支持正在准备映像的目标环境。映像可移植性服务可以在工作流的准备阶段即时应用 VDA 配置更改。以下配置参数定义 VDA 在迁移映像中的运行方式:InstallMisaXdReconfigureInstallMcsio。有关在创建 IPS 作业时定义这些参数的信息,请参阅 映像可移植性服务 PowerShell 示例

配置

    -  将 **InstallMisa** 配置为 `true` 可使映像可移植性服务安装使用 MCS 预配映像所需的任何缺失 VDA 组件。

    -  将 **InstallMisa** 配置为 `true` 或将 **InstallMcsio** 配置为 `true` 还需要将 **CloudProvisioningType** 配置为 `Mcs`。

    -  将 **InstallPvs** 设置为部署映像的 PVS 服务器版本。设置 **InstallPvs** 后,映像可移植性服务 (IPS) 会在准备作业期间自动在映像中安装指定版本的 PVS 目标设备软件。IPS 支持最新两个长期服务版本 (LTSR) 和当前版本 (CR) 的最新两个内部版本(基本版本或累积更新)。

对于 InstallMisaInstallMcsio,请注意以下事项:

    -  这些功能仅支持 VDA 的最新 LTSR 和 CR 版本。

-  如果已安装 VDA 的必要组件已存在,则即使配置了参数,也不会进行任何更改。

-  对于受支持的 VDA 版本,即使必要的 VDA 组件不存在,映像可移植性也会安装所需组件的相应版本。

-  对于不受支持的 VDA 版本,如果必要的 VDA 组件不存在,则重新配置会失败并记录一条消息。即使 VDA 重新配置未完成,准备作业也会完成。

XdReconfigure 需要以下值之一:controllerssite_guid。以下是使用每个值的示例配置参数:

使用 controllers


XdReconfigure = @(
    [pscustomobject]@{
        ParameterName = 'controllers'
        ParameterValue = 'comma-separated-list-of-your-cloud-connectors-fqdns'
    }
)

<!--NeedCopy-->

其中 ParameterValue 是您要将 VDA 指向的新 DDC 的 FQDN 列表。可以逗号分隔的格式指定多个 DDC。

使用 site_guid


XdReconfigure = @(
    [pscustomobject]@{
        ParameterName = 'site_guid'
        ParameterValue = 'active-directory-site-guid'
    }
)

<!--NeedCopy-->

XdReconfigure 也接受运行 VDA 命令行安装程序时使用 /reconfigure 安装开关支持的值,例如 XenDesktopVdaSetup.exe /reconfigure。这些值的一些示例包括 wem_agent_portwem_cached_data_sync_portwem_cloud_connectorswem_server。有关 VDA 重新配置命令行选项的完整列表,请参阅 Citrix DaaS VDA 文档

InstallMcsio 配置为 true 会自动在映像上安装 MCSIO。要禁用映像上的 MCSIO 自动安装,请将 InstallMcsio 配置为 false

注意:

您可以在运行命令时使用 -DryRun 来验证您的配置和连接器设备的网络设置。

参考

本节根据您的需求详细介绍了技术参考信息。

映像可移植性服务所需的权限

本节详细介绍了映像可移植性服务在每个受支持的本地和云平台上所需的权限。

连接器设备所需的权限

连接器设备需要访问以下 URL 才能在映像可移植性服务中准备映像:


api-ap-s.cloud.com
api-eu.cloud.com
api-us.cloud.com
credentialwallet.citrixworkspaceapi.net
graph.microsoft.com
login.microsoftonline.com
management.azure.com
*.blob.storage.azure.net
ips-assets.layering.cloud.com

<!--NeedCopy-->

VMware vCenter 所需的权限

在 VMware 环境中运行 IPS 导出磁盘作业需要以下 vCenter 权限。这些权限可在 vCenter 管理面板的访问控制部分下的角色中找到。


-  Cryptographic operations
    -  Direct Access

-  Datastore
    -  Allocate space
    -  Browse datastore
    -  Low level file operations
    -  Remove file

-  Folder
    -  Create folder
    -  Delete folder

    -  Network
    -  Assign network

-  Resource
    -  Assign virtual machine to resource pool

-  Virtual machine
    -  Change Configuration
        -  Add existing disk
        -  Add new disk
        -  Remove disk

    -  Edit Inventory
        -  Create from existing
        -  Create new
        -  Remove

    -  Interaction
        -  Power off
        -  Power on

<!--NeedCopy-->

Microsoft Azure 所需的权限

映像可移植性要求您的 Azure 服务帐户具有以下权限。

  • 当指定用于组合引擎的资源组时(即在 REST 请求中的 resourceGroup 属性中或使用 Citrix.Workloads.Portability PowerShell 命令时的 -AzureVmResourceGroup 参数),在资源组范围内需要以下权限。

-  Microsoft.Compute/disks/beginGetAccess/action
Microsoft.Compute/disks/endGetAccess/action
Microsoft.Compute/disks/delete

-  Microsoft.Compute/disks/read
Microsoft.Compute/disks/write
Microsoft.Compute/virtualMachines/delete
Microsoft.Compute/virtualMachines/powerOff/action
Microsoft.Compute/virtualMachines/read

-  Microsoft.Compute/virtualMachines/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.Resources/deployments/operationStatuses/read
-  Microsoft.Resources/deployments/read
-  Microsoft.Resources/deployments/write
Microsoft.Resources/subscriptions/resourcegroups/read

<!--NeedCopy-->

当未指定用于组合引擎的资源组时,在订阅范围内需要以下权限。


Microsoft.Compute/disks/beginGetAccess/action
Microsoft.Compute/disks/endGetAccess/action
Microsoft.Compute/disks/read
Microsoft.Compute/disks/write
Microsoft.Compute/virtualMachines/powerOff/action
Microsoft.Compute/virtualMachines/read
Microsoft.Compute/virtualMachines/write
Microsoft.Network/networkInterfaces/join/action
Microsoft.Network/networkInterfaces/read
Microsoft.Network/networkInterfaces/write
Microsoft.Network/networkSecurityGroups/join/action
Microsoft.Network/networkSecurityGroups/read
Microsoft.Network/networkSecurityGroups/write
Microsoft.Resources/deployments/operationStatuses/read
Microsoft.Resources/deployments/read
Microsoft.Resources/deployments/write
Microsoft.Resources/subscriptions/resourceGroups/delete
Microsoft.Resources/subscriptions/resourceGroups/write
Microsoft.Authorization/roleAssignments/read
Microsoft.Authorization/roleDefinitions/read

<!--NeedCopy-->

在指定的目标资源组范围内需要以下权限(即在 REST 请求中的 targetDiskResourceGroupName 属性中或使用 PowerShell 时的 -TargetResourceGroup 参数中指定的资源组)。


Microsoft.Compute/disks/beginGetAccess/action
Microsoft.Compute/disks/delete
Microsoft.Compute/disks/read
Microsoft.Compute/disks/write
Microsoft.Compute/snapshots/delete
Microsoft.Compute/snapshots/read
Microsoft.Compute/snapshots/write

<!--NeedCopy-->

在指定的虚拟网络资源组范围内需要以下权限(即在 REST 请求中的 virtualNetworkResourceGroupName 属性中或使用 PowerShell 时的 -AzureVirtualNetworkResourceGroupName 参数中指定的资源组)。


Microsoft.Network/virtualNetworks/read
Microsoft.Network/virtualNetworks/subnets/join/action

<!--NeedCopy-->

重要:

“prepare”和“prepareAndPublish”作业的 ceVmSku 选项控制生成的托管磁盘适用的 Azure VM 类型。您必须选择与您打算从输出映像预配的 VM 具有相同系列和版本的 ceVmSku。Standard_D2S_v3 的默认值适用于在所有 v3 D 系列计算机上运行。不支持指定不包含临时磁盘的计算机 SKU。

Google Cloud 所需的权限

映像可移植性要求您的 Google Cloud 服务帐户具有以下权限:


cloudbuild.builds.create
cloudbuild.builds.get
cloudbuild.builds.list
compute.disks.create
compute.disks.delete
compute.disks.get
compute.disks.list
compute.disks.setLabels
compute.disks.use
compute.disks.useReadOnly
compute.globalOperations.get
compute.images.create
compute.images.delete
compute.images.get
compute.images.list
compute.images.setLabels
compute.images.useReadOnly
compute.instances.create
compute.instances.delete
compute.instances.get
compute.instances.setLabels
compute.instances.setMetadata
compute.instances.setServiceAccount
compute.instances.setTags
compute.instances.stop
compute.instances.updateDisplayDevice
compute.networks.get
compute.networks.list
compute.subnetworks.use
compute.zoneOperations.get
compute.zones.get
compute.zones.list
iam.serviceAccounts.actAs
iam.serviceAccounts.get
iam.serviceAccounts.list
resourcemanager.projects.get
storage.buckets.create
storage.buckets.delete
storage.buckets.get
storage.objects.create
storage.objects.delete
storage.objects.get
storage.objects.list

<!--NeedCopy-->

AWS 所需的权限

映像可移植性要求您将具有以下配置的 JSON 策略文档附加到身份和访问管理 (IAM) 用户:


{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "ebs:CompleteSnapshot",
                "ebs:PutSnapshotBlock",
                "ebs:StartSnapshot",
                "ec2:CreateImage",
                "ec2:CreateSnapshot",
                "ec2:CreateTags",
                "ec2:DeleteImage",
                "ec2:DeleteSnapshot",
                "ec2:DeleteVolume",
                "ec2:DeregisterImage",
                "ec2:DescribeImages",
                "ec2:DescribeImportImageTasks",
                "ec2:DescribeInstances",
                "ec2:DescribeRegions",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSnapshots",
                "ec2:DescribeSubnets",
                "ec2:ImportImage",
                "ec2:RebootInstances",
                "ec2:RegisterImage",
                "ec2:RunInstances",
                "ec2:TerminateInstances",
                "iam:GetRole"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}

<!--NeedCopy-->

注意:

您可能需要根据需要进一步缩小资源的范围。

Nutanix AHV 所需的权限

映像可移植性要求您是 Nutanix AHV 配置中的群集管理员。

XenServer 所需的权限

映像可移植性要求您至少拥有 XenServer 主机所在池的“VM 管理员”角色。

网络

映像可移植性服务 (IPS) 会创建一个名为合成引擎 (CE) 的辅助 VM 来执行映像操作。关联资源位置中的所有连接器设备都必须能够通过 HTTPS 与 CE 通信。 连接器设备 (CA) 与 CE 之间的所有通信均由 CA 发起,但 vSphere 的一个例外情况除外,在该情况下 CE 和 CA 之间存在双向 HTTPS 通信。

在云环境(Azure、AWS、Google Cloud)中,CE 是使用私有 IP 地址创建的。因此,CE 必须与 CA 位于同一虚拟网络上,或者位于可从 CA 访问的虚拟网络上。

此外,对于涉及 SMB 共享上文件的作业(例如,导出作业),CE 必须位于可连接到 SMB 共享的网络上。

有关如何在每个受支持的平台中为 CE 指定要使用的网络的详细信息,请参阅 Image Portability Service API documentation

对于“准备”作业,映像中包含的操作系统会在 CE 上启动,以执行专用化和其他任务。如果映像包含连接到控制服务器的管理或安全代理,这些进程可能会干扰准备过程。

如果指定了域取消加入选项,网络连接可能会影响结果。如果合成引擎 VM 可以通过网络访问 Active Directory 域控制器,则取消加入会从域中删除计算机帐户。这会破坏从中提取映像的源 VM 的域成员身份。

因此,我们建议将为操作提供的网络与其他网络资源隔离。这可以通过子网隔离或防火墙规则来完成。有关详细信息,请参阅网络隔离

在某些本地管理程序环境中,管理程序可能配置了 TLS 服务器证书,该证书要么不受 CA 的受信任根证书颁发机构集信任,要么与服务器的主机名不匹配。对于这种情况,IPS 提供了作业请求属性,可用于解决此问题。有关详细信息,请参阅 TLS 证书

网络代理

如果 CA 与 Internet 之间的网络流量通过执行 TLS 内省的代理,则可能需要将代理的根证书颁发机构(即代理用于签署其生成的 TLS 证书的证书)添加到 CA 的根证书颁发机构集中。有关详细信息,请参阅将连接器设备注册到 Citrix Cloud

网络隔离
  • Azure

    在 Azure 中,如果操作中使用的 Azure 服务主体具有必要的 Azure 权限 1,则 CE 默认会创建并附加一个网络安全组 (NSG) 到其网卡。

    • Microsoft.Network/networkSecurityGroups/join/action
    • Microsoft.Network/networkSecurityGroups/read
    • Microsoft.Network/networkSecurityGroups/write

      否则,如果未使用显式资源组,则在订阅范围内的以下权限:

      • Microsoft.Network/networkSecurityGroups/delete
      • Microsoft.Network/networkSecurityGroups/join/action
      • Microsoft.Network/networkSecurityGroups/read
      • Microsoft.Network/networkSecurityGroups/write

    此 NSG 配置为阻止 CE 的所有入站/出站流量,但以下情况除外:

    • SMB(端口 445)出站
    • HTTPS(端口 443)入站
    • 内部 Azure 服务所需的流量

    可以通过将作业请求中的 networkIsolation 属性设置为 true 来强制使用 NSG。在这种情况下,如果操作中使用的服务主体不具有必要的权限,则作业将失败。可以通过将 networkIsolation 属性设置为 false 来禁用 NSG 的使用。

  • AWS

在 AWS 中,为了实现 CE 的网络隔离,您可以创建一个或多个网络安全组来阻止所有不需要的流量,然后在作业请求中,使用 securityGroupIds 请求参数将安全组分配给 CE 实例,该参数接受安全组 ID 列表作为值。

  • Google Cloud

在 Google Cloud 中,为了实现 CE 的网络隔离,您可以创建防火墙规则来阻止所有不需要的流量,然后通过网络标记将这些规则应用于 CE。IPS 会使用网络标记 compositing-engine 创建 CE,您可以使用 networkTags 作业请求参数为其分配其他网络标记,该参数接受标记列表作为值。

TLS 证书

如果管理程序的服务器证书由 CA 不信任的颁发机构签署,则可以使用两种替代方法来解决此问题。

  1. 在作业请求中指定一个额外的根证书颁发机构证书,用于证书验证。此证书必须是用于签署管理程序服务器证书的根证书颁发机构。
  2. 在作业请求中指定管理程序服务器证书的 SHA-1 指纹。在这种情况下,通过验证管理程序返回的证书的 SHA-1 指纹是否与作业请求中提供的一致来完成证书验证。如果 CE 和管理程序之间存在 TLS 拦截代理,此方法可能不起作用。

上述各项的作业请求参数(分别针对每个平台提供如下)为:

  • vSphere
    1. vCenterSslCaCertificate
    2. vCenterSslFingerprint
  • Nutanix
    1. prismSslCaCertificate
    2. prismSslFingerprint
  • XenServer
    1. xenSslCaCertificate
    2. xenSslFingerprint

有关详细信息,请参阅 Image Portability Service API 文档。

当管理程序服务器的主机名与其证书中的主机名不匹配时,也可能发生证书验证错误。在这种情况下,可以通过在作业请求中将以下参数设置为 true 来禁用主机名匹配:

  • vSphere
    • vCenterSslNoCheckHostname
  • Nutanix
    • prismSslNoCheckHostname
  • XenServer
    • xenSslNoCheckHostname

相关文档

  1. 如果操作正在使用显式资源组,则在资源组范围内的以下权限: 

使用 Image Portability Service 在资源位置之间迁移工作负载