AWS 云环境

Last published : Nov 13, 2026
本文将引导您设置 AWS 账户作为可与 Citrix Virtual Apps and Desktops 配合使用的资源位置。该资源位置包含一组基本组件,非常适合概念验证或其他不需要资源分散在多个可用区中的部署。完成这些任务后,您可以安装 VDA、预配计算机、创建计算机目录和创建交付组。
完成本文中的任务后,您的资源位置将包含以下组件:
  • 一个虚拟私有云 (VPC),其中包含单个可用区内的公共子网和私有子网。
  • 一个实例,在 VPC 的私有子网中运行,既作为 Active Directory 域控制器又作为 DNS 服务器。
  • 在 VPC 的公共子网中充当堡垒主机的实例。此实例用于启动到私有子网中实例的 RDP 连接,以进行管理。完成资源位置设置后,您可以关闭此实例,使其不再易于访问。当您必须管理私有子网中的其他实例(例如 VDA 实例)时,可以重新启动堡垒主机实例。

限制

从 Citrix Virtual Apps and Desktops 2203 LTSR 及更高版本开始,MCS AWS 插件进行 DescribeInstanceTypes AWS API 调用,如果成功,则 MCS 使用从 API 响应创建的清单名称。
因此,当您从 CVAD 1912 升级到 2203 或更高版本时,请禁用 AWS 上的 DefineInstanceType 权限,然后使用 Set-ProvScheme 命令更新现有目录以匹配 AWS 命名方案。然后,在目录更新完成且服务产品与 AWS 命名方案匹配后,重新添加 DescribeInstanceType 权限。

任务概述

设置具有公共和私有子网的虚拟私有云 (VPC)。 完成此任务后,AWS 会在公共子网中部署一个带有弹性 IP 地址的 NAT 网关。此操作使私有子网中的实例能够访问 Internet。公共子网中的实例可访问入站公共流量,而私有子网中的实例则不能。
配置安全组。安全组充当虚拟防火墙,控制 VPC 中实例的流量。您将规则添加到安全组中,以允许公共子网中的实例与私有子网中的实例通信。您还将这些安全组与 VPC 中的每个实例关联。
创建 DHCP 选项集。对于 Amazon VPC,默认提供 DHCP 和 DNS 服务,这会影响您在 Active Directory 域控制器上配置 DNS 的方式。Amazon 的 DHCP 无法禁用,并且 Amazon 的 DNS 只能用于公共 DNS 解析,而不能用于 Active Directory 名称解析。要指定通过 DHCP 传递给实例的域和名称服务器,请创建 DHCP 选项集。该集会分配 Active Directory 域后缀并为 VPC 中的所有实例指定 DNS 服务器。为确保实例加入域时自动注册主机 (A) 和反向查找 (PTR) 记录,请为添加到私有子网的每个实例配置网络适配器属性。
将堡垒主机和域控制器添加到 VPC。通过堡垒主机,您可以登录到私有子网中的实例以设置域并将实例加入域。

任务 1:设置 VPC

  1. 在 AWS 管理控制台中,选择 VPC。
  2. 在 VPC 控制面板中,选择 Create VPC(创建 VPC)。
  3. 选择 VPC and more。
  4. 在 NAT 网关 ($) 下,选择 In 1 AZ 或 1 per AZ。
  5. 在 DNS 选项下,保持选中 Enable DNS hostnames。
  6. 选择 Create VPC。AWS 会创建公共和私有子网、Internet 网关、路由表和默认安全组。

任务 2:配置安全组

此任务为您的 VPC 创建并配置以下安全组:
  • 一个公共安全组,用于关联公共子网中的实例。
  • 一个私有安全组,用于关联私有子网中的实例。
要创建安全组:
  1. 在 VPC 控制面板中,选择 Security Groups。
  2. 为公共安全组创建一个安全组。选择 Create Security Group,然后输入该组的名称标签和描述。在 VPC 中,选择您之前创建的 VPC。选择 Yes, Create。

