Citrix DaaS

对接AWS

创建和管理连接描述创建连接的向导。以下信息涵盖特定于AWS云环境的详细信息。

注意:

在创建到AWS的连接之前,您需要首先完成将AWS帐户设置为资源位置的操作。看到AWS云环境

创建连接

当你从Full Configuration界面创建连接时:

  • 您必须提供API密钥和秘密密钥值。您可以从AWS导出包含这些值的密钥文件,然后导入它们。还需要提供地区、可用分区、VPC名称、子网地址、域名、安全组名称、凭据。
  • 根AWS帐户的凭证文件(从AWS控制台检索)的格式与为标准AWS用户下载的凭证文件的格式不同。因此,Citrix虚拟应用程序和桌面管理不能使用该文件来填充API密钥和密钥字段。确保您正在使用AWS身份访问管理(IAM)凭证文件。

注意:

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

主机连接默认值

在AWS云环境的“Full Configuration”界面中创建主机连接时,显示如下默认值:

选项 绝对 百分比
同时操作(所有类型) 125 One hundred.
每分钟最多的新动作 125
最大并发发放操作 One hundred.

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

您可以通过访问Citrix Studio来配置这些值先进的的部分编辑连接屏幕:

身份访问管理(IAM)

MCS默认支持100个最大并发操作。或者,您可以使用Remote PowerShell SDK为每个环境的最佳设置设置并发操作的最大数量。

使用PowerShell自定义属性,MaximumConcurrentProvisioningOperations,以指定AWS发放操作的最大并发数。

配置前:

  • 确保您已安装PowerShell SDK for Cloud。
  • 的默认值MaximumConcurrentProvisioningOperations是100。

执行以下步骤自定义MaximumConcurrentProvisioningOperations值:

  1. 打开一个PowerShell窗口。
  2. 运行asnp citrix *来加载citrix特有的PowerShell模块。
  3. 输入cd xdhyp: \ \的连接
  4. 输入dir列出连接。
  5. 更改或初始化自定义属性字符串:

    • 如果自定义属性字符串有值,请将自定义属性复制到记事本中。接下来,更改MaximumConcurrentProvisioningOperations属性设置为您的首选值。取值范围为1 ~ 1000。例如,

    • 如果Custom Properties字符串为空/null,则必须通过为模式和属性输入正确的语法来初始化字符串MaximumConcurrentProvisioningOperations财产。

  6. PowerShell窗口,从记事本粘贴修改的自定义属性,并为修改的自定义属性分配一个变量。如果您初始化了自定义属性,请在语法后面添加以下行:

    $customProperties = '< customProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">'

    这个字符串设置MaximumConcurrentProvisioningOperations属性为100。在自定义属性字符串中,必须设置MaximumConcurrentProvisioningOperations属性设置为与需要一致的值。

  7. 输入Get-XDAuthentication,提示您输入证书。
  8. 运行$cred = Get-Credential,它可能会提示您只输入密码(或名称和密码)。还可能提示您输入应用程序ID和关联的密钥。对于使用基于角色身份验证的连接,role_based_auth为“名称”和“密码”。否则,请输入AWS API ID和secret。
  9. 运行set-item -PSPath 'XDHyp:\Connections' -CustomProperties $customProperties -username $cred。username -Securepassword $ credit .password。你必须设置<连接名>到连接的名称。
  10. 输入dir来验证更新后的CustomProperties字符串。

服务端点URL

标准区域服务端点URL

使用MCS时,会添加一个带有API密钥和API秘密的新AWS连接。有了这些信息,再加上经过身份验证的帐户,MCS就可以使用AWS describereregions EC2 API调用向AWS查询受支持的区域。查询是使用通用的EC2服务端点URL进行的https://ec2.amazonaws.com/。使用MCS从支持的区域列表中选择连接的区域。将自动为区域选择首选AWS服务端点URL。但是,在创建了服务端点URL之后,就不能再设置或修改URL了。

非标准服务端点URL

在某些情况下,您可能不需要为连接自动选择AWS服务端点URL。对于这种情况,您可以使用Citrix Cloud SDK和PowerShell创建与非标准服务端点URL的连接。例如,使用服务端点URL创建连接https://ec2.cn-north-1.amazonaws.com.cn

  1. 设置AWS托管的云连接器,并确保它具有连接性。
  2. 运行以下PowerShell命令查看云连接器列表。

    PS C:\> asnp citrix。*PS C:\> Get-XDAuthentication PS C:\> Get-ConfigEdgeServer 
  3. 从新创建的云连接器中找到ZoneUid,并将其输入以下PowerShell命令。用相应的值替换斜体项。

    PS C:\> $hyp= New-Item -Path xdhyp:\Connections -ZoneUidZoneUid- name“我的新关系”-连接类型"AWS" -HypervisorAddress @("https://ec2.cn-north-1.amazonaws.com.cn") -UserName“APIkey”密码“API秘密”坚持PS C:\> New-BrokerHypervisorConnection -HypHypervisorConnectionUid $hyp。HypervisorConnectionUid

  4. 刷新完整配置>主机选项卡,以验证EC2连接是否已创建。
  5. 使用新连接添加资源位置。

