AWS EC2への接続
接続とリソースの作成および管理では、接続を作成するウィザードについて説明します。以下の情報は、AWSクラウド環境に固有の詳細を扱います。
前提条件
AWS EC2への接続を作成する前に、以下を実行します。
IAM権限を定義する
ホスト接続を作成する前に、Citrixがユーザーに代わってAWSアカウント内のリソースをプロビジョニングおよび管理するための適切な権限を付与するIAMユーザーまたはロールに対して、IAM権限ポリシーを適切に定義する必要があります。このセクションの情報を使用して、AWS上のCitrix Virtual Apps and DesktopsのIAM権限を定義します。AmazonのIAMサービスでは、複数のユーザーを持つアカウントが許可されており、それらのユーザーはさらにグループに編成できます。これらのユーザーは、アカウントに関連する操作を実行する能力を制御するために、異なる権限を持つことができます。IAM権限の詳細については、IAM JSONポリシーリファレンスを参照してください。
IAM権限ポリシーを新しいユーザーグループに適用するには:
- AWSマネジメントコンソールにログインし、ドロップダウンリストからIAMサービスを選択します。
- 新しいユーザーグループの作成を選択します。
- 新しいユーザーグループの名前を入力し、続行を選択します。
- 権限ページで、カスタムポリシーを選択し、次に選択を選択します。
- 権限ポリシーの名前を入力します。
- ポリシードキュメントセクションで、関連する権限を入力します。
ポリシー情報を入力したら、続行を選択して、IAMアクセス許可ポリシーをユーザーグループに適用するプロセスを完了します。グループ内のユーザーには、Citrix Virtual Apps and Desktopsに必要なアクションのみを実行するアクセス許可が付与されます。
重要:
この記事の例で提供されているポリシースクリプトを使用して、Citrix Virtual Apps and DesktopsがAWSアカウント内でアクションを実行するために使用するアクションを、特定のリソースに制限することなくリストします。Citrixは、テスト目的でこの例を使用することをお勧めします。本番環境では、リソースにさらなる制限を追加することを選択できます。
IAMアクセス許可を追加する
AWSマネジメントコンソールのIAMセクションでアクセス許可を追加します。
- 概要パネルで、アクセス許可タブを選択します。
-
アクセス許可の追加を選択します。

-
アクセス許可の追加画面で、アクセス許可を付与します。

-
JSONセクションに、お使いの環境の必要なAWSアクセス許可を含めます。