配置公共安全组

  1. 从安全组列表中,选择公共安全组。
  2. 选择“入站规则”选项卡并选择“编辑”以创建以下规则:
    类型 源
    所有流量 选择私有安全组。
    所有流量 选择公共安全组。
    ICMP 0.0.0.0/0
    22 (SSH) 0.0.0.0/0
    80 (HTTP) 0.0.0.0/0
    443 (HTTPS) 0.0.0.0/0
    1494 (ICA/HDX) 0.0.0.0/0
    2598 (会话可靠性) 0.0.0.0/0
    3389 (RDP) 0.0.0.0/0
  3. 完成后,选择保存。
  4. 选择“出站规则”选项卡并选择“编辑”以创建以下规则:
    类型 目标
    所有流量 选择私有安全组。
    所有流量 0.0.0.0/0
    ICMP 0.0.0.0/0
  5. 完成后,选择保存。

配置私有安全组

  1. 从安全组列表中,选择私有安全组。
  2. 如果您尚未设置来自公共安全组的流量,则必须设置 TCP 端口;选择“入站规则”选项卡并选择“编辑”以创建以下规则:
    类型 源
    所有流量 选择私有安全组。
    所有流量 选择公共安全组。
    ICMP 选择公共安全组。
    TCP 53 (DNS) 选择公共安全组。
    UDP 53 (DNS) 选择公共安全组。
    80 (HTTP) 选择公共安全组。
    TCP 135 选择公共安全组。
    TCP 389 选择公共安全组。
    UDP 389 选择公共安全组。
    443 (HTTPS) 选择公共安全组。
    TCP 1494 (ICA/HDX) 选择公共安全组。
    TCP 2598 (会话可靠性) 选择公共安全组。
    3389 (RDP) 选择公共安全组。
    TCP 49152–65535 选择公共安全组。
  3. 完成后,选择“保存”。
  4. 选择“出站规则”选项卡并选择“编辑”以创建以下规则:
    类型 目标
    所有流量 选择私有安全组。
    所有流量 0.0.0.0/0
    ICMP 0.0.0.0/0
    UDP 53 (DNS) 0.0.0.0/0
  5. 完成后,选择保存。

任务 3:启动实例

执行以下步骤以创建两个 EC2 实例并解密 Amazon 生成的默认管理员密码:
  1. 在 AWS 管理控制台中,选择 EC2。
  2. 在 EC2 控制面板中,选择 启动实例。
  3. 选择 Windows Server 计算机映像和实例类型。
  4. 在“配置实例详细信息”页面上,为实例输入名称并选择您之前设置的 VPC。
  5. 在 子网 中,为每个实例进行以下选择:
    • 堡垒主机:选择公共子网
    • 域控制器:选择私有子网
  6. 在 自动分配公有 IP 地址 中,为每个实例进行以下选择:
    • 堡垒主机:选择“启用”。
    • 域控制器:选择“使用默认设置”或“禁用”。
  7. 在 网络接口 中,输入您的私有子网 IP 范围内的主 IP 地址,供域控制器使用。
  8. 如有必要,在 添加存储 页面上,修改磁盘大小。
  9. 在 标记实例 页面上,为每个实例输入一个易记的名称。
  10. 在 配置安全组 页面上,选择 选择现有安全组,然后为每个实例进行以下选择:
    • 堡垒主机:选择公有安全组。
    • 域控制器:选择私有安全组。
  11. 查看您的选择,然后选择 启动。
  12. 创建新的密钥对或选择现有密钥对。如果您创建新的密钥对,请下载您的私钥 (.pem) 文件并将其保存在安全位置。在获取实例的默认管理员密码时,您必须提供您的私钥。
  13. 选择 启动实例。选择 查看实例 以显示您的实例列表。请等待新启动的实例通过所有状态检查后再访问它。
  14. 获取每个实例的默认管理员密码:
    1. 从实例列表中,选择实例,然后选择 连接。
    2. 转到 RDP 客户端 选项卡,选择 获取密码,并在出现提示时上传您的私钥 (.pem) 文件。
    3. 选择 Decrypt Password 以获取人类可读的密码。AWS 会显示默认密码。
  15. 重复步骤 2 中的步骤,直到您创建了两个实例:
    • 一个位于公共子网中的堡垒主机实例
    • 您的私有子网中的一个实例,用作域控制器。

