Citrix Provisioning

安装前需执行的任务

安装并配置 Citrix Provisioning 之前,请完成以下任务。

重要:

安装 Citrix Provisioning 组件之前,请确保所有 Windows 更新都是最新的。Citrix 建议您在安装所有 Windows 更新后重新启动设备。

选择并配置 Microsoft SQL 数据库

每个 Citrix Provisioning 场都有一个数据库。可以在以下任一位置提供数据库:

  • 现有 SQL Server 或 SQL Server Express 实例
  • 运行 SQL Server 或 SQL Server Express 的新服务器
  • 新的或现有的 Azure SQL 数据库实例

场中的所有 Citrix Provisioning 服务器都必须能够与数据库服务器通信。

在生产环境中,为避免在负载平衡期间出现分布不当的情况,最佳做法是在单独的服务器上安装 SQL Server 或 SQL Server Express 实例以及 Citrix Provisioning 服务器组件软件。

创建数据库有三种方法:

  • 使用配置向导。要使用此选项,您需要 dbcreator 权限。
  • 如果您没有创建数据库的权限,请使用 DbScript.exe 实用程序创建数据库管理员可以运行以创建 Provisioning 数据库的 SQL 脚本。此实用程序随 Provisioning 软件安装。
  • 如果数据库管理员通过运行 DbScript.exe 实用程序创建空数据库,则在运行配置向导时将选择此数据库作为新场的数据库。运行配置向导时使用的登录名必须是数据库的所有者。此外,此登录名必须具有查看任何定义权限。数据库管理员在创建空数据库时设置此权限。

运行 DbScript.exe 实用程序以创建或更新数据库

如果您没有创建数据库的权限,请使用 DbScript.exe 生成 SQL 脚本,供数据库管理员运行以创建或更新 Citrix Provisioning 数据库。请从 C:\Program Files\Citrix\Provisioning Services 中的 Windows 命令提示符运行该脚本。

要生成脚本以创建数据库,请使用以下语法:

  • 对于 SQL Server 和 SQL Server Express:DbScript.exe -new <databaseName> <farmName> <siteName> <collectionName> <farmAdminGroup> <adGroupsEnabled> <scriptName> <is2012orHigher>
  • 对于 Azure SQL 数据库:DbScript.exe -newForAzSqlDb <databaseName> <farmName> <siteName> <collectionName> <farmAdminGroup> <adGroupsEnabled> <scriptName> <is2012orHigher>

为 Azure SQL 数据库创建新数据库时,DbScript 会生成两个脚本文件,而不是一个。

  • 第一个运行到主数据库中,并创建新数据库。
  • 第二个脚本之后将运行到新数据库中。

要生成脚本以更新数据库,请输入:

DbScript.exe -upgrade <databaseName> <scriptName>

这些命令使用以下参数:

  • <databaseName> - 要更新的数据库的名称。
  • <farmName> - 数据库的场名称。
  • <siteName> - 数据库的站点名称。
  • <collectionName> - 数据库的集合名称
  • <farmAdminGroup> - 场管理员组,指定为完整路径。

    注意:

    运行配置向导时,您必须是此组(Active Directory 组)的成员才能将 Citrix Provisioning 服务器添加到数据库。

  • <adGroupsEnabled> - 启用或禁用 AD 组,指定为布尔值,其中 true 启用 AD 组,false 禁用 AD 组。
  • <scriptName> - 要生成的脚本的名称,指定为完整路径。
  • <is2012orHigher> - 已弃用。使用 true

DbScript.exe 示例

此示例将生成一个脚本,用于创建名为 db1-2 的空 Citrix Provisioning 数据库。该脚本名为 newDb.sql,位于 C: 中。

C:\Program Files\Citrix\Provisioning Services> DbScript.exe -new db1-2 Farm1 Site1 Collection1 "test.local/Users/Domain Users" true c:\newDb.sql true

