Citrix Hypervisor

管理用户

通过定义用户、组、角色和权限,可以控制有权访问 Citrix Hypervisor 服务器和池的用户及其可执行的操作。

首次安装 Citrix Hypervisor 时,系统会自动将一个用户帐户添加到 Citrix Hypervisor 中。此帐户是本地超级用户 (LSU) 或 root 用户,Citrix Hypervisor 将在本地对其进行身份验证。

LSU 或 root 是一个专用于系统管理的特殊用户帐户,该帐户具有所有权限。在 Citrix Hypervisor 中,LSU 是安装时的默认帐户。Citrix Hypervisor 会对 LSU 帐户进行身份验证。LSU 无需任何外部身份验证服务。如果外部身份验证服务失败,LSU 仍可登录并管理系统。LSU 始终可以通过 SSH 访问 Citrix Hypervisor 物理服务器。

您可以通过 XenCenter 的“用户”选项卡或 xe CLI 添加 Active Directory 帐户来创建更多用户。如果您的环境未使用 Active Directory,您将只能使用 LSU 帐户。

注意:

创建用户时,Citrix Hypervisor 不会自动为新创建的用户帐户分配 RBAC 角色。因此,在您为这些帐户分配角色之前,它们对 Citrix Hypervisor 池没有任何访问权限。

这些权限通过角色授予,如使用 Active Directory (AD) 对用户进行身份验证部分中所述。

使用 Active Directory (AD) 对用户进行身份验证

如果您希望在服务器或池上具有多个用户帐户,则必须使用 Active Directory 用户帐户进行身份验证。AD 帐户允许 Citrix Hypervisor 用户使用其 Windows 域凭据登录池。

注意:

可以在您的 AD 域控制器上启用 LDAP 通道绑定和 LDAP 签名。有关详细信息,请参阅 Microsoft Security Advisory

可以为特定用户配置不同的访问权限级别,方法是:启用 Active Directory 身份验证,添加用户帐户,然后为这些帐户分配角色。

Active Directory 用户可以使用 xe CLI(传递适当的 -u-pw 参数),也可以使用 XenCenter 连接到该主机。身份验证是在每个资源池的基础上完成的。

使用者控制用户帐户的访问权限。Citrix Hypervisor 中的一个使用者对应目录服务器上的一个实体(用户或组)。启用外部身份验证后,Citrix Hypervisor 将根据本地 root 用户凭据来检查用于创建会话的凭据,然后根据使用者列表进行检查。要允许访问,请为要向其授予访问权限的用户或组创建一个使用者条目。可以使用 XenCenter 或 xe CLI 创建使用者条目。

如果您熟悉 XenCenter,请注意,在提及 Active Directory 和用户帐户功能时,Citrix Hypervisor CLI 使用的术语略有差别:XenCenter 术语 Citrix Hypervisor CLI 术语 用户 使用者 添加用户 添加使用者

虽然 Citrix Hypervisor 是基于 Linux 的,但 Citrix Hypervisor 允许您使用 Active Directory 帐户作为 Citrix Hypervisor 用户帐户。为此,它会将 Active Directory 凭据传递到 Active Directory 域控制器。

当您将 Active Directory 添加到 Citrix Hypervisor 后,Active Directory 用户和组即成为 Citrix Hypervisor 使用者。使用者在 XenCenter 中被称为用户。当您在 Citrix Hypervisor 中注册使用者时,系统会在您登录时使用 Active Directory 对用户/组进行身份验证。用户和组不需要通过使用域名来限定其用户名。

要限定某个用户名,必须以下层登录名格式键入该用户名,例如 mydomain\myuser

注意:

默认情况下,如果未限定用户名,XenCenter 将尝试使用用户加入的域将用户登录到 AD 身份验证服务器。LSU 帐户属例外情况,对于 LSU 帐户,XenCenter 始终首先在本地(即在 Citrix Hypervisor 上)对其进行身份验证。

外部身份验证工作流程如下:

  1. 将连接到服务器时提供的凭据传递到 Active Directory 域控制器,进行身份验证。

  2. 域控制器对凭据进行检查。如果凭据无效,身份验证立即失败。

  3. 如果凭据有效,会对 Active Directory 控制器进行查询,以获取与凭据相关联的使用者标识符和组成员身份。

  4. 如果使用者标识符与 Citrix Hypervisor 中存储的某个标识符匹配,则身份验证将成功。

当您加入域时,您可以为池启用 Active Directory 身份验证。但是,池加入域后,只有该域(或与该域具有信任关系的域)中的用户才能连接到该池。

注意:

不支持手动更新配置了 DHCP 的网络 PIF 的 DNS 配置,且手动配置可能会导致 AD 集成失败或停止工作,从而导致用户身份验证失败或停止工作。

配置 Active Directory 身份验证

Citrix Hypervisor 支持使用运行 Windows 2008 或更新版本的 Active Directory 服务器。