任务 4:创建 DHCP 选项集

  1. 在 VPC 控制面板中,选择 DHCP Options Sets。
  2. 输入以下信息:
    • 名称标签:为该集输入一个易记的名称。
    • 域名:输入配置域控制器实例时使用的完全限定域名。
    • 域名服务器:输入分配给域控制器实例的私有 IP 地址和字符串 AmazonProvidedDNS,用逗号分隔。
    • NTP 服务器:将此字段留空。
    • NetBIOS 名称服务器:输入域控制器实例的私有 IP 地址。
    • NetBIOS 节点类型:输入 2。
  3. 选择 是,创建。
  4. 将新集与您的 VPC 关联:
    1. 在 VPC 控制面板中,选择 您的 VPC,然后选择您之前设置的 VPC。
    2. 选择 操作 > 编辑 DHCP 选项集。
    3. 出现提示时,选择您创建的新集,然后选择 保存。

任务 5:配置实例

  1. 使用 RDP 客户端连接到堡垒主机实例的公共 IP 地址。出现提示时,输入管理员帐户的凭据。
  2. 从堡垒主机实例启动远程桌面连接,并连接到您要配置的实例的私有 IP 地址。出现提示时,输入实例的管理员凭据。
  3. 对于私有子网中的所有实例,配置 DNS 设置:
    1. 选择 开始 > 控制面板 > 网络和 Internet > 网络和共享中心 > 更改适配器设置。双击显示的网络连接。
    2. 选择 属性 > Internet 协议版本 4 (TCP/IPv4) > 属性。
    3. 选择 高级 > DNS。确保以下设置已启用,然后选择 确定:
      • 在 DNS 中注册此连接的地址
      • 在 DNS 注册中使用此连接的 DNS 后缀
  4. 要配置域控制器:
    1. 使用服务器管理器,添加具有所有默认功能的 Active Directory 域服务角色。
    2. 将实例提升为域控制器。在提升过程中,启用 DNS 并使用创建 DHCP 选项集时指定的域名。出现提示时,重新启动实例。

创建连接

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

AWS 租用

AWS 提供以下租用选项:共享租用(默认类型)和专用租用。共享租用意味着来自不同客户的多个 Amazon EC2 实例可能驻留在同一物理硬件上。专用租用意味着您的 EC2 实例仅在您部署的其他实例所在的硬件上运行。其他客户不使用同一块硬件。
您可以使用 MCS 通过 PowerShell 预配 AWS 专用主机。

使用 PowerShell 配置 AWS 专用主机租用

您可以通过 PowerShell 创建具有主机租用定义的计算机目录。
Amazon 专用主机是具有 实例容量的物理服务器,该容量完全专用,允许您使用现有的按插槽或按 VM 软件许可证。
专用主机具有基于实例类型的预设利用率。例如,单个分配的 C4 Large 实例类型的专用主机仅限于运行 16 个实例。有关详细信息,请参阅 AWS 站点。
预配到 AWS 主机的要求包括:
  • 导入的 BYOL(自带许可证)映像 (AMI)。对于专用主机,请使用和管理您现有的许可证。
  • 具有足够利用率的专用主机分配,以满足预配请求。
  • 启用 自动放置。
要使用 PowerShell 预配到 AWS 中的专用主机,请使用 New-ProvScheme cmdlet,并将 TenancyType 参数设置为 Host。
有关详细信息,请参阅 Citrix 开发人员文档。

AWS 实例属性捕获