接続を作成する
Amazon EC2への接続は、以下を使用して作成できます。
- ウェブスタジオ
- PowerShell コマンド(#create-a-connection-using-powershell)
注:
プロキシサーバーまたはファイアウォールの制限を確認し、次のアドレスに接続できることを確認してください:
https://*.amazonaws.com。また、Citrix Gateway サービス接続に記載されているすべてのアドレスに接続できることを確認してください。これらに接続できない場合、ホスト接続の作成または更新中に失敗する可能性があります。
Web Studio を使用して接続を作成する
- ホスティング > 接続とリソースの追加ページに移動します。
-
接続ページで、接続を構成するには、次の手順に従います。
- 新しい接続を作成を選択します。
- ゾーンで、AWS 環境用に設定したリソースの場所を選択します。
- 接続タイプとして Amazon EC2 を選択します。
-
リソースをプロビジョニングする方法のいずれかを選択します。
- この AWS アカウントを使用してリソースをプロビジョニングするを選択した場合、IAM ユーザーアクセスキーを使用または IAM ロールを使用を選択します。IAM ユーザーアクセスキーの場合は、Citrix が AWS アカウントのリソースを管理するための適切な IAM 権限ポリシーを持つ IAM ユーザーの API キーとシークレットキーを指定します。IAM ロールの場合は、Citrix が AWS アカウントのリソースを管理するための適切な IAM 権限ポリシーを持つ IAM ロールを Delivery Controller インスタンスに割り当てていることを確認してください。詳細については、ロールベース認証ガイドを参照してください。
- クロスアカウントアクセスを使用してリソースをプロビジョニングするを選択した場合、Account A の Delivery Controller が引き受けてプロビジョニング操作を実行する必要がある Account B の IAM ロールの ARN を指定します。
- 接続名を入力し、次へをクリックします。
- 仮想マシンの場所ページで、VM をプロビジョニングする必要がある場所を指定します。新しい VM を作成するためのクラウドリージョン、VPC、およびアベイラビリティゾーンを選択します。
-
「ネットワーク」ページで、次のようにします。
- 以前にアベイラビリティゾーンまたはローカルゾーンで選択したリソースの名前を入力します。
- 前のメニューで構成したVPC内のサブネットを1つ以上選択します。
- 残りのページを順に進み、「概要」ページまで移動します。
- 「完了」をクリックして、Amazon EC2へのホスト接続を作成します。
重要な考慮事項
Studioを使用して接続を作成する場合:
- CitrixがAWSリソースを管理するための適切なIAM権限を定義します。
- CitrixがAWSリソースを管理するためにIAMユーザーアクセスキーを使用する場合、APIキーとシークレットキーの値を指定する必要があります。これらの値を含むキーファイルをAWSからエクスポートし、インポートできます。また、リージョン、アベイラビリティゾーン、VPC名、サブネットアドレス、ドメイン名、セキュリティグループ名、および資格情報も指定する必要があります。
- CitrixがAWSリソースを管理するためにIAMロールを使用する場合、すべてのDelivery Controllerに適切なIAM権限を持つロールが割り当てられていることを確認する必要があります。詳細については、ロールベース認証ガイドを参照してください。
- ルートAWSアカウントの資格情報ファイル(AWSコンソールから取得)は、標準のAWSユーザー用にダウンロードされた資格情報ファイルと同じ形式ではありません。そのため、Citrix Virtual Apps and Desktopsでは、このファイルを使用してAPIキーとシークレットキーのフィールドに入力することはできません。AWS Identity Access Management(IAM)資格情報ファイルを使用していることを確認してください。
- ゾーンは、アベイラビリティゾーンまたはローカルゾーンのいずれかです。
PowerShellを使用して接続を作成する
- PowerShellウィンドウを開きます。
- Citrix固有のPowerShellモジュールをロードするには、
asnp citrix*を実行します。 -
以下のコマンドを実行します。以下に例を示します。
$connectionName = "demo-hostingconnection" $cloudRegion = "us-east-1" $apiKey = "aaaaaaaaaaaaaaaaaaaa" $apiSecret = “bbbbb” $secureKey = ConvertTo-SecureString -String $apiSecret $zoneUid = "00000000-0000-0000-0000-000000000000" $connectionPath = "XDHyp:\Connections\" + $connectionName $connection = New-Item -Path $connectionPath -ConnectionType "<name of the connection>" -HypervisorAddress " "@("https://ec2.cn-north-1.amazonaws.com.cn") -Persist -Scope @() -UserName $apiKey -SecurePassword $secureKey -ZoneUid $zoneUid New-BrokerHypervisorConnection -HypHypervisorConnectionUid $connection.HypervisorConnectionUid $hostingUnitName = "demo-hostingunit" $availabilityzone = "us-east-1a" $vpcName = "Default VPC" $jobGroup = [Guid]::NewGuid() $hostingUnitPath = "XDHyp:\HostingUnits\" + $HostingUnitName $rootPath = $connectionPath + "\" + $vpcName + ".virtualprivatecloud\" $availabilityZonePath = @($rootPath + $availabilityzone + ".availabilityzone") $networkPaths = (Get-ChildItem $availabilityZonePath[0] | Where ObjectType -eq "Network") | Select-Object -ExpandProperty FullPath # will select all the networks in the availability zone New-Item -Path $hostingUnitPath -AvailabilityZonePath $availabilityZonePath -HypervisorConnectionName $connectionName -JobGroup $jobGroup -PersonalvDiskStoragePath @() -RootPath $rootPath -NetworkPath $networkPaths <!--NeedCopy-->
注:
ロールベース認証を使用して接続を作成するには、apiKey と apiSecret を
role_based_authとして指定します。
制限事項
AWS コンソールで AWS Virtual Private Cloud (VPC) の名前を変更すると、Citrix Cloud™ の既存のホスティングユニットが破損します。ホスティングユニットが破損すると、カタログを作成したり、既存のカタログにマシンを追加したりできなくなります。この問題を解決するには、AWS VPC の名前を元の名前に戻します。
クロスアカウントプロビジョニング
Delivery Controller を別の AWS アカウント(共有サービスアカウントまたはサイトコンポーネントアカウント)に配置し、クロスアカウントアクセス(クロスアカウント IAM ロール)を持つ IAM ロールを使用し、MCS でプロビジョニングされたマシンカタログを別のセカンダリ AWS アカウント(ワークロードアカウント)に配置するユースケースがあります。この場合、個別の追加の Delivery Controller は不要です。このようなシナリオをサポートするため、この機能は VPC ピアリングと IAM ロールを使用したクロスアカウントアクセスを利用して、複数の AWS アカウントを管理する企業向けに異なる AWS アカウント間でのプロビジョニングを可能にします。
VPC ピアリング を使用すると、Delivery Controller と、異なるリージョンまたはアカウントにあるプロビジョニングされた VM が相互に通信できるようになります。
IAM ロールを使用したクロスアカウントアクセス を使用すると、プライマリアカウント(Delivery Controller アカウント)が IAM ロールを引き受けて、セカンダリアカウント(マシンカタログ VM)内の AWS リソースにアクセスできるようになります。
Delivery Controller がセカンダリアカウントのリソースにアクセスできるようにするには、セカンダリアカウントから IAM ロールを引き受けた後にホスト接続を作成します。
前提条件
クロスアカウントプロビジョニング用のホスト接続を作成する前に、以下を設定してください。
- VPC ピアリングを設定し、両方のリージョンまたはアカウントでセキュリティグループを構成します。VPC ピアリングの設定 を参照してください。
- IAM ロールを使用してクロスアカウントアクセスを委任します。IAM ロールを使用したクロスアカウントアクセスの委任 を参照してください。
VPC ピアリングの設定
VPC Aがプライマリアカウント(アカウントA)にあり、Delivery ControllersとActive Directoryを持っていると仮定します。VPC Bはセカンダリアカウント(アカウントB)にあり、そこにVMをプロビジョニングしたいとします。
アカウントAとアカウントBの間にVPCピアリング接続を設定するには、次の手順を実行します。
-
VPCピアリング接続を作成します。参照:
- VPC Aに移動し、パブリックサブネットに関連付けられているルートテーブルに移動します。
- Edit Routes > Add route をクリックします。Destination 列にVPC BのCIDRブロックを追加し、Target 列に作成したVPCピアリングを追加します。
- 手順2と3を繰り返しますが、VPC AとVPC Bのプライベートサブネットを使用します(VPC AのCIDRブロックを追加します)。VPCピアリング接続のルートテーブルを更新するを参照してください。
- VPC Aに関連付けられているプライベートセキュリティグループに移動します。
- Actions を選択し、次に Edit inbound rules を選択します。
-
Add rule を選択します。タイプには All Traffic を選択し、Source Column に以下を追加します。
- 異なるリージョンの場合は、VPC BのCIDRブロックを追加します。
- 異なるアカウントだが同じリージョンの場合は、VPC BのアカウントIDとプライベートセキュリティグループIDをスラッシュで区切って追加します(例: 123456789012/sg-1a2b3c4d)。
- 手順5から7を繰り返しますが、VPC Bのプライベートセキュリティグループを使用します(ただし、VPC AのCIDRブロック、または同じリージョンだが異なるアカウントのVPC AのアカウントIDとプライベートセキュリティグループIDを追加します)。ピアセキュリティグループを参照するようにセキュリティグループを更新するを参照してください。
注:
VPCピアリング接続の作成に料金はかかりません。ただし、アベイラビリティーゾーン内のVPCピアリングは無料ですが、VPCピアリング接続を介したデータ転送が複数のアベイラビリティーゾーンやリージョンをまたがる場合は料金が発生します。VPCピアリング接続の料金を参照してください。
IAMロールを使用したクロスアカウントアクセスの委任
アカウント間でVPCピアリングを設定した後、IAMロールを使用してクロスアカウントアクセスを委任します。
IAMロールを使用したクロスアカウントアクセスでは、プライマリアカウント(Delivery Controllerアカウント)がIAMロールを引き受けて、セカンダリアカウント(マシンカタログVM)内のAWSリソースにアクセスできるようにします。
クロスアカウントリソースにアクセスするには、次の手順を実行します。
注意:
VPC Aはプライマリアカウント(アカウントA)にあり、Delivery ControllerとActive Directoryが含まれていると仮定します。VPC Bは、VMをプロビジョニングするセカンダリアカウント(アカウントB)にあります。
- 前述の手順で、アカウント間でVPCピアリングを設定します。
- アカウントBで、最小限のCitrix IAM権限を持つIAMロールとポリシーを作成します。IAMチュートリアル: IAMロールを使用してAWSアカウント間でアクセスを委任するを参照してください。このロールのARNが「arn:aws:iam::5678:role/citrix-role」であるとします。
- 「arn:aws:iam::5678:role/citrix-role」ロールに信頼ポリシーを追加し、IAMにおけるクロスアカウントリソースアクセスに従って、アカウントAのロール「arn:aws:iam::1234:role/primary-account-citrix-role」からアクセスできるようにします。
- アカウントAで、前述の「primary-account-citrix role」という名前でIAMロールとポリシーを作成します。これは、アカウントBのIAMロール(arn:aws:iam::5678:role/citrix-role)を引き受け、そのIAMロールを渡すことができます。
- アカウントAのすべてのDelivery Controllerに「arn:aws:iam::1234:role/primary-account-citrix-role」ロールを割り当てます。
これで、Delivery ControllerはアカウントBのロール(「arn:aws:iam::5678:role/citrix-role」)を引き受けることができます。
クロスアカウントプロビジョニング用のホスト接続を作成する
VMをプロビジョニングするセカンダリアカウント(アカウントB)にホスト接続を作成します。これにより、アカウントAのDelivery Controllerは、アカウントBのロールを引き受けた後、アカウントBのリソースにアクセスできるようになります。
PowerShellコマンドを使用してホスト接続を作成し、次の2つのカスタムプロパティを追加します。
-
CrossAccountRoleArn:CrossAccountRoleArnプロパティを指定しない場合、通常のホスト接続が作成されます。この場合、MaximumAssumeRoleDurationInSecondsが指定されていても無視されます。 -
MaximumAssumeRoleDurationInSeconds:DurationInSecondsは900秒から3600秒の間である必要があります。デフォルトは900秒です。3600を超える値を指定した場合、DurationInSecondsは3600に設定されます。
例:
$connectionName = "cross-account-conn"
$cloudRegion = "us-east-1"
$apiKey = "role_based_auth"
$secretKey = "role_based_auth"
$zoneUid = "xxxxxx"
$secureKey = (ConvertTo-SecureString -String $secretKey -AsPlainText -Force)
$connectionPath = "XDHyp:\Connections\" + $connectionName
$customProperties = '<CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Property xsi:type="StringProperty" Name="CrossAccountRoleArn" Value="arn:aws:iam::5678:role/citrix-role" /><Property xsi:type="StringProperty" Name="MaximumAssumeRoleDurationInSeconds" Value="3600" />
"</CustomProperties>'
$connection = New-Item -Path $connectionPath -ConnectionType "AWS" -HypervisorAddress "https://ec2.$($cloudRegion).amazonaws.com" -Persist -Scope @() -UserName $apiKey -SecurePassword $secureKey -ZoneUid $zoneUid -CustomProperties $customProperties
New-BrokerHypervisorConnection -HypHypervisorConnectionUid $connection.HypervisorConnectionUid
<!--NeedCopy-->
ホスト接続が作成されたら、StudioまたはPowerShellを使用してホスティングユニットを作成します。ただし、VPCとネットワークを選択してください。
接続の編集
既存のホスト接続を編集して、次の操作を実行できます。
- Citrixがリソースを管理するためのIAM権限を提供するオプションを変更する
- ホスティング接続あたりの同時アクション(または同時マシン)の最大数を変更する
- スコープを変更します。
- PowerShellコマンドを使用して、エラスティックネットワークインターフェイス(ENI)あたりのセキュリティグループの最大数を構成する
IAM権限を提供するオプションの編集
- 既存のAmazon EC2接続を右クリックします。
- [接続プロパティ] ページで、[設定の編集] をクリックします。
- Citrixがリソースを管理するためのIAM権限を提供するオプションのいずれかを選択します。必要な詳細を入力し、[保存] をクリックします。
同時実行アクションの最大数を変更する
Studio で Amazon EC2 のホスト接続を作成すると、次のデフォルト値が表示されます。
| オプション | 絶対値 | 割合 |
|---|---|---|
| 同時実行アクション(すべての種類) | 125 | 100 |
| 1分あたりの新規アクションの最大数 | 150 | 該当なし |
| 同時プロビジョニング操作の最大数 | 100 | 該当なし |
MCS は、デフォルトで最大 100 の同時プロビジョニング操作をサポートします。
これらの値は、接続の編集画面で、Citrix Studioの詳細設定セクションにアクセスして構成します。
または、Remote PowerShell SDKを使用して、環境に応じた最適な設定のために同時操作の最大数を設定できます。
PowerShellカスタムプロパティ MaximumConcurrentProvisioningOperations を使用して、同時AWSプロビジョニング操作の最大数を指定します。
構成の前に:
- Cloud用PowerShell SDKがインストールされていることを確認してください。
-
MaximumConcurrentProvisioningOperationsのデフォルト値は100であることを理解してください。
MaximumConcurrentProvisioningOperations の値をカスタマイズするには、次の手順を実行します。
- PowerShellウィンドウを開きます。
- Citrix固有のPowerShellモジュールをロードするには、
asnp citrix*を実行します。 -
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>を接続の名前に設定する必要があります。 - 更新されたCustomProperties文字列を確認するには、
dirを入力します。
ネットワークインターフェイスごとのセキュリティグループを構成する
ホスト接続を編集する際、PowerShellコマンドを使用して、エラスティックネットワークインターフェイス (ENI) ごとに許可されるセキュリティグループの最大数を構成できるようになりました。AWSセキュリティグループのクォータ値については、セキュリティグループを参照してください。
ネットワークインターフェイスごとにセキュリティグループを構成するには:
- PowerShellウィンドウを開きます。
- Citrix固有のPowerShellモジュールをロードするには、
asnp citrix*を実行します。 -
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 を設定または変更することはできません。
必要なAWS権限
このセクションには、AWS 権限の完全なリストが含まれています。機能が正しく動作するように、このセクションに記載されている権限の完全なセットを使用してください。
注:
iam:PassRole権限は、role_based_auth にのみ必要です。
ホスト接続の作成
AWS から取得した情報を使用して、新しいホスト接続が追加されます。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"ec2:DescribeAvailabilityZones",
"ec2:DescribeSubnets",
"ec2:DescribeVpcs",
"ec2:DescribeRegions"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
<!--NeedCopy-->
VMの電源管理
VMの電源がオンまたはオフになります。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"ec2:DescribeInstances",
"ec2:StartInstances",
"ec2:StopInstances",
"ec2:RebootInstances",
"ec2:DescribeInstanceStatus"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
<!--NeedCopy-->
VMの作成、更新、または削除
AWS インスタンスとしてプロビジョニングされた VM を使用して、マシンカタログが作成、更新、または削除されます。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"ec2:AttachVolume",
"ec2:AssociateIamInstanceProfile",
"ec2:AuthorizeSecurityGroupEgress",
"ec2:RevokeSecurityGroupEgress",
"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:DescribeInstanceStatus",
"ec2:DescribeInstanceTypes",
"ec2:DescribeLaunchTemplates",
"ec2:DescribeLaunchTemplateVersions",
"ec2:DescribeNetworkInterfaces",
"ec2:DescribeRegions",
"ec2:DescribeSecurityGroups",
"ec2:DescribeSnapshots",
"ec2:DescribeSubnets",
"ec2:DescribeTags",
"ec2:DescribeSpotInstanceRequests",
"ec2:CancelSpotInstanceRequests",
"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:CreateSecurityGroup",
"ec2:DeleteSecurityGroup"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Action": [
"ebs:StartSnapshot",
"ebs:GetSnapshotBlock",
"ebs:PutSnapshotBlock",
"ebs:CompleteSnapshot",
"ebs:ListSnapshotBlocks",
"ebs:ListChangedBlocks",
"ec2:CreateSnapshot"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
<!--NeedCopy-->
注:
- SecurityGroups に関連するEC2セクションは、カタログ作成中に準備VM用の分離セキュリティグループを作成する必要がある場合にのみ必要です。これが完了すると、これらの権限は不要になります。
VMのインポート
マシンカタログはVMをインポートすることによって作成されます。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"ec2:DescribeInstances",
"ec2:DescribeSecurityGroups",
"ec2:DescribeAvailabilityZones",
"ec2:DescribeSubnets",
"ec2:DescribeVolumes",
"ec2:DescribeSpotInstanceRequests"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
<!--NeedCopy-->
注:
ec2:DescribeSpotInstanceRequestsは、VMがインポートされるAWSリージョンにスポットインスタンスがある場合にのみ必要です。
ディスクの直接アップロードとダウンロード
ディスクの直接アップロードにより、マシンカタログのプロビジョニングにおけるボリュームワーカーの要件が不要になり、代わりにAWSが提供するパブリックAPIが使用されます。この機能により、追加のストレージアカウントに関連するコストと、ボリュームワーカーの操作を維持する複雑さが軽減されます。
注:
ボリュームワーカーのサポートは削除されました。マシンカタログのプロビジョニングには、ディスクの直接アップロードおよびダウンロードの権限が必要です。
次の権限をポリシーに追加する必要があります。
ebs:StartSnapshotebs:GetSnapshotBlockebs:PutSnapshotBlockebs:CompleteSnapshotebs:ListSnapshotBlocksebs:ListChangedBlocksec2:CreateSnapshotec2:DeleteSnapshotec2: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ブロックを含めることにより、特定のキーに制限できます。例: KMS Permissions with Condition:
{
"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を使用するには、まずDelivery Controllerを設定する際に、Delivery Controller ec2インスタンスで目的のIAMロールを構成します。Web Studioを使用してホスティング接続を追加し、認証キーとシークレットにrole_based_authを指定します。これらの設定を持つホスティング接続は、ロールベースの認証を使用します。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"ec2:AttachVolume",
"ec2:AssociateIamInstanceProfile",
"ec2:AuthorizeSecurityGroupEgress",
"ec2:RevokeSecurityGroupEgress",
"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:CancelSpotInstanceRequests",
"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:CreateSecurityGroup",
"ec2:DeleteSecurityGroup"
],
"Effect": "Allow",
"Resource": "*"
},
{
"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用に分離セキュリティグループを作成する必要がある場合にのみ必要です。これが完了すると、これらの権限は不要になります。
- KMSセクションは、EBSボリューム暗号化を使用する場合にのみ必要です。
iam:PassRole権限セクションは、role_based_authの場合にのみ必要です。- 要件と環境に基づいて、フルアクセスではなく特定のリソースレベルの権限を追加できます。詳細については、AWSドキュメントのEC2リソースレベルの権限の解明およびAWSリソースのアクセス管理を参照してください。
- ボリュームワーカー方式を使用している場合にのみ、
ec2:CreateNetworkInterfaceおよびec2:DeleteNetworkInterface権限を使用してください。
ホスト接続の権限を検証する
ホスト接続の権限を検証して、MCSマシンカタログの作成と管理に関連するタスクを実行できます。この実装は、VMの作成、削除、更新、VMの電源管理、EBS暗号化など、さまざまなシナリオで必要な不足している権限を事前に特定するのに役立ち、重要な時期にブロックされるのを回避できます。
PowerShellコマンドTest-HypHypervisorConnectionを使用して、ホスト接続の権限を検証できます。コマンドの結果はリストとしてキャプチャされ、リスト内の各項目は3つのセクションに分かれています。
- カテゴリ: ユーザーがMCSマシンカタログを作成および管理するために実行できるアクションまたはタスク。
- 修正措置: 管理者がユーザーの不足している権限の不一致を解決するために実行する必要がある手順。
- 不足している権限: カテゴリに不足している権限のリスト。
権限を検証するには、次の手順を実行します。
- AWSへのホスト接続を作成します。
- Delivery Controller™ホストからPowerShellウィンドウを開きます。
- Citrix固有のPowerShellモジュールをロードするために
asnp citrix*を実行します。 -
権限を検索するために必要な権限があるかどうかを確認するには、次のコマンドを実行します。
Test-HypHypervisorConnection -LiteralPath "XDHyp:\Connections\AWSCon" <!--NeedCopy--> -
権限を検索するために必要な不足している権限を追加した後、次のコマンドを実行して、以下のカテゴリに権限があるかどうかを確認します。
- 作成、更新、削除
- 電源管理
- EBS暗号化
Test-HypHypervisorConnection -LiteralPath "XDHyp:\Connections\AWSCon" [-SecurePassword -Password] "password" -UserName "" -CustomProperties "" <!--NeedCopy-->
権限の追加の詳細については、「IAM権限の追加」を参照してください。
次のステップ
- 初期展開プロセス中の場合は、「マシンカタログの作成」を参照してください。
- AWS固有の情報については、「AWS EC2カタログの作成」を参照してください。
詳細情報
- 接続とリソースの作成および管理(/ja-jp/citrix-virtual-apps-desktops/install-configure/connections)
- AWS仮想化環境(/ja-jp/citrix-virtual-apps-desktops/install-configure/install-prepare/aws)