Citrix Virtual Apps and Desktops 7 2203 LTSR

AWS 云环境

本文将指导您如何设置 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 控制面板中,选择 创建 VPC
  3. 选择 VPC 和更多
  4. 在 NAT 网关 ($) 下,选择 在 1 个可用区中每个可用区 1 个
  5. 在 DNS 选项下,保持选中 启用 DNS 主机名
  6. 选择 创建 VPC。AWS 会创建公共和私有子网、Internet 网关、路由表和默认安全组。

任务 2:配置安全组

此任务为您的 VPC 创建并配置以下安全组:

  • 一个公共安全组,用于与您的公共子网中的实例关联。
  • 一个私有安全组,用于与您的私有子网中的实例关联。

以下是创建安全组的步骤:

  1. 在 VPC 控制面板中,选择 安全组
  2. 为公共安全组创建一个安全组。选择 创建安全组 并为该组输入名称标签和描述。在 VPC 中,选择您之前创建的 VPC。选择 是,创建

如何配置公共安全组

  1. 从安全组列表中,选择公共安全组。

  2. 选择“入站规则”选项卡并选择“编辑”以创建以下规则:

    类型
    所有流量 请选择私有安全组。
    所有流量 请选择公共安全组。
    互联网控制消息协议 0.0.0.0/0
    22 (SSH) 0.0.0.0/0
    80 (超文本传输协议) 0.0.0.0/0
    443 (超文本传输安全协议) 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
    互联网控制消息协议 0.0.0.0/0
  5. 完成后,选择 保存

对私有安全组进行配置

  1. 从安全组列表中,选择私有安全组。

  2. 如果您尚未从公共安全组设置流量,则必须设置 TCP 端口;选择 入站规则 选项卡,然后选择 编辑 以创建以下规则:

    类型
    所有流量 请选择私有安全组。
    所有流量 请选择公共安全组。
    互联网控制消息协议 请选择公共安全组。
    TCP 53 (DNS 域名系统) 请选择公共安全组。
    UDP 53 (域名系统) 请选择公共安全组。
    80 (超文本传输协议) 请选择公共安全组。
    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 (域名系统) 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. 选择 解密密码 以获取可读密码。AWS 将显示默认密码。
  15. 重复步骤 2 中的步骤,直到您创建了两个实例:

    • 公共子网中的一个堡垒主机实例
    • 您的私有子网中用作域控制器的一个实例。

任务 4:创建 DHCP 选项集

  1. 在 VPC 控制面板中,选择 DHCP 选项集

  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 [EC2] 专用主机是具有 [EC2] 实例容量的物理服务器,该容量完全专用,允许您使用现有的按插槽或按 VM 软件许可证。

专用主机具有基于实例类型的预设利用率。例如,单个分配的 C4 Large 实例类型的专用主机仅限于运行 16 个实例。有关详细信息,请参阅 AWS 站点

预配到 AWS 主机的要求包括:

  • 导入的 BYOL(自带许可证)映像 (AMI)。使用专用主机,可以使用和管理现有许可证。
  • 已分配的专用主机,其利用率必须足以满足预配请求。
  • 启用 自动放置

To provision to a dedicated host in AWS using PowerShell, use the New-ProvScheme cmdlet with the parameter TenancyType set to Host.

有关详细信息,请参阅 Citrix 开发者文档

AWS 实例属性捕获

在 AWS 中使用 Machine Creation Services (MCS) 创建目录以预配计算机时,您需要选择一个 AMI 来表示该目录的主/黄金映像。MCS 会从该 AMI 使用磁盘快照。在以前的版本中,如果您希望在计算机上设置角色或标签,则需要使用 AWS 控制台单独进行设置。此功能默认启用。

提示:

要使用 AWS 实例属性捕获,您必须有一个与 AMI 关联的 VM。

为了改进此过程,MCS 会读取从中获取 AMI 的实例的属性,并将计算机的身份和访问管理 (IAM) 角色和标签应用于为给定目录预配的计算机。使用此可选功能时,目录创建过程会查找选定的 AMI 源实例,读取一组有限的属性。然后,这些属性存储在 AWS 启动模板中,该模板用于为该目录预配计算机。目录中的任何计算机都将继承捕获的实例属性。

捕获的属性包括:

  • IAM 角色 – 应用于预配的实例。
  • 标签 - 应用于预配的实例、其磁盘和 NIC。这些标签应用于瞬态 Citrix® 资源,包括:S3 存储桶和对象、卷和工作程序资源以及 AMI、快照和启动模板。

提示:

瞬态 Citrix 资源的标记是可选的,可以使用自定义属性 AwsOperationalResourcesTagging 进行配置。

捕获 AWS 实例属性

您可以通过在为 AWS 托管连接创建预配方案时指定自定义属性 AwsCaptureInstanceProperties 来使用此功能:

New-ProvScheme -CustomProperties “AwsCaptureInstanceProperties,true” …<standard provscheme parameters

有关更多信息,请参阅 Citrix 开发者文档

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

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

AWS 操作资源标记

Amazon Machine Image (AMI) 表示一种虚拟设备类型,用于在 Amazon 云环境(通常称为 EC2)中创建虚拟机。您可以使用 AMI 部署使用 EC2 环境的服务。当您使用 MCS 为 AWS 创建目录以预配计算机时,您选择 AMI 作为该目录的黄金映像。

重要:

若要使用操作资源标记,则需要通过捕获实例属性和启动模板来创建目录。

要创建 AWS 目录,您必须首先为您希望作为黄金映像的实例创建 AMI。MCS 从该实例读取标签并将其合并到启动模板中。然后,启动模板标签将应用于在您的 AWS 环境中创建的所有 Citrix 资源,包括:

  • 虚拟机器
  • VM 磁盘
  • VM 网络接口
  • S3 存储桶
  • S3 对象
  • 启动模板
  • AMI

对操作资源进行标记

要使用 PowerShell 标记资源:

  1. Open a PowerShell window from the DDC host.
  2. 运行命令 asnp citrix 以加载 Citrix 特定的 PowerShell 模块。

要为预配的 VM 标记资源,请使用新的自定义属性 AwsOperationalResourcesTagging。此属性的语法为:

New-ProvScheme -CustomProperties “AwsCaptureInstanceProperties,true; AwsOperationalResourcesTagging,true” …<standard provscheme parameters>

定义 IAM 权限

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

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

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

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

重要提示:

使用上面示例中提供的策略文本,列出 Citrix DaaS 在 AWS 账户中执行操作时所使用的操作,而无需将这些操作限制到特定资源。Citrix 建议您将此示例用于测试目的。对于生产环境,您可能需要对资源添加进一步的限制。

添加 IAM 权限

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

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

身份和访问管理 (IAM)

Add Permissions to(添加权限到)屏幕中,授予权限:

授予 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"
            ],
            "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: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": "*"
        }
    ]
}
<!--NeedCopy-->

注意:

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

直接磁盘上传和下载

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

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

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

重要提示:

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

已创建卷的 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,请首先在设置云连接器时,在云连接器 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/*"
        }
    ]
}
<!--NeedCopy-->

注意:

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

更多信息