在 AWS 中使用 Machine Creation Services (MCS) 创建目录以预配计算机时,您需要选择一个 AMI 来表示该目录的主/黄金映像。MCS 会从该 AMI 使用磁盘快照。在以前的版本中,如果您希望在计算机上设置角色或标签,则需要使用 AWS 控制台单独进行设置。此功能默认启用。
提示:
要使用 AWS 实例属性捕获,您必须有一个与 AMI 关联的 VM。
为了改进此过程,MCS 会读取从中获取 AMI 的实例的属性,并将该计算机的 Identity Access Management (IAM) 角色和标签应用于为给定目录预配的计算机。使用此可选功能时,目录创建过程会查找选定的 AMI 源实例,读取一组有限的属性。然后,这些属性存储在 AWS 启动模板中,该模板用于为该目录预配计算机。目录中的任何计算机都将继承捕获的实例属性。
捕获的属性包括:
  • IAM 角色 – 应用于预配的实例。
  • 标签 - 应用于预配的实例、其磁盘和 NIC。这些标签应用于瞬态 Citrix® 资源,包括:S3 存储桶和对象、卷和辅助资源,以及 AMI、快照和启动模板。
提示:
瞬态 Citrix 资源的标记是可选的,可以使用自定义属性 AwsOperationalResourcesTagging 进行配置。

捕获 AWS 实例属性

您可以通过在为 AWS 托管连接创建预配方案时指定自定义属性 AwsCaptureInstanceProperties 来使用此功能:
New-ProvScheme -CustomProperties “AwsCaptureInstanceProperties,true” …<standard provscheme parameters
有关详细信息,请参阅 Citrix 开发人员文档。

应用 AWS 实例属性并标记操作资源

在 AWS 中使用 MCS 创建目录以预配计算机时,您可以控制是否将 IAM 角色和标签属性应用于这些计算机。您还可以控制是否将计算机标签应用于操作资源。

AWS 操作资源标记

Amazon Machine Image (AMI) 表示一种虚拟设备类型,用于在 Amazon 云环境(通常称为 EC2)中创建虚拟机。您可以使用 AMI 部署使用 EC2 环境的服务。当您创建目录以使用 MCS for AWS 预配计算机时,您选择 AMI 作为该目录的黄金映像。
重要提示:
要使用操作资源标记,需要通过捕获实例属性和启动模板来创建目录。
要创建 AWS 目录,您必须首先为您希望作为黄金映像的实例创建 AMI。MCS 从该实例读取标签并将其合并到启动模板中。然后,启动模板标签将应用于在您的 AWS 环境中创建的所有 Citrix 资源,包括:
  • 虚拟机
  • VM 磁盘
  • VM 网络接口
  • S3 存储桶
  • S3 对象
  • 启动模板
  • AMI

标记操作资源

要使用 PowerShell 标记资源,请执行以下操作:
  1. 从 DDC 主机打开 PowerShell 窗口。
  2. 运行命令 asnp citrix 以加载 Citrix 特定的 PowerShell 模块。
要为预配的 VM 标记资源,请使用新的自定义属性 AwsOperationalResourcesTagging。此属性的语法为:
New-ProvScheme -CustomProperties “AwsCaptureInstanceProperties,true; AwsOperationalResourcesTagging,true” …<standard provscheme parameters>

定义 IAM 权限

使用本节中的信息定义 Citrix DaaS 在 AWS 上的 IAM 权限。Amazon 的 IAM 服务允许拥有多个用户的账户,这些用户可以进一步组织成组。这些用户可以拥有不同的权限来控制其执行与账户相关的操作的能力。有关 IAM 权限的更多信息,请参阅 IAM JSON policy reference。
要将 IAM 权限策略应用于新的用户组:
  1. 登录 AWS 管理控制台,然后从下拉列表中选择 IAM service。
  2. 选择 创建新的用户组。
  3. 为新的用户组键入名称,然后选择 继续。
  4. 在“权限”页面上,选择“自定义策略”。选择“选择”。
  5. 为“权限策略”键入名称。
  6. 在“策略文档”部分中,输入相关权限。
输入策略信息后,选择Continue以完成用户组。组中的用户被授予权限,只能执行 Citrix DaaS 所需的操作。
重要提示:
使用上面示例中提供的策略文本列出 Citrix DaaS 用于在 AWS 账户中执行操作而无需将这些操作限制到特定资源的那些操作。Citrix 建议您将此示例用于测试目的。对于生产环境,您可能选择对资源添加进一步的限制。

