Citrix Virtual Apps and Desktops 7 2402 LTSR

连接到 AWS

创建和管理连接和资源 介绍了用于创建连接的向导。以下信息涵盖了 AWS 云环境特有的详细信息。

注意:

在创建到 AWS 的连接之前,您需要首先将 AWS 帐户设置为资源位置。请参阅 AWS 云环境

创建一条连接

从 Web Studio 创建连接时:

  • 您必须提供 API 密钥和秘密密钥值。您可以从 AWS 导出包含这些值的密钥文件,然后将其导入。您还必须提供区域、可用区、VPC 名称、子网地址、域名、安全组名称和凭据。
  • 根 AWS 帐户的凭据文件(从 AWS 控制台检索)的格式与为标准 AWS 用户下载的凭据文件不同。因此,Citrix Virtual Apps and Desktops™ 管理无法使用该文件填充 API 密钥和秘密密钥字段。请确保您使用的是 AWS Identity Access Management (IAM) 凭据文件。

注意:

创建连接后,更新 API 密钥和秘密密钥的尝试可能会失败。要解决此问题,请检查您的代理服务器或防火墙限制,并确保以下地址可访问:https://*.amazonaws.com

主机连接的默认值

在 AWS 云环境中创建主机连接时,将显示以下默认值:

选项 绝对值 百分比
并发操作(所有类型) 125 100
每分钟最大新操作数 125  

MCS 默认支持 100 个最大并发预配操作。

服务终结点 URL

标准区域服务终结点 URL

使用 MCS 时,将添加一个新的 AWS 连接,其中包含 API 密钥和 API 密码。MCS 使用此信息以及经过身份验证的帐户,通过 AWS DescribeRegions EC2 API 调用查询 AWS 支持的区域。查询是使用通用 EC2 服务终结点 URL https://ec2.amazonaws.com/ 进行的。使用 MCS 从支持的区域列表中选择连接的区域。系统会自动为该区域选择首选的 AWS 服务终结点 URL。但是,创建服务终结点 URL 后,您将无法再设置或修改该 URL。

定义 IAM 权限

使用本节中的信息定义适用于 AWS 上的 Citrix Virtual Apps and Desktops 的 IAM 权限。Amazon 的 IAM 服务允许帐户拥有多个用户,这些用户可以进一步组织成组。这些用户可以拥有不同的权限来控制其执行与帐户相关的操作的能力。有关 IAM 权限的更多信息,请参阅IAM JSON 策略参考

要将 IAM 权限策略应用于新的用户组:

  1. 登录 AWS 管理控制台,然后从下拉列表中选择 IAM 服务
  2. 选择 创建新的用户组
  3. 键入新用户组的名称,然后选择 继续
  4. 权限页面上,选择自定义策略。选择选择
  5. 权限策略键入名称。
  6. 策略文档部分中,输入相关权限。

输入策略信息后,选择继续以完成用户组的创建。组中的用户被授予仅执行 Citrix Virtual Apps and Desktops 所需操作的权限。

重要:

使用前面示例中提供的策略文本,列出 Citrix Virtual Apps and Desktops 用于在 AWS 账户中执行操作的动作,而不将这些操作限制到特定资源。Citrix 建议您将此示例用于测试目的。对于生产环境,您可能选择对资源添加进一步的限制。

设置 IAM 权限

在 AWS 管理控制台的 IAM 部分中设置权限:

  1. 摘要面板中,选择权限选项卡。
  2. 选择添加权限

身份和访问管理 (IAM)

添加权限到屏幕中,授予权限:

授予 IAM 策略的权限

JSON选项卡中,使用以下内容作为示例:

JSON 格式示例

提示:

所提及的 JSON 示例可能不包含您环境所需的所有权限。有关详细信息,请参阅 如何在 AWS 上运行 Citrix Virtual Apps and Desktops 时定义身份和访问管理权限

所需的 AWS 权限

本节包含 AWS 权限的完整列表。

注意:

只有在启用 role_based_auth 身份验证机制时,才需要 iam:PassRole 权限。

如何创建主机连接

使用 AWS 中的信息添加新的主机连接。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeImages",
                "ec2:DescribeInstances",
                "ec2:DescribeInstanceTypes",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSubnets",
                "ec2:DescribeVpcs",
                "ec2:DescribeRegions",
                "ec2:DescribeSnapshots",
                "ec2:DescribeLaunchTemplates"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
<!--NeedCopy-->

VM 的电源管理

虚拟机实例已开机或关机。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "ec2:AttachVolume",
                "ec2:CreateVolume",
                "ec2:DeleteVolume",
                "ec2:DescribeInstances",
                "ec2:DescribeVolumes",
                "ec2:DetachVolume",
                "ec2:StartInstances",
                "ec2:StopInstances",
                "ec2:DescribeInstanceStatus"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
<!--NeedCopy-->

创建、更新或删除 VM