此示例将生成一个用于升级 Citrix Provisioning 数据库 test1 的脚本。该脚本名为 upgrade.sql,由于未指定路径,因此,该脚本位于运行脚本的目录中 (C:\Program Files\Citrix\Provisioning Services)。

C:\Program Files\Citrix\Provisioning Services>DbScript.exe -upgrade test1 upgrade.sql

数据库大小调整

有关信息,请参阅数据库大小调整

创建数据库时,数据库的初始大小为 20 MB,增长量为 10 MB。数据库日志的初始大小为 10 MB,增长量为 10%。

需要的基准空间量是 112 KB,该大小不会发生变化。基础映像包括以下内容:

  • DatabaseVersion 记录大约需要 32 KB
  • 场记录大约需要 8 KB
  • DiskCreate 记录大约需要 16 KB
  • 通知大约需要 40 KB
  • ServerMapped 记录大约需要 16 KB

根据对象,所需的可变空间量如下所示:

  • 访问权限和编组(每个)
    • 对系统具有访问权限的一个用户组大约需要 50 KB
    • 站点记录大约需要 4 KB
    • 集合大约需要 10 KB
  • 场视图(每个)
    • 场视图大约需要 4 KB
    • 场视图/设备关系大约需要 5 KB
  • 站点视图(每个)
    • 站点视图大约需要 4 KB
    • 站点视图/设备关系大约需要 5 KB
  • 目标设备(每个)
    • 一个目标设备大约需要 2 KB
    • DeviceBootstrap大约需要 10 KB
    • Device:Disk关系大约需要 35 KB
    • DevicePersonality大约需要 1 KB
    • 设备引导时的DeviceStatus大约需要 1 KB
    • DeviceCustomProperty 大约需要 2 KB
  • 磁盘(每个)
    • 唯一的磁盘大约需要 1 KB
    • DiskVersion大约需要 3 KB
    • DiskLocator大约需要 10 KB
    • DiskLocatorCustomProperty 大约需要 2 KB
  • Provisioning 服务器(每个)
    • 一台服务器大约需要 5 KB
    • ServerIP 大约需要 2 KB
    • 服务器引导时的ServerStatus大约需要 1 KB
    • ServerCustomProperty 大约需要 2 KB
  • 存储(每个)
    • 存储大约需要 8 KB
    • 存储:服务器关系大约需要 4 KB
  • 磁盘更新(每个)
    • VirtualHostingPool 大约需要 4 KB
    • UpdateTask大约需要 10 KB
    • DiskUpdateDevice 大约需要 2 KB
    • 每个DiskUpdateDevice:Disk关系大约需要 35 KB
    • Disk:UpdateTask关系大约需要 1 KB

以下更改会导致大小要求增加:

  • 每个已处理的任务(例如:虚拟磁盘版本控制合并)大约需要 2 KB。
  • 如果打开了审核功能,则管理员在 Citrix Provisioning 控制台、MCLI 或 PowerShell 界面中所做的每个更改大约需要 1 KB。

数据库镜像

要使 Citrix Provisioning 支持 MS SQL 数据库镜像,需要为数据库配置 High-safety mode with a witness (synchronous)(带见证的高安全性模式(同步))。

有关如何配置和使用数据库镜像的信息,请参阅数据库镜像

实现数据库群集

要实现数据库群集,请执行以下操作:

  1. 按照 Microsoft 的指示进行操作。
  2. 运行 Citrix Provisioning 配置向导。
  3. 可用性组侦听器指定为数据库服务器。未使用任何实例。
  4. 在“连接选项”中启用 Multi-Subnet Failover(多子网故障转移)。

支持的身份验证类型

此表可帮助您确定希望 Citrix Provisioning 如何对数据库进行身份验证,以及在进行身份验证时要使用的凭据。