添加 IAM 权限

在 AWS Management Console 的“IAM”部分中设置权限:
  1. 在“摘要”面板中,选择“权限”选项卡。
  2. 选择“添加权限”。
身份和访问管理 (IAM)
在 添加权限到 屏幕中,授予权限:
授予 IAM 策略权限
在 JSON 选项卡中,使用以下内容作为示例:
JSON 示例
提示:
所提及的 JSON 示例可能不包含您的环境所需的所有权限。有关详细信息,请参阅 如何在 AWS 上运行 Citrix Virtual Apps and Desktops 时定义身份和访问管理权限。

关于 AWS 权限

本节包含 AWS 权限的完整列表。
注意:
iam:PassRole 权限仅在 role_based_auth 中需要。

创建主机连接

使用从 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": "*"
        }
    ]
}

虚拟机电源管理

虚拟机实例已开机或关机。
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "ec2:AttachVolume",
                "ec2:CreateVolume",
                "ec2:DeleteVolume",
                "ec2:DescribeInstances",
                "ec2:DescribeVolumes",
                "ec2:DetachVolume",
                "ec2:StartInstances",
                "ec2:StopInstances"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}

创建、更新或删除虚拟机

创建、更新或删除计算机目录,其中 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:DescribeLaunchTemplates",
                "ec2:DescribeLaunchTemplateVersions",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribeRegions",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSnapshots",
                "ec2:DescribeSubnets",
                "ec2:DescribeTags",
                "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": "*"
        }
    ]
}
注意:
仅当在目录创建期间必须为准备 VM 创建隔离安全组时,才需要与 SecurityGroups 相关的 EC2 部分。完成此操作后,不再需要这些权限。

直接磁盘上传和下载

直接磁盘上传消除了计算机目录预配对卷工作程序的要求,而是使用 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": "*"
        }
    ]
}
注意:
用户可以自行决定通过包含资源和条件块来将权限限制为特定密钥。例如,带条件的 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
                }
            }
        }
    ]
}
以下密钥策略语句是 KMS 密钥的整个默认密钥策略,它允许帐户使用 IAM 策略委托 KMS 密钥上的所有操作 (kms:*) 权限。
{
"Sid": "Enable IAM policies",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:root"
},
"Action": "kms:",
"Resource": ""
}
有关详细信息,请参阅 AWS Key Management Service 官方文档。

基于 IAM 角色的身份验证

添加以下权限以支持基于角色的身份验证。
{
     "Version": "2012-10-17",
     "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::*:role/*"
        }
    ]
}

最小 IAM 权限策略

以下 JSON 可用于所有当前支持的功能。您可以使用此策略创建主机连接、创建、更新或删除 VM 以及执行电源管理。 该策略可以按照 定义 IAM 权限 部分中的说明应用于用户,或者您也可以使用 role_based_auth 安全密钥和秘密密钥进行基于角色的身份验证。
重要提示:
要使用 role_based_auth,请在设置云连接器时,首先在云连接器 EC2 实例上配置所需的 IAM 角色。使用 Citrix 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:DescribeLaunchTemplates",
                "ec2:DescribeLaunchTemplateVersions",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribeRegions",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSnapshots",
                "ec2:DescribeSubnets",
                "ec2:DescribeTags",
                "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:ReEncryptTo",
                 "kms:ReEncryptFrom"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::*:role/*"
        }
    ]
}
注意:
  • 仅当在目录创建期间必须为准备 VM 创建隔离安全组时,才需要与 SecurityGroups 相关的 EC2 部分。完成此操作后,不再需要这些权限。
  • 仅在使用 EBS 卷加密时才需要 KMS 部分。
  • iam:PassRole 权限部分仅在 role_based_auth 中需要。
  • 可以根据您的要求和环境添加特定的资源级权限,而不是完全访问权限。有关更多详细信息,请参阅 AWS 文档 揭秘 EC2 资源级权限 和 AWS 资源访问管理。

更多信息