要对 Citrix Hypervisor 服务器使用 Active Directory 身份验证,必须对 Active Directory 服务器(配置为允许互操作)和 Citrix Hypervisor 服务器使用相同的 DNS 服务器。 在某些配置中,Active Directory 服务器本身可能会提供 DNS。也可以使用 DHCP 为 Citrix Hypervisor 服务器提供 IP 地址和 DNS 服务器列表,来实现上述目标。或者,可以在使用手动静态配置时设置 PIF 对象的值或使用安装程序。

我们建议启用 DHCP 来分配主机名。请勿为主机分配主机名 localhostlinux

警告:

Citrix Hypervisor 服务器名称必须在整个 Citrix Hypervisor 部署期间保持唯一。

请注意以下问题:

  • Citrix Hypervisor 使用其主机名在 AD 数据库中标记其 AD 条目。如果两Citrix同一个 AD 域的两个虚拟机管理程序服务器加入同一个 AD 域,则第二个 Citrix Hypervisor 会覆盖第一个 Citrix 虚拟机管理程序的 AD 条目。无论这些主机属于相同池还是不同池,都会覆盖。这会导致第一个 Citrix Hypervisor 上的 AD 身份验证停止工作。

    如果两个 Citrix Hypervisor 服务器加入不同的 AD 域,则可以使用相同的主机名。

  • Citrix Hypervisor 服务器可以位于不同的时区,因为比较的是 UTC 时间。为确保正确同步,您可以为 Citrix Hypervisor 池和 Active Directory 服务器使用相同的 NTP 服务器。

  • 不支持混合身份验证池。不能将池中的某些服务器配置为使用 Active Directory,而另一些不使用。

  • Citrix Hypervisor Active Directory 集成使用 Kerberos 协议与 Active Directory 服务器进行通信。因此,Citrix Hypervisor 不支持与未使用 Kerberos 的 Active Directory 服务器进行通信。

  • 要确保使用 Active Directory 的外部身份验证成功,Citrix Hypervisor 服务器上的时钟必须与 Active Directory 服务器上的时钟保持同步。在 Citrix Hypervisor 加入 Active Directory 域时,系统会检查同步且身份验证会在服务器之间的偏差过大时失败。

警告:

主机名必须由不超过 63 个字母数字字符组成,不得使用纯数字名称。

在启用 Active Directory 身份验证后向池添加服务器时,系统会提示您在要加入池的服务器上配置 Active Directory。系统提示您在要加入的服务器上输入凭据时,键入具有足够权限的 Active Directory 凭据,以将服务器添加到该域。

Active Directory 集成

请确保以下防火墙端口对出站流量打开,以便 Citrix Hypervisor 能够访问域控制器。

Port(端口) 协议 使用
53 UDP/TCP DNS
88 UDP/TCP Kerberos 5
123 UDP NTP
137 UDP NetBIOS 名称服务
139 TCP NetBIOS 会话 (SMB)
389 UDP/TCP LDAP
445 TCP TCP 上的 SMB
464 UDP/TCP 计算机密码更改
636 UDP/TCP LDAP over SSL
3268 TCP 全局目录搜索

有关详细信息,请参阅 Citrix Hypervisor 使用的通信端口

备注:

  • 要使用 iptables 在 Linux 计算机上查看防火墙规则,请运行以下命令:iptables -nL
  • Citrix Hypervisor 使用 PowerBroker Identity Services (PBIS) 对 AD 服务器中的 AD 用户进行身份验证,以及加密与 AD 服务器的通信。

Citrix Hypervisor 如何管理用于 AD 集成的计算机帐户密码?

与 Windows 客户端计算机类似,PBIS 将自动更新计算机帐户密码。PBIS 每 30 天续订一次密码,或者按 AD 服务器中的计算机帐户密码续订策略的规定进行续订。

在池上启用外部身份验证

可通过 XenCenter 或 CLI 使用以下命令配置使用 Active Directory 的外部身份验证。

xe pool-enable-external-auth auth-type=AD \
  service-name=full-qualified-domain \
  config:user=username \
  config:pass=password
<!--NeedCopy-->

指定的用户必须具有 Add/remove computer objects or workstations 权限,这是域管理员的默认权限。

如果您未在 Active Directory 和您的 Citrix Hypervisor 服务器使用的网络上使用 DHCP,可使用以下方法设置 DNS:

  1. 设置域 DNS 后缀搜索顺序,用以解析非 FQDN 条目:

    xe pif-param-set uuid=pif_uuid_in_the_dns_subnetwork \
       "other-config:domain=suffix1.com suffix2.com suffix3.com"
    <!--NeedCopy-->
    
  2. 配置要在 Citrix Hypervisor 服务器上使用的 DNS 服务器:

    xe pif-reconfigure-ip mode=static dns=dnshost ip=ip \
      gateway=gateway netmask=netmask uuid=uuid
    <!--NeedCopy-->
    
  3. 手动设置管理接口以使用与 DNS 服务器位于同一网络上的 PIF:

    xe host-management-reconfigure pif-uuid=pif_in_the_dns_subnetwork
    <!--NeedCopy-->
    

注意:

