Connection to Amazon WorkSpaces Core Managed Instances
(/zh-cn/citrix-virtual-apps-desktops/2511/install-configure/connections) 介绍了创建连接的向导。以下信息涵盖了 Amazon WorkSpaces Core 托管实例的特定详细信息。
先决条件
在创建到 Amazon WorkSpaces Core 托管实例的连接之前,请执行以下操作:
- 完成将 AWS 设置为资源位置。请参阅 (/zh-cn/citrix-virtual-apps-desktops/2511/install-configure/install-prepare/aws)。
- (#define-iam-permissions) Citrix® 代表您管理 AWS 资源的 IAM 用户或角色的策略。
- 创建服务相关角色(#create-a-service-linked-role)。
定义 IAM 权限
在创建主机连接之前,需要为 IAM 用户或角色正确定义 IAM 权限策略,该策略授予 Citrix 代表您在 AWS 帐户中预配和管理资源的适当权限。使用本节中的信息为 Amazon WorkSpaces Core 托管实例上的 Citrix Virtual Apps and Desktops 定义 IAM 权限。Amazon 的 IAM 服务允许帐户拥有多个用户,这些用户可以进一步组织成组。这些用户可以拥有不同的权限来控制其执行与帐户相关的操作的能力。有关 IAM 权限的更多信息,请参阅 IAM JSON 策略参考。
注意:
由于 Citrix 代表您在 AWS 帐户中预配和管理资源及自动化,因此不支持基于特定标签或资源命名约定配置 IAM 权限策略。
要将 IAM 权限策略应用于新用户组,请执行以下操作:
- 登录 AWS 管理控制台,然后从下拉列表中选择 IAM 服务。
- 选择 创建新用户组。
- 键入新用户组的名称,然后选择 Continue(继续)。
- 在权限页面上,选择自定义策略。
- 为权限策略键入一个名称。
- 在策略文档部分,输入相关权限。
输入策略信息后,选择继续以完成将 IAM 权限策略应用于用户组。组中的用户仅被授予执行 Citrix Virtual Apps and Desktops 所需操作的权限。
重要提示:
使用本文示例中提供的策略文本,列出 Citrix Virtual Apps and Desktops 在 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 服务连接 中提及的所有地址均可访问。如果这些地址无法访问,则在创建或更新主机连接时可能会导致失败。
使用 Web Studio 创建连接
- 导航到 托管 > 添加连接和资源 页面。
-
在 连接 页面上,按照以下步骤配置连接:
- 选择 创建新连接。
- 在 区域 中,选择您为 AWS 环境设置的资源位置。
- 选择 亚马逊工作区核心 作为连接类型。
-
选择 使用 IAM 用户访问密钥 或 使用 IAM 角色。
对于 IAM 用户访问密钥,请提供具有适当 IAM 权限策略的 IAM 用户的 API 密钥 和 秘密密钥,以便 Citrix 管理您的 AWS 账户中的资源。
对于 IAM 角色,请确保您已将 IAM 角色 分配给 Delivery Controller 实例,并具有适当的 IAM 权限策略,以便 Citrix 管理您的 AWS 账户中的资源。有关详细信息,请参阅 基于角色的身份验证指南。
- 输入连接名称,然后单击 下一步。
- 在 虚拟机位置 页面上,指定必须预配 VM 的位置。选择用于创建新 VM 的云区域、VPC 和可用区。
-
在 网络 页面上:
- 请为之前在可用区或本地区域中选择的资源输入一个名称。
- 在您在上一菜单中配置的 VPC 中选择一个或多个子网。
- 单击其余页面,直到 摘要 页面。
- 单击 完成 以创建到 Amazon WorkSpaces Core 托管实例的主机连接。
重要注意事项
使用 Web Studio 创建连接时:
- 为 Citrix 定义适当的 IAM 权限以管理您的 AWS 资源。
- 如果您使用 IAM 用户访问密钥让 Citrix 管理您的 AWS 资源,则必须提供 API 密钥和秘密密钥值。您可以从 AWS 导出包含这些值的密钥文件,然后导入它们。您还必须提供区域、可用区、VPC 名称、子网地址、域名、安全组名称和凭据。
- 如果您使用 IAM 角色让 Citrix 管理您的 AWS 资源,则必须确保为所有 Delivery Controller 分配具有适当 IAM 权限的角色。有关更多信息,请参阅基于角色的身份验证指南。
- 根 AWS 账户的凭据文件(从 AWS 控制台检索)的格式与为标准 AWS 用户下载的凭据文件不同。因此,Citrix Virtual Apps and Desktops 无法使用该文件填充 API 密钥和秘密密钥字段。请确保您使用的是 AWS Identity Access Management (IAM) 凭据文件。
- 该区域可以是可用区或本地区域。
如何使用 PowerShell 创建连接
- 打开 PowerShell 命令行窗口。
- Run
asnp citrix*to load the Citrix-specific PowerShell modules. -
运行以下命令。以下是一个示例:
$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 虚拟私有云 (VPC) 的名称,则 Citrix Cloud™ 中现有的托管单元将中断。当托管单元中断时,您无法创建目录或向现有目录添加计算机。要解决此问题,请将 AWS VPC 的名称改回原始名称。
编辑连接设置
您可以编辑现有主机连接以:
- (#edit-options-to-provide-iam-permissions) [修改为 Citrix 提供 IAM 权限以管理资源的选项]
- (#modify-the-maximum-number-of-simultaneous-actions) [修改每个托管连接的最大同时操作数(或并发计算机数)]
- 修改范围。
- 使用 PowerShell 命令配置每个弹性网络接口 (ENI) 允许的最大安全组数量(#configure-security-groups-per-network-interface)
编辑选项以提供 IAM 权限
- Right-click an existing Amazon WorkSpaces Core connection.
- 在“连接属性”页面上,单击“编辑设置”。
- 选择其中一个选项,为 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*以加载 思杰 专用 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*以加载 思杰 专用的 PowerShell 模块。 - 运行
cd xdhyp:\Connections\。 - 运行
dir以列出连接。 -
运行以下 PowerShell 命令以配置每个网络接口的安全组:
Set-HypHypervisorConnectionMetadata -HypervisorConnectionName aws -Name "Citrix_MachineManagement_Options" -Value " AwsMaxENISecurityGroupLimit=<number>" <!--NeedCopy-->注意:
如果未为
AwsMaxENISecurityGroupLimit设置值,则它将采用默认值 5。
服务终结点 URL
标准区域服务终结点 URL
当您使用 MCS 时,将添加一个新的 Amazon WorkSpaces Core Managed Instances 连接,其中包含 API 密钥和 API 秘密。利用此信息以及经过身份验证的帐户,MCS 使用 AWS EC2 和 Amazon WorkSpaces Core Managed Instances API 调用查询 AWS 以获取支持的区域和可用区。查询是使用工作区实例服务终结点 URL https://workspaces-instances.us-east-1.api.aws/ 和 EC2 服务终结点 https:/ec2.us-east-1.api.aws/ 进行的。
注意:
所需的 AWS 权限
本节包含 AWS 权限的完整列表。请使用本节中提供的完整权限集,以确保功能正常运行。
注意:
仅当 Citrix 使用 IAM 角色管理资源时,才需要
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": "*"
}
]
}
<!--NeedCopy-->
注意:
- 仅当在目录创建期间必须为准备虚拟机创建隔离安全组时,才需要与 SecurityGroups 相关的 EC2 部分。完成此操作后,不再需要这些权限。
直接磁盘上传和下载
必须将以下权限添加到策略中:
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-->
注意:
权限可以通过包含资源和条件块来限制为特定的密钥,具体由用户决定。例如,带条件的 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 密钥管理服务官方文档。
基于 IAM 角色的身份验证
添加以下权限以支持基于角色的身份验证。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": "arn:aws:iam::*:role/*"
}
]
}
<!--NeedCopy-->
最小 IAM 权限策略
以下 JSON 可用于所有当前支持的功能。您可以使用此策略创建主机连接、创建、更新或删除 VM,以及执行电源管理。 该策略可以应用于用户,如 定义 IAM 权限 部分所述,或者您也可以在配置主机连接时通过选择使用 IAM 角色来使用基于角色的身份验证。
重要:
要使用用于 Citrix 管理资源的 IAM 角色,请在设置 Delivery Controller 时,首先在 Delivery Controller 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": "*"
}
]
}
<!--NeedCopy-->
注意:
- 仅当在目录创建期间必须为准备虚拟机创建隔离安全组时,才需要与 SecurityGroups 相关的 EC2 部分。完成此操作后,便不再需要这些权限。
- 仅当使用 EBS 卷加密时才需要 KMS 部分。
- 仅当使用用于 Citrix 管理资源的 IAM 角色时,才需要
iam:PassRole权限部分。- 可以根据您的要求和环境添加特定的资源级权限,而不是完全访问权限。有关详细信息,请参阅 AWS 文档 揭秘 EC2 资源级权限 和 AWS 资源访问管理。
- 仅当您使用卷工作器方法时,才使用
ec2:CreateNetworkInterface和ec2:DeleteNetworkInterface权限。
后续步骤
- 有关创建准备好的映像,请参阅 为 Amazon WorkSpaces Core 托管实例创建准备好的映像
更多信息
- 创建和管理连接与资源
- AWS 虚拟化环境
- For Amazon WorkSpaces Core GitHub PowerShell examples, see citrix-mcs-sdk-samples-Amazon WorkSpaces Core.