连接到 Amazon WorkSpaces Core 托管实例
创建和管理连接及资源介绍了用于创建连接的向导。以下信息涵盖了 Amazon WorkSpaces Core 托管实例的特定详细信息。
-
先决条件
- 在创建到 Amazon WorkSpaces Core 托管实例的连接之前,请执行以下操作:
定义 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 service(IAM 服务)。
- 选择 Create a New Group of Users(创建新用户组)。
- 键入新用户组的名称,然后选择 Continue(继续)。
- 在 Permissions(权限)页面上,选择 Custom Policy(自定义策略)。
- 键入 Permissions policy(权限策略)的名称。
- 在 Policy Document(策略文档)部分中,输入相关权限。
输入策略信息后,选择 Continue(继续)以完成将 IAM 权限策略应用于用户组。组中的用户仅被授予执行 Citrix Virtual Apps and Desktops 所需操作的权限。
重要:
使用本文示例中提供的策略文本来列出 Citrix Virtual Apps and Desktops 在 AWS 账户中执行操作时所使用的操作,而无需将这些操作限制到特定资源。Citrix 建议您将此示例用于测试目的。对于生产环境,您可能需要对资源添加进一步的限制。
添加 IAM 权限
在 AWS 管理控制台的 IAM 部分中添加权限:
- 在 Summary(摘要)面板中,选择 Permissions(权限)选项卡。
-
- 选择 Add permissions(添加权限)。
-
- 在 Add Permissions to(添加权限到)屏幕中,授予权限。
- 在 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 创建连接
- 导航到 Hosting > Add Connection and Resources(托管 > 添加连接和资源)页面。
-
在 Connection(连接)页面上,按照以下步骤配置连接:
- 选择 Create a new connection(创建新连接)。
- 在 Zone(区域)中,选择您为 AWS 环境设置的资源位置。
- 选择 Amazon WorkSpaces Core 作为连接类型。
-
选择 Use IAM user access key(使用 IAM 用户访问密钥)或 Use IAM role(使用 IAM 角色)。
对于 IAM 用户访问密钥,请提供具有适当 IAM 权限策略的 IAM 用户的 API key(API 密钥)和 Secret key(秘密密钥),以便 Citrix 管理您的 AWS 账户中的资源。
对于 IAM 角色,请确保您已为 Delivery Controller 实例分配 IAM 角色,该角色具有适当的 IAM 权限策略,以便 Citrix 管理您的 AWS 账户中的资源。有关详细信息,请参阅基于角色的身份验证指南。
- 输入连接名称,然后单击 Next(下一步)。
- 在 Virtual Machine Location(虚拟机位置)页面上,指定必须预置 VM 的位置。选择用于创建新 VM 的云区域、VPC 和可用区。
-
在 Network(网络)页面上:
- 为您之前在可用区或本地区域中选择的资源输入名称。
- 选择您在上一菜单中配置的 VPC 中的一个或多个子网。
- 单击其余页面,直到 Summary(摘要)页面。
- 单击 Finish(完成)以创建到 Amazon WorkSpaces Core 托管实例的主机连接。
重要注意事项
使用 Web Studio 创建连接时:
- 定义适当的 IAM 权限,以便 Citrix 管理您的 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 窗口。
- 运行
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
```
注意:
要使用基于角色的身份验证创建连接,请将 apiKey 和 apiSecret 指定为
role_based_auth。
限制
如果您在 AWS 控制台中更改 AWS 虚拟私有云 (VPC) 的名称,则 Citrix Cloud™ 中现有的托管单元将中断。当托管单元中断时,您无法创建目录或向现有目录添加计算机。要解决此问题,请将 AWS VPC 的名称改回原始名称。
编辑连接
您可以编辑现有主机连接以:
编辑提供 IAM 权限的选项
- 右键单击现有 Amazon WorkSpaces Core 连接。
- 在连接属性页面上,单击编辑设置。
- 选择一个选项,为 Citrix 提供 IAM 权限以管理资源。输入所需详细信息,然后单击保存。
修改最大并发操作数
在 Studio 中为 Amazon WorkSpaces Core 托管实例创建主机连接时,将显示以下默认值:
| 选项 | 绝对值 | 百分比 |
|---|---|---|
| 并发操作(所有类型) | 125 | 100 |
| 每分钟最大新建操作数 | 150 | 不适用 |
| 最大并发预配操作数 | 150 | 不适用 |
MCS 默认支持 150 个最大并发预配操作。
您可以通过访问编辑连接屏幕上的 Citrix Studio 高级部分来配置这些值:
或者,您可以使用 Remote PowerShell SDK 设置最大并发操作数,以根据您的环境实现最佳设置。
使用 PowerShell 自定义属性 MaximumConcurrentProvisioningOperations 来指定最大并发 AWS 预配操作数。
配置前:
- 确保您已安装适用于 Cloud 的 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以验证更新后的自定义属性字符串。
配置每个网络接口的安全组
编辑主机连接时,您现在可以使用 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。
服务端点 URL
标准区域服务端点 URL
当您使用 MCS 时,将添加一个新的 Amazon WorkSpaces Core 托管实例连接,其中包含 API 密钥和 API 密码。利用此信息以及经过身份验证的帐户,MCS 使用 AWS EC2 和 Amazon WorkSpaces Core 托管实例 API 调用查询 AWS 以获取支持的区域和可用区。查询是使用 Workspace Instances 服务端点 URL https://workspaces-instances.us-east-1.api.aws/ 和 EC2 服务端点 https:/ec2.us-east-1.api.aws/ 进行的。
注意:
所需的 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-->
- {
- "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 Key Management Service 官方文档。
基于 IAM 角色的身份验证
添加以下权限以支持基于角色的身份验证。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": "arn:aws:iam::*:role/*"
}
]
}
<!--NeedCopy-->
最小 IAM 权限策略
以下 JSON 可用于所有当前支持的功能。您可以使用此策略创建主机连接、创建、更新或删除虚拟机以及执行电源管理。 该策略可以应用于用户,如定义 IAM 权限部分所述,或者您也可以在配置主机连接时通过选择使用 IAM 角色来使用基于角色的身份验证。
重要:
要使用 IAM 角色让 Citrix 管理资源,请首先在设置 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 部分。
- 仅当使用 IAM 角色让 Citrix 管理资源时,才需要
iam:PassRole权限部分。- 可以根据您的要求和环境添加特定的资源级权限,而不是完全访问权限。有关详细信息,请参阅 AWS 文档 Demystifying EC2 Resource-Level Permissions 和 Access management for AWS resources。
- 仅当您使用卷工作程序方法时,才使用
ec2:CreateNetworkInterface和ec2:DeleteNetworkInterface权限。
后续步骤
- 有关创建准备好的映像,请参阅为 Amazon WorkSpaces Core 托管实例创建准备好的映像
更多信息
- 创建和管理连接和资源
- AWS 虚拟化环境
- 有关 Amazon WorkSpaces Core GitHub PowerShell 示例,请参阅 citrix-mcs-sdk-samples-Amazon WorkSpaces Core。