AWSへの接続
「接続とリソースの作成と管理」では接続を作成するためのウィザードについて説明しています。以下の情報は、AWSクラウド環境に固有の詳細について説明しています。
注:
AWSへの接続を作成する前に、まずAWSをリソースの場所として設定する必要があります。「AWS仮想化環境」を参照してください。
接続の作成
Studioを使用して接続を作成する場合:
- APIキーと秘密キーの値を指定する必要があります。AWSでこれらの値を含んでいるキーファイルをエクスポートしてから、値をインポートすることができます。また、リージョン、アベイラビリティゾーン、仮想プライベートクラウド名、サブネットアドレス、ドメイン名、セキュリティグループ名、および資格情報も必要になります。
- AWSコンソールから取得するルートAWSアカウント用の資格情報ファイルでは、標準的なAWSユーザーのものとは異なる形式が使用されています。このため、このファイルをCitrix DaaSで使用してAPIキーと秘密キーの情報を入力することはできません。AWS Identity Access Management(IAM)形式の資格情報ファイルを使用してください。
注:
接続を作成した後、APIキーと秘密キーを更新しようとすると失敗することがあります。この問題を解決するには、プロキシサーバーまたはファイアウォールの制限を確認し、次のアドレスに接続できることを確認してください:
https://*.amazonaws.com
。
制限事項
AWSコンソールでAWS仮想プライベートクラウド(VPC)の名前を変更すると、Citrix Cloudの既存のホスティングユニットが破損します。ホスティングユニットが破損している場合、カタログを作成したり、既存のカタログにマシンを追加したりすることはできません。この問題を解決するには、AWS VPCの名前を元の名前に戻します。
ホスト接続のデフォルト値
StudioでAWSクラウド環境のホスト接続を作成すると、次のデフォルト値が表示されます:
オプション | 絶対 | パーセンテージ |
---|---|---|
同時操作(すべての種類) | 125 | 100 |
1分あたりの最大新規操作 | 150 | - |
最大同時プロビジョニング操作 | 100 | - |
MCSは、デフォルトで最大100の同時プロビジョニング操作をサポートします。
これらの値は、Citrix Studioの [接続の編集] 画面の [詳細設定] セクションで構成できます:
または、Remote PowerShell SDKを使用して、環境ごとに最適な同時操作の最大数を設定することもできます。
PowerShellカスタムプロパティMaximumConcurrentProvisioningOperations
を使用して、同時AWSプロビジョニング操作の最大数を指定します。
構成前:
- PowerShell SDK for Cloudがインストールされていることを確認してください。
-
MaximumConcurrentProvisioningOperations
のデフォルト値は100であることに留意してください。
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>'
。この文字列は、
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
を入力して、更新されたCustomProperties文字列を確認します。
ネットワークインターフェイスごとにセキュリティグループを構成
ホスト接続を編集するときに、PowerShellコマンドを使用して、Elastic Network Interface(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を使用すると、APIキーとAPIシークレットで新しいAWS接続が追加されます。この情報と認証済みアカウントで、MCSはAWS DescribeRegions 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
を使用して接続を作成するには:
- AWSがホストするCloud Connectorをセットアップし、接続できることを確認します。
-
以下のPowerShellコマンドを実行して、Cloud Connectorの一覧を表示します。
PS C:> asnp citrix.* PS C:> Get-XDAuthentication PS C:> Get-ConfigEdgeServer <!--NeedCopy-->
-
新しく作成されたCloud ConnectorからZoneUidを見つけて、以下のPowerShellコマンドに入力します。イタリック体の項目をそれぞれの値に置き換えます。
PS C:\> $hyp= New-Item -Path xdhyp:\Connections -ZoneUid
ZoneUid-Name
“My New Connection”-ConnectionType "AWS" -HypervisorAddress @("https://ec2.cn-north-1.amazonaws.com.cn") -UserName
“APIkey”-Password
“API Secret”-Persist
PS C:\> New-BrokerHypervisorConnection -HypHypervisorConnectionUid $hyp. HypervisorConnectionUid
- [ホスト] タブを更新して、EC2接続が作成されたことを確認します。
- 新しい接続を使用して、リソースの場所を追加します。
IAM権限の定義
このセクションの情報を使用して、AWS上のCitrix DaaSのIAMアクセス権限を定義します。AmazonのIAMサービスでは、複数のユーザーを持つアカウントが許可されており、さらにグループに編成することができます。これらのユーザーは、アカウントに関連付けられた操作の実行を制御できるさまざまな権限を持つことができます。IAMアクセス権限について詳しくは、「IAM JSONポリシーのリファレンス」を参照してください。
IAMアクセス権限ポリシーを新しいユーザーグループに適用するには、次を実行します:
- AWS管理コンソールにログインし、ドロップダウンリストから [IAM service] を選択します。
- [Create a New Group of Users] を選択します。
- 新しいユーザーグループの名前を入力し、[Continue] を選択します。
- [Permissions] ページで [Custom Policy]、[Select] を選択します。
- [Permissions policy] の名前を入力します。
- [Policy Document] セクションで、関連する権限の情報を入力します。
ポリシー情報の入力後、[Continue] を選択してユーザーのグループに対してIAM権限ポリシーのアプリケーションを完了します。グループ内のユーザーには、Citrix DaaSに必要なアクションのみを実行するためのアクセス権限が付与されます。
重要:
上記の例で提供されているポリシーテキストを使用して、Citrix DaaSが特定のリソースに限定せずにAWSアカウント内でアクションを実行するために使用するアクションを一覧表示します。Citrixでは、この例はテスト目的で使用することをお勧めします。実稼働環境では、リソースにさらに制限を加えることを選択できます。
IAMアクセス権限の追加
AWSマネジメントコンソールの [IAM] セクションで、権限を追加します:
- [Summary] パネルで [Permissions] タブを選択します。
- [Add permissions] を選択します。
[Add Permissions to] 画面でアクセス許可を付与します:
以下は[JSON] タブの例です:
ヒント:
JSONの例には、環境に対するすべての権限が含まれているとは限らないことに注意してください。詳しくは、「AWS権限について」を参照してください。
必要な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"
],
"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の作成、更新、または削除
マシンカタログは、AWSインスタンスとしてプロビジョニングされたVMで、作成、更新、または削除されます。
{
"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: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-->
注:
- SecurityGroupsに関連するEC2セクションは、カタログの作成中に準備VM用に分離セキュリティグループを作成する必要がある場合にのみ必要です。これが行われると、これらの権限は必要ありません。
ディスクの直接アップロードとダウンロード
ディスクの直接アップロードは、マシンカタログプロビジョニングのボリュームワーカー要件をなくし、代わりにAWSが提供するパブリックAPIを使用します。この機能により、追加のストレージアカウントに関連するコストと、ボリュームワーカーの操作を維持する複雑さが軽減されます。
注:
ボリュームワーカーのサポートは廃止されました。
次の権限をポリシーに追加する必要があります:
ebs:StartSnapshot
ebs:GetSnapshotBlock
ebs:PutSnapshotBlock
ebs:CompleteSnapshot
ebs:ListSnapshotBlocks
ebs:ListChangedBlocks
ec2:CreateSnapshot
ec2:DeleteSnapshot
ec2:DescribeLaunchTemplates
重要:
- ボリュームワーカーAMIやボリュームワーカーVMなどのボリュームワーカーリソースがなくても、既存のマシンカタログに新しいVMを追加できます。
- 以前にボリュームワーカーを使用していた既存のカタログを削除すると、ボリュームワーカーに関連するすべてのアーティファクトが削除されます。
作成されたボリュームの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-->
注:
ResourceとConditionのブロックを含めることにより、ユーザーの裁量で権限を特定のキーに制限できます。たとえば、Conditionを使用した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-->
以下のキーポリシーステートメントは、アカウントがIAMポリシーを使用してKMSキーの全操作(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は、現在サポートされているすべての機能に使用できます。このポリシーを使用して、ホスト接続の作成、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: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-->
注:
- SecurityGroupsに関連するEC2セクションは、カタログの作成中に準備VM用に分離セキュリティグループを作成する必要がある場合にのみ必要です。これが行われると、これらの権限は必要ありません。
- EBSボリューム暗号化を使用している場合は、KMSセクションのみが必要です。
iam:PassRole
権限セクションは、role_based_authでのみ必要です。- 要件と環境に基づいて、フルアクセス権限の代わりに、特定のリソースレベルのアクセス権限を追加できます。詳しくは、AWSドキュメントの「Demystifying EC2 Resource-Level Permissions」と「AWSリソースのアクセス管理」を参照してください。
ec2:CreateNetworkInterface
およびec2:DeleteNetworkInterface
権限は、ボリュームワーカー方式を使用している場合にのみ使用してください。
ホスト接続の権限を検証する
MCSマシンカタログの作成と管理に関連するタスクを実行するために、ホスト接続の権限を検証できます。この実装により、VMの作成、削除、更新、VMの電源管理、EBS暗号化などのさまざまなシナリオに必要な不足している権限を事前に見つけることができ、重要なタイミングでブロックされることを回避できます。
PowerShellコマンドTest-HypHypervisorConnection
を使用して、ホスト接続の権限を検証できます。コマンドの結果は一覧としてキャプチャされ、一覧内の各項目は3つのセクションに分割されます。
- カテゴリ:ユーザーがMCSマシンカタログを作成および管理するために実行できるアクションまたはタスク。
- 修正アクション:ユーザーの不足している権限による不一致を解決するために管理者が実行する必要がある手順。
- 不足している権限:カテゴリに不足している権限の一覧。
権限を検証するには、次の手順を実行します:
- AWSへのホスト接続を作成します。
- Delivery ControllerホストからPowerShellウィンドウを開きます。
-
asnp citrix*
を実行し、Citrix固有のPowerShellモジュールをロードします。 -
必要な権限があるかどうか確認するために権限を検索するには、次のコマンドを実行します。
Test-HypHypervisorConnection -LiteralPath "XDHyp:\Connections\AWSCon" <!--NeedCopy-->
-
権限を検索するために必要な不足している権限を追加した後、次のコマンドを実行して、次のカテゴリの権限があるかどうかを確認します:
- 作成 更新 削除
- 電源管理
- EBS暗号化
Test-HypHypervisorConnection -LiteralPath "XDHyp:\Connections\AWSCon" [-SecurePassword -Password] "password" -UserName "" -CustomProperties "" <!--NeedCopy-->
権限の追加について詳しくは、「IAMアクセス許可の追加」を参照してください。
次の手順
- 初期展開プロセスを行っている場合は、「マシンカタログの作成」を参照してください。
- AWS固有の情報については、「AWSカタログの作成」を参照してください。