外部身份验证是每个主机的属性。但是,我们建议您基于每个池启用和禁用外部身份验证。利用每个池设置,Citrix Hypervisor 可以处理在特定主机上启用身份验证时出现的任何故障。Citrix Hypervisor 还可以根据需要回滚所做的任何更改,从而确保整个池的配置保持一致。使用 host-param-list 命令检查主机属性,并通过检查相关字段的值确定外部身份验证的状态。

可使用 XenCenter 或以下 xe 命令禁用 Active Directory 身份验证:

xe pool-disable-external-auth
<!--NeedCopy-->

用户身份验证

要允许用户访问您的 Citrix Hypervisor 服务器,必须为该用户或其所在的组添加一个使用者。(仍以常规方法检查过渡组成员。例如:为组 A 添加一个使用者,其中组 A 包含组 Buser 1 是组 B 的成员,将允许 user 1 具有访问权限)。如果您要管理 Active Directory 中的用户权限,可以创建一个组,然后在该组中添加和删除用户。或者,可以根据您的身份验证要求在 Citrix Hypervisor 中添加和删除单个用户,也可以添加和删除用户和组的组合。您可以从 XenCenter 或使用 CLI 管理使用者列表,如以下部分中所述。

对用户进行身份验证时,首先根据本地 root 帐户检查凭据,从而允许您恢复 AD 服务器出现故障的系统。如果凭据(用户名和密码)不匹配,则会向 AD 服务器发出身份验证请求。如果身份验证成功,将检索用户的信息,并根据本地使用者列表验证此信息。如果身份验证失败,访问将被拒绝。如果用户或用户的过渡组成员身份中的组在使用者列表中,根据使用者列表进行的验证将成功。

注意:

使用 Active Directory 组授予需要主机 SSH 访问权限的池管理员用户所需的访问权限时,AD 组的大小不得超过 500 个用户。

要将 AD 使用者添加到 Citrix Hypervisor,请执行以下操作:

xe subject-add subject-name=entity_name
<!--NeedCopy-->

entity_name 是要为其授予访问权限的用户或组的名称。虽然在无需消除歧义的情况下行为会相同,但您仍然可以包括实体的域(例如,“’xendt\user1”而非“user1”)。

查找用户的使用者标识符,标识符是用户或包含用户的组。删除一个组将删除该组中所有用户的访问权限,前提是这些用户未在使用者列表中指定。可使用 subject list 命令查找用户的使用者标识符:

xe subject-list
<!--NeedCopy-->

此命令将返回一个含有所有用户的列表。

要对该列表应用过滤器,例如,要查找 testad 域中用户 user1 的使用者标识符,可使用以下命令:

xe subject-list other-config:subject-name='testad\user1'
<!--NeedCopy-->

使用 subject-remove 命令删除用户,传递上一步中获得的使用者标识符:

xe subject-remove subject-uuid=subject_uuid
<!--NeedCopy-->

您可以结束此用户已通过身份验证的任何当前会话。有关详细信息,请参阅以下部分中使用 xe 终止已通过身份验证的所有会话使用 xe 终止单个用户会话。如果不结束会话,权限已被撤销的用户仍可以在注销前继续访问系统。

运行以下命令可识别具有访问 Citrix Hypervisor 服务器或池权限的用户和组的列表:

xe subject-list
<!--NeedCopy-->

删除用户的访问权限

用户通过身份验证后,即可访问服务器,直到用户自己结束其会话或其他用户结束其会话为止。从使用者列表中删除某个用户或从使用者列表中的某个组中删除该用户不会自动撤销该用户具有的已通过身份验证的任何会话。用户可以继续使用 XenCenter 或他们已经创建的其他 API 会话来访问池。使用 XenCenter 和 CLI,有助于强制结束单个会话或所有活动会话。请参阅 XenCenter 文档了解有关使用 XenCenter 的过程信息,或参阅以下部分了解使用 CLI 的过程。

使用 xe 终止已通过身份验证的所有会话

使用 xe 运行以下 CLI 命令可结束已通过身份验证的所有会话:

xe session-subject-identifier-logout-all
<!--NeedCopy-->

使用 xe 终止单个用户会话

  1. 确定要注销其会话的使用者标识符。使用 session-subject-identifier-listsubject-list xe 命令可以找到使用者标识符。第一个命令显示具有会话的用户。第二个命令显示所有用户,但可以对其进行过滤。例如,使用 xe subject-list other-config:subject-name=xendt\\user1 之类的命令。您可能需要一个双反斜杠,具体取决于您的 shell)。

  2. 使用 session-subject-logout 命令,将上一步确定的使用者标识符作为参数传递,例如:

    xe session-subject-identifier-logout subject-identifier=subject_id
    <!--NeedCopy-->
    

退出 AD 域

警告:

退出域时,通过 Active Directory 凭据进行身份验证以连接到池或服务器的所有用户均会断开连接 。

请使用 XenCenter 退出 AD 域。有关详细信息,请参阅 XenCenter 文档。也可以运行 pool-disable-external-auth 命令,在必要时指定池 UUID。

注意:

退出域不会从 AD 数据库中删除主机对象。有关如何检测和删除禁用的主机条目的信息,请参阅 Active Directory 文档。

管理用户