定义IAM权限

使用本节的信息定义Citrix DaaS在AWS上的IAM权限。Amazon的IAM服务允许帐户拥有多个用户,这些用户可以进一步组织成组。这些用户可以拥有不同的权限,以控制他们执行与该帐户关联的操作的能力。有关IAM权限的详细信息,请参见IAM JSON策略引用

将IAM权限策略应用到新用户组。

  1. 登录到AWS管理控制台并选择我的服务从下拉列表中选择。
  2. 选择创建一个新的用户组
  3. 为新用户组键入一个名称,然后选择继续
  4. 权限页面,选择定制的政策然后选择
  5. 类型的名称权限政策
  6. 政策文件节,输入相关权限。

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

重要的是:

使用上面示例中提供的策略文本列出Citrix DaaS用于在AWS帐户中执行操作的操作,而不将这些操作限制为特定资源。Citrix建议您将该示例用于测试目的。对于生产环境,您可以选择对资源添加进一步的限制。

添加IAM权限

中设置权限部分:

  1. 总结面板,选择权限选项卡。
  2. 选择添加权限。

身份访问管理(IAM)

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

为IAM策略授予权限

示例如下JSON标签:

JSON的例子

提示:

上面提到的JSON示例可能不包括您环境的所有权限。看到如何定义在AWS上运行思杰虚拟应用和桌面的身份访问管理权限了解更多信息。

关于AWS权限

本节包含AWS权限的完整列表。使用本节中给出的完整权限集,以使功能正常工作。

注意:

我:PassRole权限只需要用于role_based_auth

创建主机连接

使用从AWS获得的信息添加新的主机连接。

{"Version": "2012-10-17", "Statement": [{"Action": ["ec2: descripbeavailabilityzones ", "ec2: descripbeimages ", "ec2: descripbeinstances ", "ec2: descripbeinstancetypes ", "ec2: descripbesecuritygroups ", "ec2: descripbesubnets ", "ec2: descripbevpc "], "Effect": "Allow", "Resource": "*"}]} 

虚拟机电源管理

机器实例上电或关闭。

{"Version": "2012-10-17", "Statement": [{"Action": ["ec2:AttachVolume", "ec2:CreateVolume", "ec2:DeleteVolume", "ec2: descripbeinstances ", "ec2: descripbevolumes ", "ec2:DetachVolume", "ec2:StartInstances", "ec2:StopInstances"], "Effect": "Allow", "Resource": "*"}]} 

创建、更新、删除虚拟机

使用作为AWS实例配置的vm创建、更新或删除机器目录。