身份验证类型 授予访问权限 必需的凭据 数据库平台 其他限制
Active Directory 集成 Active Directory 用户。如果不想使用现有用户名,请在 Active Directory 中创建用户名。 无(使用当前的登录上下文) SQL Server Citrix Provisioning 服务器必须属于某个域,Citrix Provisioning 服务用户上下文必须是域用户,并且域用户必须配置 Citrix Provisioning。
SQL Server SQL 登录名。如果不想使用现有的 SQL 登录名,请在数据库服务器上创建一个登录名。 登录名和密码 SQL Server 和 Azure SQL 数据库  

注意:

有关 Azure 上的 Citrix Provisioning 支持的身份验证类型的信息,请参阅 Azure 上的 Citrix Provisioning 支持的身份验证类型一文。

配置身份验证

Citrix Provisioning 可以使用 Active Directory 集成身份验证或 SQL Server 身份验证来访问数据库。

配置向导用户权限

您必须具有本地管理员的系统权限才能运行配置向导。

管理员数据库主体是配置向导用来创建和设置 Provisioning 数据库的数据库主体。 您在配置向导中指定的身份验证凭据标识数据库主体。

  • 如果选择已集成 Active Directory 身份验证,则配置向导将以运行配置向导的用户(Active Directory 用户)身份访问数据库。
  • 如果选择 SQL Server 身份验证,则配置向导将以不同的主体身份访问数据库。

有关选择管理员数据库主体的详细信息,请参阅支持的身份验证类型

注意:

数据库管理员主体仅在运行配置向导时使用。它不会被保存,也不会被 Stream Service 和 SOAP Service 使用。您必须使用具有 Stream Service 和 SOAP Service 提升权限的主体。

  • 使用 SQL Server 时,管理员数据库主体需要以下权限:

    • securityadmin 用于创建和更新服务器登录名(使用 SQL Server 时)
    • db_owner 适用于任何现有数据库

要为新场创建数据库,管理员数据库主体需要 dbcreator 作为额外的权限。有关创建数据库的不同方法的信息,请参阅选择和配置 Microsoft SQL 数据库

  • 使用 Azure SQL 数据库时,管理员数据库主体需要以下权限:

    • loginmanager 用于创建和更新服务器登录名
    • db_owner 适用于任何现有数据库

    要为新场创建数据库,管理员数据库主体需要 dbmanager 作为额外的权限。

    loginmanagerdbmanager 是分配给主数据库中的用户的特殊用户角色。

服务帐户权限

Stream Service 和 SOAP Service 的服务帐户必须具有以下系统权限:

  • 以服务方式运行
  • 注册表读取权限
  • 访问 Program Files\Citrix\Citrix Provisioning
  • 对任何虚拟磁盘位置的读取和写入权限。

服务数据库主体是服务用来访问 Provisioning 数据库的数据库主体。您在配置向导中指定的身份验证凭据标识数据库主体。

  • 如果选择已集成 Active Directory 身份验证,服务将以服务帐户(Active Directory 用户)身份访问数据库。
  • 如果选择 SQL Server 身份验证,则服务可以作为不同的主体访问数据库。

有关选择服务数据库主体的详细信息,请参阅支持的身份验证类型

配置向导配置数据库以确保服务数据库主体具有以下权限:

  • db_datareader
  • db_datawriter
  • 对存储过程的运行权限

确定 Stream Service 和 SOAP Service 在以下哪个受支持的用户帐户下运行:

  • 网络服务帐户

    最低权限本地帐户,该帐户在网络上作为计算机域的计算机帐户进行身份验证

  • 指定的用户帐户:使用 Windows 共享时需要使用此帐户;为工作组或域用户帐户

要支持 KMS 许可,要求 SOAP 服务器用户帐户属于本地管理员组。

提示:

身份验证在工作组环境中不公用,因此,必须在每台服务器上创建最低权限用户帐户,并且每个实例必须具有相同的凭据)。