创建、更新或删除虚拟机目录,其中 VM 作为 AWS 实例进行预配。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "ec2:AttachVolume",
                "ec2:AssociateIamInstanceProfile",
                "ec2:AuthorizeSecurityGroupEgress",
                "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: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:RunInstances",
                "ec2:StartInstances",
                "ec2:StopInstances",
                "ec2:TerminateInstances"
            ],
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Action": [
                "ec2:AuthorizeSecurityGroupEgress",
                "ec2:AuthorizeSecurityGroupIngress",
                "ec2:CreateSecurityGroup",
                "ec2:DeleteSecurityGroup",
                "ec2:RevokeSecurityGroupEgress",
                "ec2:RevokeSecurityGroupIngress"
            ],
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Action": [
                "s3:CreateBucket",
                "s3:DeleteBucket",
                "s3:PutBucketAcl",
                "s3:PutBucketTagging",
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject",
                "s3:PutObjectTagging"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::citrix*"
        },
        {
            "Action": [
                "ebs:StartSnapshot",
                "ebs:GetSnapshotBlock",
                "ebs:PutSnapshotBlock",
                "ebs:CompleteSnapshot",
                "ebs:ListSnapshotBlocks",
                "ebs:ListChangedBlocks",
                "ec2:CreateSnapshot"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
<!--NeedCopy-->

注意:

与安全组相关的 EC2 部分仅在目录创建期间必须为准备 VM 创建隔离安全组时才需要。完成此操作后,不再需要这些权限。

直接磁盘上传和下载

直接磁盘上传消除了计算机目录预配对卷工作器的要求,而是使用 AWS 提供的公共 API。此功能降低了与额外存储帐户相关的成本以及维护卷工作器操作的复杂性。

注意:

对卷工作器的支持已弃用。

以下权限必须添加到策略中:

  • ebs:StartSnapshot
  • ebs:GetSnapshotBlock
  • ebs:PutSnapshotBlock
  • ebs:CompleteSnapshot
  • ebs:ListSnapshotBlocks
  • ebs:ListChangedBlocks
  • ec2:CreateSnapshot
  • ec2:DeleteSnapshot
  • ec2:DescribeLaunchTemplates

重要提示:

  • 您可以将 VM 添加到现有计算机目录,而无需任何卷工作器操作,例如卷工作器 AMI 和卷工作器 VM。
  • 如果您删除之前使用过卷工作程序的现有目录,则所有工件(包括与卷工作程序相关的工件)都将被删除。

EBS 对已创建卷的加密

如果 AMI 已加密,或者 EBS 配置为加密所有新卷,则 EBS 可以自动加密新创建的卷。但是,要实现此功能,IAM 策略中必须包含以下权限。

{
     "Version": "2012-10-17",
     "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                 "kms:CreateGrant",
                 "kms:Decrypt",
                 "kms:DescribeKey",
                 "kms:GenerateDataKeyWithoutPlainText",
                 "kms:ReEncryptTo",
                 "kms:ReEncryptFrom"
            ],
            "Resource": "*"
        }
    ]
}
<!--NeedCopy-->

注意:

用户可以自行决定通过包含资源和条件块将权限限制为特定密钥。例如,带条件的 KMS 权限

{
     "Version": "2012-10-17",
     "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                 "kms:CreateGrant",
                 "kms:Decrypt",
                 "kms:DescribeKey",
                 "kms:GenerateDataKeyWithoutPlainText",
                 "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 权限 部分所述,或者您也可以使用 role_based_auth 安全密钥和秘密密钥进行基于角色的身份验证。

重要提示:

要使用 role_based_auth,请首先在我们站点的所有 Delivery Controller 上配置所需的 IAM 角色。使用 Web Studio 添加托管连接,并为身份验证密钥和秘密提供 role_based_auth。具有这些设置的托管连接随后将使用基于角色的身份验证。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "ec2:AttachVolume",
                "ec2:AssociateIamInstanceProfile",
                "ec2:AuthorizeSecurityGroupEgress",
                "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:AuthorizeSecurityGroupEgress",
                "ec2:AuthorizeSecurityGroupIngress",
                "ec2:CreateSecurityGroup",
                "ec2:DeleteSecurityGroup",
                "ec2:RevokeSecurityGroupEgress",
                "ec2:RevokeSecurityGroupIngress"
            ],
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Action": [
                "s3:CreateBucket",
                "s3:DeleteBucket",
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:PutBucketAcl",
                "s3:PutObject",
                "s3:PutBucketTagging",
                "s3:PutObjectTagging"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::citrix*"
        },
        {
            "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/*"
        }
    ]
}
<!--NeedCopy-->

注意:

  • 仅当在目录创建期间必须为准备 VM 创建隔离安全组时,才需要与 SecurityGroups 相关的 EC2 部分。完成此操作后,这些权限就不再需要了。
  • KMS 部分仅在使用 EBS 卷加密时才需要。
  • iam:PassRole 权限部分仅在 基于角色的身份验证 时才需要。
  • 可以根据您的要求和环境添加特定的资源级权限,而不是完全访问权限。有关更多详细信息,请参阅 AWS 文档 揭秘 EC2 资源级权限AWS 资源访问管理

后续步骤

更多信息

连接到 AWS