连接到 Amazon WorkSpaces Core 托管实例
创建和管理连接和资源 描述了创建连接的向导。以下信息涵盖了 Amazon WorkSpaces Core 托管实例的特定详细信息。
先决条件
在创建到 Amazon WorkSpaces Core 托管实例的连接之前,请执行以下操作:
定义 IAM 权限
在创建主机连接之前,需要为 IAM 用户或角色正确定义 IAM 权限策略,以便 Citrix 获得代表您在 AWS 账户中预配和管理资源的适当权限。使用本节中的信息为 Amazon WorkSpaces Core 托管实例上的 Citrix DaaS 定义 IAM 权限。Amazon 的 IAM 服务允许账户拥有多个用户,这些用户可以进一步组织成组。这些用户可以拥有不同的权限,以控制其执行与账户相关操作的能力。有关 IAM 权限的更多信息,请参阅 IAM JSON 策略参考。
注意:
由于 Citrix 代表您在 AWS 账户中预配和管理资源和自动化,因此不支持基于特定标签或资源命名约定配置 IAM 权限策略。
要将 IAM 权限策略应用于新的用户组:
- 登录到 AWS 管理控制台,并从下拉列表中选择 IAM 服务。
- 选择 创建新的用户组。
- 为新的用户组键入名称,然后选择 继续。
- 在“权限”页面上,选择“自定义策略”。
- 为“权限策略”键入名称。
- 在“策略文档”部分中,输入相关权限。
输入策略信息后,选择“继续”以完成将 IAM 权限策略应用于用户组。组中的用户仅被授予执行 Citrix DaaS 所需操作的权限。
重要提示:
使用本文示例中提供的策略文本,列出 Citrix DaaS 在 AWS 账户中执行操作时所使用的操作,而不将这些操作限制到特定资源。Citrix 建议您将此示例用于测试目的。对于生产环境,您可能需要对资源添加进一步的限制。
添加 IAM 权限
在 AWS 管理控制台的“IAM”部分中添加权限:
- 在“摘要”面板中,选择“权限”选项卡。
- 选择“添加权限”。
- 在“添加权限到”屏幕中,授予权限。
- 在 JSON 部分中,包含适用于您的环境的所需 AWS 权限。
创建服务相关角色
对于 Citrix 将调用 Core V2 API 的每个 AWS 账户,创建一个服务相关角色 (SLR)。
创建角色的步骤:
- 在 AWS 管理控制台中打开命令行界面 (CLI)。
-
在 CLI 中运行以下命令:
aws iam create-service-linked-role --aws-service-name workspaces-instances.amazonaws.com <!--NeedCopy-->
您还可以使用 Amazon WorkSpaces Core 管理控制台配置服务相关角色。请参阅创建服务相关角色(控制台)。
创建连接
您可以使用以下方式创建到 Amazon WorkSpaces Core 托管实例的连接:
注意:
检查您的代理服务器或防火墙限制,并确保以下地址可访问:
https://*.amazonaws.com和https://*.api.aws。此外,请确保 Citrix Gateway 服务连接 中提及的所有地址均可访问。如果这些地址不可访问,则在创建或更新主机连接时可能会导致失败。
使用 Studio 创建连接
- 导航到“托管 > 添加连接和资源”页面。
-
在“连接”页面上,按照以下步骤配置连接:
- 选择“创建新连接”。
- 在“区域”中,选择您为 AWS 环境设置的资源位置。
- 选择 Amazon WorkSpaces Core 作为连接类型。
-
选择 使用 IAM 用户访问密钥 或 使用 IAM 角色。
对于 IAM 用户访问密钥,请提供您的 API 密钥 和 秘密密钥,该 IAM 用户应具有适当的 IAM 权限策略,以便 Citrix 管理您的 AWS 账户中的资源。
对于 IAM 角色,请确保您已为 Citrix Cloud Connector 实例分配 IAM 角色,该实例应具有适当的 IAM 权限策略,以便 Citrix 管理您的 AWS 账户中的资源。有关详细信息,请参阅基于角色的身份验证指南。
- 要通过 Citrix Cloud Connector 将 API 请求路由到 AWS,请选中“在 Citrix Cloud Connector 上使用系统代理”复选框。这可确保当 Cloud Connector 没有直接 Internet 访问权限时,AWS 连接正常工作。
- 输入连接名称,然后单击“下一步”。
- 在“虚拟机位置”页面上,指定必须预配 VM 的位置。选择用于创建新 VM 的云区域、VPC 和可用区(或本地区域)。
-
在“网络”页面上:
- 为您之前在可用区(或本地区域)中选择的资源输入名称。
- 选择您在上一菜单中配置的 VPC 中的一个或多个子网。
- 单击以浏览其余页面,直到“摘要”页面。
- 单击“完成”以创建到 Amazon WorkSpaces Core 托管实例的主机连接。
重要注意事项
使用 Studio 创建连接时:
- 为 Citrix 定义适当的 IAM 权限以管理您的 AWS 资源。
- 如果您使用 IAM 用户访问密钥让 Citrix 管理您的 AWS 资源,则必须提供 API 密钥和秘密密钥值。您可以从 AWS 导出包含这些值的密钥文件,然后导入它们。您还必须提供区域、可用区、VPC 名称、子网地址、域名、安全组名称和凭据。
- 如果您使用 IAM 角色让 Citrix 管理您的 AWS 资源,则必须确保为所有 Cloud Connector 分配具有适当 IAM 权限的角色。有关详细信息,请参阅基于角色的身份验证指南。
- 根 AWS 账户的凭据文件(从 AWS 控制台检索)的格式与为标准 AWS 用户下载的凭据文件不同。因此,Citrix DaaS 无法使用该文件填充 API 密钥和秘密密钥字段。请确保您使用的是 AWS Identity Access Management (IAM) 凭据文件。
- 区域可以是可用区或本地区域。
使用 PowerShell 创建连接
- 打开 PowerShell 窗口。
- 运行
asnp citrix*以加载 Citrix 特定的 PowerShell 模块。 -
运行以下命令。示例如下:
$connectionName = "demo-hostingconnection" $cloudRegion = "us-east-1" $apiKey = "aaaaaaaaaaaaaaaaaaaa" $apiSecret = “bbbbb” $secureKey = ConvertTo-SecureString -String $apiSecret $zoneUid = "00000000-0000-0000-0000-000000000000" $connectionPath = "XDHyp:\Connections\" + $connectionName $connection = New-Item -Path $connectionPath -ConnectionType "AmazonWorkSpacesCoreMachineManagerFactory" -HypervisorAddress " "https://workspaces-instances.$($cloudRegion).api.aws"" -Persist -Scope @() -UserName $apiKey -SecurePassword $secureKey -ZoneUid $zoneUid New-BrokerHypervisorConnection -HypHypervisorConnectionUid $connection.HypervisorConnectionUid $hostingUnitName = "demo-hostingunit" $availabilityzone = "us-east-1a" $vpcName = "Default VPC" $jobGroup = [Guid]::NewGuid() $hostingUnitPath = "XDHyp:\HostingUnits\" + $HostingUnitName $rootPath = $connectionPath + "\" + $vpcName + ".virtualprivatecloud\" $availabilityZonePath = @($rootPath + $availabilityzone + ".availabilityzone") $networkPaths = (Get-ChildItem $availabilityZonePath[0] | Where ObjectType -eq "Network") | Select-Object -ExpandProperty FullPath # will select all the networks in the availability zone New-Item -Path $hostingUnitPath -AvailabilityZonePath $availabilityZonePath -HypervisorConnectionName $connectionName -JobGroup $jobGroup -PersonalvDiskStoragePath @() -RootPath $rootPath -NetworkPath $networkPaths <!--NeedCopy-->
注意:
要使用基于角色的身份验证创建连接,请将 apiKey 和 apiSecret 指定为
role_based_auth。
限制
如果您在 AWS 控制台中更改 AWS Virtual Private Cloud (VPC) 的名称,则 Citrix Cloud™ 中现有的托管单元将中断。当托管单元中断时,您无法创建目录或将计算机添加到现有目录。要解决此问题,请将 AWS VPC 的名称改回原始名称。
为 AWS 管理的流量创建安全环境
如果您在 Cloud Connector 上配置了代理,则必须创建主机连接以使用该代理,以便 MCS 发出的 API 调用能够正确地通过代理路由。MCS 允许网络流量(从 Citrix Cloud 到 AWS 虚拟机管理程序的 API 调用)通过您环境中的 Cloud Connector 进行路由。
主机连接可以读取在 Cloud Connector 安装期间配置的 WinHTTP 系统代理值。您可以使用 Studio 配置代理,或者在使用 PowerShell 创建或更新主机连接时将自定义属性 UseSystemProxyForHypervisorTrafficOnConnectors 设置为 True。
注意:
如果您的环境使用代理,请确保禁用 SSL 检查或 https://workspaces-instances.*.api.aws/ 的 SSL 连接保持不变。
创建配置了代理的主机连接
- 打开 PowerShell 窗口。
- 运行
asnp citrix*以加载 Citrix 专用的 PowerShell 模块。 -
运行 PowerShell 命令以配置代理。例如:
$connectionName = "demo-hostingconnection" $cloudRegion = "us-east-1" $apiKey = "aaaaaaaaaaaaaaaaaaaa" $zoneUid = "00000000-0000-0000-0000-000000000000" $securePassword = Read-Host 'Please enter your secret key' -AsSecureString $connectionPath = "XDHyp:\Connections\" + $connectionName $customProperties = @" <CustomProperties xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.citrix.com/2014/xd/machinecreation"> <Property xsi:type="StringProperty" Name="UseSystemProxyForHypervisorTrafficOnConnectors" Value="True" /> </CustomProperties> "@ <!--NeedCopy--> -
创建托管连接。例如:
$connection = New-Item -Path $connectionPath ` -ConnectionType "Custom" -PluginId "AmazonWorkSpacesCoreMachineManagerFactory" ` -HypervisorAddress "https://workspaces-instances.$($cloudRegion).api.aws" ` -CustomProperties> $customProperties ` -Persist -Scope @()` -UserName $apiKey -SecurePassword $securePassword ` -ZoneUid $zoneUid New-BrokerHypervisorConnection -HypHypervisorConnectionUid $connection.HypervisorConnectionUid <!--NeedCopy-->
要为现有主机连接启用代理,请参阅在现有连接上启用代理。
跨账户预配
在某些用例中,Cloud Connector 希望放置在单独的 AWS 账户(共享服务账户或站点组件账户)中,并使用具有跨账户访问权限的 IAM 角色(跨账户 IAM 角色),以及在单独的辅助 AWS 账户(工作负载账户)中预配的 MCS 计算机目录,而无需在单独的账户中部署额外的 Cloud Connector。为了支持此类场景,此功能使用 VPC 对等连接和通过 IAM 角色进行的跨账户访问,使管理多个 AWS 账户的企业能够在不同 AWS 账户之间进行预配。
通过VPC 对等连接,您可以让您的 Cloud Connector 以及不同区域或账户中预配的 VM 能够相互通信。
通过使用 IAM 角色进行跨账户访问,您可以允许主账户(Cloud Connector 账户)承担 IAM 角色以访问辅助账户中的 AWS 资源(计算机目录 VM)。
要允许 Cloud Connector 访问辅助账户的资源,请在承担辅助账户的 IAM 角色后创建主机连接。
先决条件
在为跨账户预配创建主机连接之前,请设置以下内容:
- 设置 VPC 对等连接并在两个区域或账户中配置安全组。请参阅 设置 VPC 对等连接。
- 使用 IAM 角色委派跨账户访问。请参阅 使用 IAM 角色委派跨账户访问。
设置 VPC 对等连接
假设 VPC A 位于主账户(账户 A)中,并且包含 Cloud Connector 和 Active Directory。VPC B 位于辅助账户(账户 B)中,您希望在此处预配 VM。
要在账户 A 和账户 B 之间设置 VPC 对等连接,请执行以下操作:
-
创建 VPC 对等连接。请参阅:
- 转到您的 VPC A 以及与公共子网关联的路由表。
- 单击 Edit Routes > Add route(编辑路由 > 添加路由)。在 Destination(目标)列中添加 VPC B 的 CIDR 块,并在 Target(目标)列中添加您创建的 VPC 对等连接。
- 重复步骤 2 和 3,但使用 VPC A 和 VPC B 的私有子网(添加 VPC A 的 CIDR 块)。请参阅 更新 VPC 对等连接的路由表。
- 转到与 VPC A 关联的私有安全组。
- 选择 Actions(操作),然后选择 Edit inbound rules(编辑入站规则)。
-
选择 Add rule(添加规则)。对于类型,选择 All Traffic(所有流量),然后在 Source Column(源列)中添加:
- 如果它是不同的区域,请添加 VPC B 的 CIDR 块。
- 如果它是不同的账户但位于同一区域,请添加 VPC B 的账户 ID 和私有安全组 ID,并用斜杠分隔(例如,123456789012/sg-1a2b3c4d)
- 重复步骤 5 到 7,但使用 VPC B 的私有安全组(但添加 VPC A 的 CIDR 块或 VPC A 的账户 ID 和同一区域但不同账户的私有安全组 ID)。请参阅更新安全组以引用对等安全组。
注意:
创建 VPC 对等连接不收取费用。但是,虽然可用区内的 VPC 对等是免费的,但当数据通过 VPC 对等连接跨多个可用区和区域传输时,会产生费用。请参阅 VPC 对等连接定价。
使用 IAM 角色委派跨账户访问
在跨账户设置 VPC 对等后,您可以使用 IAM 角色委派跨账户访问。
通过使用 IAM 角色进行跨账户访问,您可以允许主账户(Cloud Connector 账户)承担 IAM 角色,以访问辅助账户(计算机目录 VM)中的 AWS 资源。
要访问跨账户资源,请执行以下操作:
请记住:
假设 VPC A 位于主账户(账户 A)中,并且它具有 Cloud Connector 和 Active Directory。VPC B 位于辅助账户(账户 B)中,您希望在此处预配 VM
- 按照前面提到的步骤设置跨账户 VPC 对等。
- 在账户 B 中创建具有最少 Citrix IAM 权限的 IAM 角色和策略。请参阅 IAM 教程:使用 IAM 角色委派跨 AWS 账户访问权限。假设此角色的 ARN 为“arn:aws:iam::5678:role/citrix-role”。
- 将信任策略添加到角色“arn:aws:iam::5678:role/citrix-role”,以便账户 A 角色“arn:aws:iam::1234:role/primary-account-citrix-role”可以访问它,按照 - IAM 中的跨账户资源访问。
- 在账户 A 中创建之前提到的名称为“primary-account-citrix role”的 IAM 角色和策略,该角色和策略可以承担 IAM 角色并从账户 B 传递 IAM 角色 (arn:aws:iam::5678:role/citrix-role)。
- 将角色“arn:aws:iam::1234:role/primary-account-citrix-role”分配给账户 A 中的所有 Cloud Connector。
Cloud Connectors 现在可以从账户 B(”arn:aws:iam::5678:role/citrix-role”)承担角色。
为跨账户预配创建主机连接
在要预配 VM 的辅助账户(账户 B)中创建主机连接。这允许账户 A 的 Cloud Connectors 在承担账户 B 的角色后访问账户 B 中的资源。
使用 PowerShell 命令创建主机连接并添加以下两个自定义属性:
-
CrossAccountRoleArn:如果您不提供CrossAccountRoleArn属性,则会创建常规主机连接。在这种情况下,即使提供了MaximumAssumeRoleDurationInSeconds,也会被忽略。 -
MaximumAssumeRoleDurationInSeconds:DurationInSeconds必须介于 900 秒到 3600 秒之间。默认值为 900 秒。如果您提供的值超过 3600,则DurationInSeconds将设置为 3600。
示例:
$connectionName = "cross-account-conn"
$cloudRegion = "us-east-1"
$apiKey = "role_based_auth"
$secretKey = "role_based_auth"
$zoneUid = "xxxxxx"
$secureKey = (ConvertTo-SecureString -String $secretKey -AsPlainText -Force)
$connectionPath = "XDHyp:\Connections\" + $connectionName
$customProperties = '<CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Property xsi:type="StringProperty" Name="CrossAccountRoleArn" Value="arn:aws:iam::5678:role/citrix-role" /><Property xsi:type="StringProperty" Name="MaximumAssumeRoleDurationInSeconds" Value="3600" />
"</CustomProperties>'
$connection = New-Item -Path $connectionPath -ConnectionType "AmazonWorkSpacesCoreMachineManagerFactory" -HypervisorAddress "https://workspaces-instances.$($cloudRegion).api.aws" -Persist -Scope @() -UserName $apiKey -SecurePassword $secureKey -ZoneUid $zoneUid -CustomProperties $customProperties
New-BrokerHypervisorConnection -HypHypervisorConnectionUid $connection.HypervisorConnectionUid
<!--NeedCopy-->
创建主机连接后,使用 Studio 或 PowerShell 创建托管单元。但是,请选择 VPC 和网络。
绕过 Cloud Connectors 进行 AWS API 请求
在 Amazon WorkSpaces Core 托管实例 (MI) 环境中,Citrix Machine Creation Services (MCS) 插件通常驻留在 Delivery Controller 上,并通过代理将 AWS API 请求路由到 Citrix Cloud Connector。
您可以配置主机连接以绕过 Cloud Connector 进行 AWS API 请求。启用此功能后,插件会直接从 DDC 向 AWS 服务(例如 Amazon EC2、EBS 和 WorkSpaces 实例)发出 API 调用(包括用于预配和电源管理的调用),从而消除了通过代理经由 Cloud Connector 的依赖性。
优势
- 减少 AWS API 调用对 Cloud Connectors 的依赖:消除 AWS API 对 Cloud Connector 的依赖是客户旨在减少其本地或云基础设施占用空间的关键一步。
- 降低资源消耗:通过 Cloud Connector 的流量减少,降低了 Connector VM 的计算要求,从而可能节省成本。
- 操作灵活性:通过消除关键电源管理和预配任务的潜在故障点(Cloud Connector/NGS 代理路径),提供更高的可用性。
限制和注意事项
在启用此功能之前,请考虑以下要求和限制:
- 身份验证:绕过 Cloud Connector 时不支持基于角色的身份验证 (IAM 角色)。您必须仅为 IAM 用户访问密钥配置设置。
- 环境范围:此功能专用于 Amazon WorkSpaces Core 托管实例 (MI)。它不支持标准 AWS EC2 主机连接。
- 网络要求:DDC 必须具有到 AWS 服务端点的直接网络路径。
- 资源位置运行状况:如果 Cloud Connector 最初是在资源位置中预配的,则它必须保持开机状态。如果存在 Cloud Connector,非 MCS 组件和运行状况检查仍依赖于它。
- 不支持的功能:
- 跨账户预配
- 系统代理使用
- 连接器要求:虽然此功能消除了 API 依赖性,但还需要其他配置来减少对 Cloud Connector 的依赖性(Cloud Connector 的要求可能不限于此处列出的要求):
- 域加入:使用非域加入或 Microsoft Entra 混合加入的计算机。
- VDA 注册:为 VDA 注册启用 Rendezvous V2(通过 WebSockets 实现 DDC 到 VDA 的直接通信)。
创建具有 API 旁路的主机连接
在完整配置 (Studio) 中创建主机连接时,即使该位置没有 Cloud Connector,您现在也可以选择 Amazon WorkSpaces Core 资源位置。
要通过 PowerShell 启用旁路,请使用 BypassConnectorForAwsApiRequests 自定义属性。
PowerShell 示例:
$custProp = '<CustomProperties xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.citrix.com/2014/xd/machinecreation">
<Property xsi:type="StringProperty" Name="BypassConnectorForAwsApiRequests" Value="true" />
</CustomProperties>'
$connectionName = "MyWSCConnection"
$cloudRegion = "us-east-1"
$apiKey = "YOUR_IAM_ACCESS_KEY"
$zoneUid = (Get-ConfigZone | Where-Object {$_.Name -eq "MyResourceLocation"}).Uid
$securePassword = Read-Host 'Enter your IAM Secret Key' -AsSecureString
$connectionPath = "XDHyp:\Connections\" + $connectionName
$connection = New-Item -Path $connectionPath `
-ConnectionType "Custom" `
-PluginId "AmazonWorkSpacesCoreMachineManagerFactory" `
-HypervisorAddress "https://workspaces-instances.$($cloudRegion).api.aws" `
-Persist -Scope @() `
-CustomProperties $custProp `
-UserName $apiKey -SecurePassword $securePassword `
-ZoneUid $zoneUid
New-BrokerHypervisorConnection -HypHypervisorConnectionUid $connection.HypervisorConnectionUid
<!--NeedCopy-->
管理现有连接
您可以为现有主机连接启用或禁用旁路功能。
- 在现有连接上启用:您可以修改现有连接的自定义属性以包含
BypassConnectorForAwsApiRequests = true.. - 禁用:如果禁用,DDC 将通过 NGS 代理,经由 Cloud Connector 恢复路由 AWS API 调用。请注意,这要求资源位置中提供功能正常的 Cloud Connector 和 NGS 代理路径。
故障排除
如果您尝试在不支持的条件下启用旁路属性,系统将返回验证错误:
-
IAM 角色/跨账户/代理:如果与 IAM 角色、跨账户预配或系统代理同时启用,则
New-Item命令将失败,并显示:AmazonWorkSpacesCoreException: Bypassing the Cloud Connector For AWS API requests is not supported for IAM roles, Cross-Account provisioning and System Proxy. <!--NeedCopy--> -
不支持的连接类型:如果应用于标准 Amazon EC2 (AWS) 连接,系统将失败,并显示:
AmazonWorkSpacesCoreException: Bypassing the Cloud Connector For AWS API requests is not supported for EC2 host connection. <!--NeedCopy-->
编辑连接
您可以编辑现有主机连接以:
- 修改为 Citrix 提供 IAM 权限以管理资源的选项
- 修改每个托管连接的最大同时操作数(或并发计算机数)
- 修改范围。
- 使用 PowerShell 命令配置每个弹性网络接口 (ENI) 允许的最大安全组数
- 启用代理以创建安全的 AWS 托管流量环境(#enable-the-proxy-on-an-existing-connection)
编辑选项以提供 IAM 权限
- 右键单击现有的 Amazon WorkSpaces Core 连接。
- 在“连接属性”页面上,单击“编辑设置”。
- 选择其中一个选项以提供 Citrix 管理资源所需的 IAM 权限。输入所需详细信息,然后单击“保存”。
修改同时操作的最大数量
在 Studio 中为 Amazon WorkSpaces Core 托管实例创建主机连接时,将显示以下默认值:
| 选项 | 绝对值 | 百分比 |
|---|---|---|
| 同时操作(所有类型) | 125 | 100 |
| 每分钟最大新增操作数 | 150 | 不适用 |
| 最大并发预配操作数 | 150 | 不适用 |
MCS 默认支持 150 个最大并发预配操作。
您可以通过访问 Edit Connection(编辑连接)屏幕上的 Citrix Studio Advanced(高级)部分来配置这些值:
或者,您可以使用远程 PowerShell SDK 设置最大并发操作数,以根据您的环境获得最佳设置。
使用 PowerShell 自定义属性 MaximumConcurrentProvisioningOperations 来指定最大并发 AWS 预配操作数。
配置前:
- 确保您已安装适用于云的 PowerShell SDK。
- 请注意,
MaximumConcurrentProvisioningOperations的默认值为 150。
执行以下步骤以自定义 MaximumConcurrentProvisioningOperations 值:
- 打开 PowerShell 窗口。
- 运行
asnp citrix*以加载 Citrix 特定的 PowerShell 模块。 - 输入
cd xdhyp:\Connections\。 - 输入
dir以列出连接。 -
更改或初始化自定义属性字符串:
-
如果自定义属性字符串有值,请将自定义属性复制到记事本中。接下来,将
MaximumConcurrentProvisioningOperations属性更改为首选值。您可以输入 1-1000 范围内的值。 例如,<Property xsi:type="IntProperty" Name="MaximumConcurrentProvisioningOperations" Value="xyz"/>。 -
如果自定义属性字符串为空或为 null,您必须通过输入架构和
MaximumConcurrentProvisioningOperations属性的正确语法来初始化该字符串。
-
-
在 PowerShell 窗口中,从记事本中粘贴修改后的自定义属性,并将变量分配给修改后的自定义属性。如果您初始化了自定义属性,请在语法后添加以下行:
$customProperties = '<CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><Property xsi:type="IntProperty" Name="MaximumConcurrentProvisioningOperations" Value="100"/></CustomProperties>' <!--NeedCopy-->此字符串将
MaximumConcurrentProvisioningOperations属性设置为 100。在自定义属性字符串中,您必须将MaximumConcurrentProvisioningOperations属性设置为符合您需求的值。 - 输入
Get-XDAuthentication,系统将提示您输入凭据。 - 运行
$cred = Get-Credential,系统可能会提示您仅输入密码(或用户名和密码)。系统还可能会提示您输入应用程序 ID 和关联的密钥。对于使用基于角色的身份验证的连接,role_based_auth 既是用户名也是密码。否则,请输入 AWS API ID 和密钥。 - 运行
set-item -PSPath 'XDHyp:\Connections<connection-name>' -CustomProperties $customProperties -username $cred.username -Securepassword $cred.password。您必须将 <connection-name> 设置为连接的名称。 - 输入
dir以验证更新后的 CustomProperties 字符串。
配置每个网络接口的安全组
编辑主机连接时,您现在可以使用 PowerShell 命令配置每个弹性网络接口 (ENI) 允许的最大安全组数。有关 AWS 安全组配额值的信息,请参阅安全组。
要配置每个网络接口的安全组:
- 打开 PowerShell 窗口。
- 运行
asnp citrix*以加载 Citrix 特定的 PowerShell 模块。 - 运行
cd xdhyp:\Connections\。 - 运行
dir以列出连接。 -
运行以下 PowerShell 命令以配置每个网络接口的安全组:
Set-HypHypervisorConnectionMetadata -HypervisorConnectionName aws -Name "Citrix_MachineManagement_Options" -Value " AwsMaxENISecurityGroupLimit=<number>" <!--NeedCopy-->注意:
如果您未设置
AwsMaxENISecurityGroupLimit的值,则它将采用默认值 5。
在现有连接上启用代理
- 打开 PowerShell 窗口。
-
运行以下命令。
Add-PSSnapin citrix*. cd XDHyp:\Connections\ dir <!--NeedCopy--> - 将连接中的
CustomProperties复制到记事本,并将属性设置<Property xsi:type="StringProperty" Name="UseSystemProxyForHypervisorTrafficOnConnectors" Value="True" />附加到CustomProperties以启用代理。 -
在 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="UseSystemProxyForHypervisorTrafficOnConnectors" Value="True" /> </CustomProperties>' <!--NeedCopy--> - 输入
Get-XDAuthentication,系统将提示您输入凭据。 -
运行
$cred = Get-Credential,系统可能会提示您仅输入密码(或用户名和密码)。系统可能还会提示您输入应用程序 ID 和关联的密钥。对于使用基于角色的身份验证的连接,role_based_auth既是用户名又是密码。否则,请输入 AWS API ID 和密钥。 - 运行
set-item -PSPath 'XDHyp:\Connections<connection-name>' -CustomProperties $customProperties -username $cred.username -Securepassword $cred.password。您必须将<connection-name>设置为连接的名称。 - 输入
dir以验证更新后的CustomProperties字符串。
服务终结点 URL
标准区域服务终结点 URL
使用 MCS 时,会添加一个新的 Amazon WorkSpaces Core Managed Instances 连接,其中包含 API 密钥和 API 秘密。利用此信息以及经过身份验证的帐户,MCS 使用 AWS EC2 和 Amazon WorkSpaces Core Managed Instances API 调用查询 AWS 以获取支持的区域和可用区。查询是使用 Workspace Instances 服务终结点 URL https://workspaces-instances.us-east-1.api.aws/ 和 EC2 服务终结点 https:/ec2.us-east-1.api.aws/ 进行的。
注意:
非标准服务终结点 URL
在某些情况下,您可能不需要为连接自动选择的 AWS 服务终结点 URL。对于此类情况,您可以使用 Citrix Cloud SDK 和 PowerShell 创建具有非标准服务终结点 URL 的连接。例如,要使用服务终结点 URL https://ec2.cn-north-1.amazonaws.com.cn 创建连接,请执行以下操作:
- 设置 AWS 托管的 Cloud Connector 并确保其具有连接性。
-
运行以下 PowerShell 命令以查看 Cloud Connector 列表。
PS C:\> asnp citrix.* PS C:\> Get-XDAuthentication PS C:\> Get-ConfigEdgeServer <!--NeedCopy--> -
从新创建的 Cloud Connector 中找到 ZoneUid,并将其输入到以下 PowerShell 命令中。将斜体项目替换为相应的值。
PS C:\> $hyp= New-Item -Path xdhyp:\Connections -ZoneUid ZoneUid -Name “My New Connection” -ConnectionType "Custom" -HypervisorAddress @("https://workspaces-instances.$($cloudRegion).api.aws")-PluginId "AmazonWorkSpacesCoreMachineManagerFactory" -UserName “APIkey” -Password “API Secret” -Persist PS C:\> New-BrokerHypervisorConnection -HypHypervisorConnectionUid $hyp. HypervisorConnectionUid <!--NeedCopy--> - 刷新托管选项卡以验证连接是否已创建。
- 使用新连接添加资源位置。
所需的 AWS 权限
本节包含 AWS 权限的完整列表。请使用本节中提供的完整权限集,以确保功能正常运行。
注意:
仅当使用 IAM 角色让 Citrix 管理资源时,才需要
iam:PassRole权限。
创建主机连接
使用从 AWS 获取的信息添加新的主机连接。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"ec2:DescribeAvailabilityZones",
"ec2:DescribeSubnets",
"ec2:DescribeVpcs",
"ec2:DescribeRegions",
"workspaces-instances:*"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
<!--NeedCopy-->
虚拟机电源管理
虚拟机已开机或关机。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"ec2:DescribeInstances",,
"ec2:StartInstances",
"ec2:StopInstances",
"ec2:RebootInstances",
"ec2:DescribeInstanceStatus"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Action": [
"workspaces-instances:*"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
<!--NeedCopy-->
创建、更新或删除虚拟机
创建、更新或删除将虚拟机预配为 AWS 实例的计算机目录。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"ec2:AttachVolume",
"ec2:AssociateIamInstanceProfile",
"ec2:AuthorizeSecurityGroupEgress",
"ec2:RevokeSecurityGroupEgress",
"ec2:AuthorizeSecurityGroupIngress",
"ec2:CreateImage",
"ec2:CreateLaunchTemplate",
"ec2:CreateSecurityGroup",
"ec2:CreateTags",
"ec2:CreateVolume",
"ec2:DeleteVolume",
"ec2:DescribeAccountAttributes",
"ec2:DescribeAvailabilityZones",
"ec2:DescribeIamInstanceProfileAssociations",
"ec2:DescribeImages",
"ec2:DescribeInstances",
"ec2:DescribeInstanceStatus",
"ec2:DescribeInstanceTypes",
"ec2:DescribeLaunchTemplates",
"ec2:DescribeLaunchTemplateVersions",
"ec2:DescribeNetworkInterfaces",
"ec2:DescribeRegions",
"ec2:DescribeSecurityGroups",
"ec2:DescribeSnapshots",
"ec2:DescribeSubnets",
"ec2:DescribeTags",
"ec2:DescribeSpotInstanceRequests",
"ec2:DescribeInstanceCreditSpecifications",
"ec2:DescribeInstanceAttribute",
"ec2:GetLaunchTemplateData",
"ec2:DescribeVolumes",
"ec2:DescribeVpcs",
"ec2:DetachVolume",
"ec2:DisassociateIamInstanceProfile",
"ec2:RunInstances",
"ec2:StartInstances",
"ec2:StopInstances",
"ec2:TerminateInstances"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Action": [
"ec2:CreateSecurityGroup",
"ec2:DeleteSecurityGroup"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Action": [
"ebs:StartSnapshot",
"ebs:GetSnapshotBlock",
"ebs:PutSnapshotBlock",
"ebs:CompleteSnapshot",
"ebs:ListSnapshotBlocks",
"ebs:ListChangedBlocks",
"ec2:CreateSnapshot"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Action": [
"workspaces-instances:*"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"iam:GetAccountSummary",
"ec2:CopyImage"
],
"Resource": "*"
},
]
}
<!--NeedCopy-->
注意:
- 仅当在目录创建期间必须为准备虚拟机创建隔离安全组时,才需要与 SecurityGroups 相关的 EC2 部分。完成此操作后,不再需要这些权限。
- 仅当跨区域共享准备好的映像时,才需要 EC2
CopyImage和 IAMGetAccountSummary权限。请参阅跨可用区和区域共享准备好的映像。
直接磁盘上传和下载
必须将以下权限添加到策略中:
ebs:StartSnapshotebs:GetSnapshotBlockebs:PutSnapshotBlockebs:CompleteSnapshotebs:ListSnapshotBlocksebs:ListChangedBlocksec2:CreateSnapshotec2:DeleteSnapshotec2:DescribeLaunchTemplates
创建卷的 EBS 加密
如果 AMI 已加密,或者 EBS 配置为加密所有新卷,则 EBS 可以自动加密新创建的卷。但是,要实现此功能,IAM 策略中必须包含以下权限。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:CreateGrant",
"kms:Decrypt",
"kms:DescribeKey",
"kms:GenerateDataKeyWithoutPlainText",
"kms:GenerateDataKey",
"kms:ReEncryptTo",
"kms:ReEncryptFrom"
],
"Resource": "*"
}
]
}
<!--NeedCopy-->
注意:
权限可以通过在用户酌情决定下包含 Resource 和 Condition 块来限制为特定密钥。例如,带条件的 KMS 权限:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:CreateGrant",
"kms:Decrypt",
"kms:DescribeKey",
"kms:GenerateDataKeyWithoutPlainText",
"kms:GenerateDataKey",
"kms:ReEncryptTo",
"kms:ReEncryptFrom"
],
"Resource": [
"arn:aws:kms:us-east-2:123456789012:key/abcd1234-a123-456d-a12b-a123b4cd56ef"
],
"Condition": {
"Bool": {
"kms:GrantIsForAWSResource": true
}
}
}
]
}
<!--NeedCopy-->
以下密钥策略语句是 KMS 密钥的整个默认密钥策略,它允许帐户使用 IAM 策略委托 KMS 密钥上的所有操作 (kms:*) 权限。
{
"Sid": "Enable IAM policies",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:root"
},
"Action": "kms:",
"Resource": ""
}
<!--NeedCopy-->
有关详细信息,请参阅 AWS Key Management Service 官方文档。
基于 IAM 角色的身份验证
添加以下权限以支持基于角色的身份验证。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": "arn:aws:iam::*:role/*"
}
]
}
<!--NeedCopy-->
最小 IAM 权限策略
以下 JSON 可用于所有当前支持的功能。您可以使用此策略创建主机连接、创建、更新或删除 VM 以及执行电源管理。 该策略可以按照 定义 IAM 权限 部分中的说明应用于用户,或者您也可以在配置主机连接时通过选择 使用 IAM 角色 来使用基于角色的身份验证。
重要提示:
要使用 Citrix 管理资源的 IAM 角色,首先在设置云连接器时,在云连接器 EC2 实例上配置所需的 IAM 角色。使用 Citrix Studio,添加托管连接并选择 使用 IAM 角色 选项。具有这些设置的托管连接随后将使用基于角色的身份验证。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"ec2:AttachVolume",
"ec2:AssociateIamInstanceProfile",
"ec2:AuthorizeSecurityGroupEgress",
"ec2:RevokeSecurityGroupEgress",
"ec2:AuthorizeSecurityGroupIngress",
"ec2:CreateImage",
"ec2:CreateLaunchTemplate",
"ec2:CreateNetworkInterface",
"ec2:CreateTags",
"ec2:CreateVolume",
"ec2:DeleteLaunchTemplate",
"ec2:DeleteNetworkInterface",
"ec2:DeleteSecurityGroup",
"ec2:DeleteSnapshot",
"ec2:DeleteTags",
"ec2:DeleteVolume",
"ec2:DeregisterImage",
"ec2:DescribeAccountAttributes",
"ec2:DescribeAvailabilityZones",
"ec2:DescribeIamInstanceProfileAssociations",
"ec2:DescribeImages",
"ec2:DescribeInstances",
"ec2:DescribeInstanceTypes",
"ec2:DescribeInstanceStatus",
"ec2:DescribeLaunchTemplates",
"ec2:DescribeLaunchTemplateVersions",
"ec2:DescribeNetworkInterfaces",
"ec2:DescribeRegions",
"ec2:DescribeSecurityGroups",
"ec2:DescribeSnapshots",
"ec2:DescribeSubnets",
"ec2:DescribeTags",
"ec2:DescribeSpotInstanceRequests",
"ec2:DescribeInstanceCreditSpecifications",
"ec2:DescribeInstanceAttribute",
"ec2:GetLaunchTemplateData",
"ec2:DescribeVolumes",
"ec2:DescribeVpcs",
"ec2:DetachVolume",
"ec2:DisassociateIamInstanceProfile",
"ec2:RebootInstances",
"ec2:RunInstances",
"ec2:StartInstances",
"ec2:StopInstances",
"ec2:TerminateInstances"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Action": [
"ec2:CreateSecurityGroup",
"ec2:DeleteSecurityGroup"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Action": [
"ebs:StartSnapshot",
"ebs:GetSnapshotBlock",
"ebs:PutSnapshotBlock",
"ebs:CompleteSnapshot",
"ebs:ListSnapshotBlocks",
"ebs:ListChangedBlocks",
"ec2:CreateSnapshot"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"kms:CreateGrant",
"kms:Decrypt",
"kms:DescribeKey",
"kms:GenerateDataKeyWithoutPlainText",
"kms:GenerateDataKey",
"kms:ReEncryptTo",
"kms:ReEncryptFrom"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": "arn:aws:iam::*:role/*"
},
{
"Effect": "Allow",
"Action": [
"workspaces-instances:*"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"iam:GetAccountSummary",
"ec2:CopyImage"
],
"Resource": "*"
}
]
}
<!--NeedCopy-->
注意:
- 与 SecurityGroups 相关的 EC2 部分仅在目录创建期间必须为准备虚拟机创建隔离安全组时才需要。完成此操作后,不再需要这些权限。
- KMS 部分仅在使用 EBS 卷加密时才需要。
iam:PassRole权限部分仅在使用 IAM 角色让 Citrix 管理资源时才需要。- 可以根据您的要求和环境添加特定的资源级权限,而不是完全访问权限。有关更多详细信息,请参阅 AWS 文档 揭秘 EC2 资源级权限 和 AWS 资源访问管理。
- 仅当您使用卷工作器方法时,才使用
ec2:CreateNetworkInterface和ec2:DeleteNetworkInterface权限。
下一步操作
- 有关创建准备好的映像,请参阅 为 Amazon WorkSpaces Core 托管实例创建准备好的映像
更多信息
- 创建和管理连接和资源
- AWS 虚拟化环境
- 有关 Amazon WorkSpaces Core GitHub PowerShell 示例,请参阅 citrix-mcs-sdk-samples-Amazon WorkSpaces Core。