确定要在此场中使用的相应安全选项。对于每个场只能选择一个选项,所选选项将影响基于角色的管理。对于安全选项:

  • 使用 Active Directory 组保证安全(默认值);如果您在运行 Active Directory 的 Windows 域中,请选择此选项。此选项允许您对 Citrix Provisioning 管理角色使用 Active Directory。

    注意:

    Windows 2000 域不受支持。

  • 使用 Windows 组保证安全。如果您在单台服务器上或工作组中,请选择此选项。此选项允许您针对 Citrix Provisioning 管理角色在该特定服务器上使用本地用户/组。

控制台用户不直接访问数据库。

使用更多 Provisioning 功能需要具有的最低权限包括:

  • Citrix Virtual Apps and Desktops 设置向导、流 VM 设置向导以及 ImageUpdate 服务
    • vCenter、SCVMM 和 XenServer(以前称为 Citrix Hypervisor)的最低权限
    • 当前用户在现有的 Citrix Virtual Apps and Desktops 控制器上具有的权限
    • 配置为 Citrix Virtual Apps and Desktops 管理员且已添加到 Provisioning SiteAdmin 组或更高级别组的 Citrix Provisioning 控制台用户帐户
    • 可在控制台中创建帐户的 Active Directory 创建帐户权限。要使用现有帐户,Active Directory 帐户必须已存在于已知组织单位中以供选择
  • AD 帐户同步:创建、重置和删除权限
  • 虚拟磁盘:执行卷维护任务的权限

注意:

服务帐户不需要特殊的 AD 权限。

在 SQL Server 中启用远程连接

使用本部分中的信息建立到 SQL Server 的远程连接。

  1. 使用 SQL Server Management Studio 登录 SQL Server。
  2. 在对象资源管理器窗口中,右键单击 SQL Server 并选择属性

    MS SQL Server 对象资源管理器

  3. 对象资源管理器窗口中,选择连接节点。在远程服务器连接下,选中或清除允许远程连接到此服务器复选框:

MS SQL Server 连接

更新远程服务器连接后:

  1. 开始菜单中,单击开始 > Microsoft SQL Server 版本 > SQL Server 版本 Configuration Manager。此时将显示 SQL Server Configuration Manager 窗口。
  2. 展开 SQL Server Network Configuration(SQL Server 网络配置)选项。选择 Protocols for (your server name)((您的服务器名称)的协议)。选择 TCP/IP,然后单击鼠标右键。在上下文菜单中,选择启用。 单击确定重新启动该服务。

MS SQL Server TCP/IP

重新启动服务后,更改启动模式。在 SQL Server Configuration Manager 窗口中:

  1. 选择 SQL Server 服务。在右侧窗格中,右键单击 SQL Server Browser 选项以显示上下文菜单。
  2. 选择属性
  3. 服务选项卡中,将启动模式更改为自动
  4. 单击确定

MS SQL Server Browser 属性

  1. 选择 SQL Server 浏览器,然后单击鼠标右键以打开上下文菜单。单击 Start(开始)。
  2. 选择与实例对应的 SQL Server 服务,然后单击鼠标右键以打开上下文菜单。单击重新启动

在 Windows 防火墙中为 SQL Server 创建例外

使用本部分中的信息在使用 Windows 防火墙的环境中为 SQL Server 创建例外:

  1. 打开控制面板,然后选择系统和安全
  2. 选择 Windows Defender 防火墙

    MS SQL Server Windows Defender 防火墙

  3. 单击允许应用程序或功能通过 Windows Defender 防火墙。打开 Windows 防火墙:

    MS SQL Server 启用 Windows Defender 防火墙

  4. 允许应用程序通过 Windows Defender 防火墙窗口中,单击允许其他应用程序…

    MS SQL Server 允许运行防火墙应用程序

  5. 添加应用程序屏幕中,单击浏览
  6. 浏览到 SQL 服务 sqlserver.exe,然后单击打开sqlserver.exe 的默认路径为:

    • SQL 2019 – C:\Program Files\Microsoft SQL Server\MSSQL15.<SQL Instance Name>\MSSQL\Binn
    • SQL 2017 – C:\Program Files\Microsoft SQL Server\MSSQL14.<SQL Instance Name>\MSSQL\Binn
  7. 单击添加