{“版本”:“2012-10-17”,“声明”:[{“行动”:["ec2:AttachVolume", "ec2:AssociateIamInstanceProfile", "ec2:AuthorizeSecurityGroupEgress", "ec2:AuthorizeSecurityGroupIngress", "ec2:AuthorizeSecurityGroupIngress", "ec2: creatatelaunchtemplate ", "ec2:CreateTags", "ec2:CreateVolume", "ec2:DeleteVolume", "ec2:DescribeAccountAttributes", "ec2:DescribeAvailabilityZones", "ec2: describeiaminstanceprofileasassociations ", "ec2:DescribeImages", "ec2: describeinstanceinstances ", "ec2:DescribeInstanceTypes", "ec2:DescribeLaunchTemplates","ec2: descripbelaunchtemplateversions ", "ec2: descripbenetworkinterfaces ", "ec2: descripbereregions ", "ec2: descripbesecuritygroups ", "ec2: descripbesnapshots ", "ec2: descripbesubnets ", "ec2: descripbetags ", "ec2: descripbevolumes ", "ec2:DisassociateIamInstanceProfile", "ec2:DetachVolume", "ec2:DisassociateIamInstanceProfile", "ec2:RunInstances", "ec2:StartInstances", "ec2:StopInstances", "ec2:TerminateInstances"], "Effect": "Allow", "Resource": "*"}, {"Action":["ec2:AuthorizeSecurityGroupEgress", "ec2:AuthorizeSecurityGroupIngress", "ec2:CreateSecurityGroup", "ec2: deleetesecuritygroup ", "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": "*"}]} 

注意:

  • 只有在创建目录期间必须为准备虚拟机创建隔离安全组时,才需要与SecurityGroups相关的EC2部分。一旦完成,就不需要这些权限了。
  • 仅在使用卷工作方法时使用ec2:CreateNetworkInterface和ec2:DeleteNetworkInterface权限。

直接上传和下载磁盘

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

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

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

重要的是:

  • 您可以将一个新的VM添加到现有的机器目录中,而不需要任何卷辅助操作,例如卷辅助AMI和卷辅助VM。
  • 如果删除以前使用过卷辅助器的现有编目,则会删除所有工件,包括与卷辅助器相关的工件。

已创建卷的EBS加密

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

{"Version": "2012-10-17", "Statement": [{"Effect": "Allow", "Action": ["kms:CreateGrant", "kms:Decrypt", "kms: descripbekey ", "kms: generatedatakeywithout明文","kms:GenerateDataKey", "kms:ReEncryptTo", "kms:ReEncryptFrom"], "Resource": "*"}]} 

注意:

可以根据用户的判断,通过包含Resource和Condition块,将权限限制为特定的键。例如,有条件的KMS权限

{"Version": "2012-10-17", "Statement": [{"Effect": "Allow", "Action": ["kms:CreateGrant", "kms:Decrypt", "kms: descripbekey ", "kms: generatedatakeywithout明文","kms:GenerateDataKey", "kms:ReEncryptTo", "kms:ReEncryptFrom"], "Resource": ["arn:aws:kms:us-east- 2:23 346789012:key/abcd1234-a123-456d-a12b-a123b4cd56ef"], "Condition": {"Bool": {"kms:GrantIsForAWSResource": true}}}]} 

下面的密钥策略语句是KMS密钥的整个默认密钥策略,它允许帐户使用IAM策略来委派KMS密钥上所有操作(KMS:*)的权限。

{“Sid”:“让我政策”,“效果”:“允许”、“主要”:{“AWS”:“在攻击:AWS:我::111122223333:根”},“行动”:“公里:“,”资源 ": "" } 

有关更多信息,请参见AWS密钥管理服务官方文档

基于角色的IAM身份验证

添加以下权限以支持基于角色的身份验证。

{“版本”:“2012-10-17”,“声明”:[{“效应”:“允许”、“行动”:“我:PassRole”、“资源”:“在攻击:aws:我::*:角色 /*" } ] } 

最小IAM权限策略

下面的JSON可以用于所有当前支持的特性。您可以使用该策略创建主机连接,创建、更新、删除虚拟机,以及进行电源管理。可以将策略应用于用户,说明如下定义IAM权限节,也可以使用基于角色的身份验证role_based_auth安全密钥和秘密密钥。

重要的是:

使用role_based_auth在设置云连接器时,首先在云连接器ec2实例上配置所需的IAM角色。使用Citrix Studio,添加主机连接并为身份验证密钥和秘密提供role_based_auth。然后,具有这些设置的托管连接使用基于角色的身份验证。

{“版本”:“2012-10-17”,“声明”:[{“行动”:["ec2:AttachVolume", "ec2:AssociateIamInstanceProfile", "ec2:AuthorizeSecurityGroupEgress", "ec2:AuthorizeSecurityGroupIngress", "ec2:CreateImage", "ec2:CreateLaunchTemplate", "ec2:CreateTags", "ec2:CreateVolume", "ec2: deleetelaunchtemplate ", "ec2:DeleteNetworkInterface", "ec2: deleetesecuritygroup ", "ec2: deleetesnapshot ", "ec2:DeleteTags", "ec2:DeleteVolume", "ec2: dereregisterimage ", "ec2:DescribeAccountAttributes", "ec2:DescribeAvailabilityZones","ec2: descripbeiaminstanceprofileasassociations ", "ec2: descripbeimages ", "ec2: descripbeinstancetypes ", "ec2: descripbelaunchtemplateversions ", "ec2: descripbenetworkinterfaces ", "ec2: descripbereregions ", "ec2: descripbesecuritygroups ", "ec2: descripbesnapshots ", "ec2: descripbesubnets ", "ec2: descripbetags ", "ec2: descripbevolumes ", "ec2:DisassociateIamInstanceProfile", "ec2:RebootInstances", "ec2:RebootInstances", "ec2:RunInstances","ec2:StartInstances", "ec2:StopInstances", "ec2:TerminateInstances"], "Effect": "Allow", "Resource": "*"}, {"Action": ["ec2:AuthorizeSecurityGroupEgress", "ec2:AuthorizeSecurityGroupIngress", "ec2:CreateSecurityGroup", "ec2: deleetesecuritygroup ", "ec2:RevokeSecurityGroupEgress", "ec2:RevokeSecurityGroupIngress"], "Effect": "Allow", "Resource": "*"}, {"Action":["s3:CreateBucket", "s3:DeleteBucket", "s3:DeleteObject", "s3:GetObject", "s3:PutBucketTagging", "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": "Action": "Allow":["kms:CreateGrant", "kms:Decrypt", "kms: descripbekey ", "kms: generatedatakeywithout明文","kms:GenerateDataKey", "kms: reencrypttto ", "kms:ReEncryptFrom"], "Resource": "*"}, {"Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/*"}]} 

注意:

  • 只有在创建目录期间必须为准备虚拟机创建隔离安全组时,才需要与SecurityGroups相关的EC2部分。一旦完成,就不需要这些权限了。
  • 只有在使用EBS卷加密时才需要KMS部分。
  • “iam:PassRole”权限部分仅用于以下类型role_based_auth
  • 可以根据您的需求和环境添加特定的资源级权限,而不是完全访问。参考AWS文档揭秘EC2资源级权限AWS资源的访问管理了解更多详情。
  • 仅在使用卷工作方法时使用ec2:CreateNetworkInterface和ec2:DeleteNetworkInterface权限。

下一步该去哪里?

更多的信息

对接AWS