MS SQL Server 允许运行防火墙应用程序

  1. C:\Program Files (x86)\Microsoft SQL Server\90\Shared\sqlbrowser.exe. 重复步骤 4—7
  2. 单击确定

启用从 Provisioning 服务器到 SQL Server 的安全连接

可以将 SQL Server、许可证服务器和 Provisioning 服务器配置为启用安全连接。

使用本部分中的信息建立到 SQL Server 的安全连接。

在 SQL Server 计算机上:

  1. 获取带有可用作 SQL Server 的服务器证书的私钥的服务器证书。可以从受信任的颁发机构获取服务器证书,也可以使用自签名证书。服务器证书和私钥应位于 .PFX 文件中。公用名必须是 SQL Server 计算机的 FQDN。
  2. 将证书和密钥导入 SQL Server 计算机上的本地计算机证书存储的个人证书文件夹中。
  3. 授予 SQL Server 访问证书和密钥的权限。
  4. 要将 SQL Server 配置为强制建立安全连接,请执行以下操作。
    1. 运行 SQL Server Configuration Manager
    2. 在左窗格中选择 SQL Server Network Configuration(SQL Server 网络配置)> Protocols for instance(实例的协议)
    3. 单击鼠标右键,选择 Properties(属性)。
    4. Flags(标志)选项卡中,将 Force Encryption(强制加密)设置为 Yes(是)。
    5. Certificate(证书)选项卡中,从下拉列表中选择服务器证书。如果此证书不在列表中,请验证其是否按说明导入。
    6. 单击 OK(确定),然后重新启动实例的 SQL Server 服务。

在 Citrix Provisioning 服务器计算机上:

  1. 部署信任服务器证书所需的必要证书颁发机构证书。
    1. 如果颁发机构不受信任:
      1. 获取颁发机构证书。
      2. 将该证书导入本地计算机证书存储区的“Trusted Root Certificate Authorities”(受信任的根证书颁发机构)文件夹。
    2. 如果服务器证书是自签名证书:
      1. 在 SQL Server 计算机上,仅将证书导出到证书文件中。
      2. 将此证书复制到 Citrix Provisioning 服务器计算机。
      3. 将此证书导入到本地计算机证书存储区的“Trusted Root Certificate Authorities”(受信任的根证书颁发机构)文件夹。
  2. 将 Provisioning 服务器配置为使用与证书中相同的名称连接到 SQL Server,该名称是 SQL Server 计算机的 FQDN。如有必要,请运行配置向导,然后再次加入场。使用此方法,您可以更改数据库服务器的名称。

Kerberos 安全性

默认情况下,在 Active Directory 环境中与 SOAP Service 进行通信时,Citrix Provisioning 控制台、映像向导、PowerShell 管理单元和 MCLI 使用 Kerberos 身份验证。部分 Kerberos 体系结构用于使服务注册到(创建一个服务主题名称,SPN)域控制器(Kerberos 密钥发行中心)。必须进行注册,因为注册将允许 Active Directory 标识 SOAP Service 运行时所在的帐户。如果未执行注册,Kerberos 身份验证将失败,且 Citrix Provisioning 将回退至使用 NTLM 身份验证。

但是,NTLM 被认为不安全且容易受到攻击。

配置向导为 SOAP Service 创建一个 SPN,这意味着始终使用 Kerberos。

如果运行配置向导的帐户没有所需的权限,创建 SPN 可能会失败。

要解决此权限问题,请执行以下操作之一:

  • 使用有权创建 SPN 的不同帐户。
  • 为运行配置向导的帐户分配权限。

    帐户类型 权限
    计算机帐户 写入已验证的 SPN
    用户帐户 写入公共信息

    有关权限的详细信息,请参阅 DsWriteAccountSpnA 函数

安装前需执行的任务