Amazon WorkSpaces Core マネージドインスタンスへの接続
接続とリソースの作成および管理は、接続を作成するウィザードについて説明しています。以下の情報は、Amazon WorkSpaces Core マネージドインスタンスに固有の詳細を扱っています。
前提条件
-
Amazon WorkSpaces Core マネージドインスタンスへの接続を作成する前に、以下を実行してください。
- AWS をリソースロケーションとして設定を完了します。「AWS 仮想化環境」を参照してください。
- IAM 権限の定義 Citrix® がお客様に代わって AWS リソースを管理するための IAM ユーザーまたはロールのポリシー。
- サービスにリンクされたロールの作成。
IAM 権限の定義
ホスト接続を作成する前に、Citrix がお客様に代わって AWS アカウント内のリソースをプロビジョニングおよび管理するための適切な権限を付与する IAM ユーザーまたはロールに対して、IAM 権限ポリシーを適切に定義する必要があります。このセクションの情報を使用して、Amazon WorkSpaces Core マネージドインスタンス上の Citrix DaaS の IAM 権限を定義します。Amazon の IAM サービスでは、複数のユーザーを持つアカウントが許可されており、それらのユーザーはさらにグループに編成できます。これらのユーザーは、アカウントに関連する操作を実行する能力を制御するために、異なる権限を持つことができます。IAM 権限の詳細については、「IAM JSON ポリシーリファレンス」を参照してください。
注:
Citrix はお客様に代わって AWS アカウント内のリソースと自動化をプロビジョニングおよび管理するため、特定のタグやリソース命名規則に基づいた IAM 権限ポリシーの構成はサポートされていません。
新しいユーザーグループに IAM 権限ポリシーを適用するには:
- AWS マネジメントコンソールにログインし、ドロップダウンリストから IAM サービスを選択します。
- 新しいユーザーグループの作成を選択します。
- 新しいユーザーグループの名前を入力し、続行を選択します。
- 権限ページで、カスタムポリシーを選択します。
- 権限ポリシーの名前を入力します。
- ポリシー ドキュメントセクションに、関連する権限を入力します。
ポリシー情報を入力した後、続行を選択して、IAM 権限ポリシーのユーザーグループへの適用を完了します。グループ内のユーザーには、Citrix DaaS に必要なアクションのみを実行する権限が付与されます。
重要:
この記事で提供されている例のポリシーテキストを使用して、Citrix DaaS が AWS アカウント内でアクションを実行するために使用するアクションを、特定のリソースに制限することなくリストします。Citrix は、テスト目的でこの例を使用することをお勧めします。本番環境では、リソースにさらなる制限を追加することを選択できます。
IAM 権限の追加
AWS マネジメントコンソールの IAM セクションで権限を追加します。
- 概要パネルで、権限タブを選択します。
-
- 権限の追加を選択します。
-
- 権限の追加先画面で、権限を付与します。
- JSON セクションで、環境に必要なAWS 権限を含めます。
サービスにリンクされたロールの作成
Citrix が Core V2 API を呼び出す各 AWS アカウントについて、サービスにリンクされたロール (SLR) を作成します。
ロールを作成する手順:
- AWS マネジメントコンソールでコマンドラインインターフェイス (CLI) を開きます。
-
CLI で次のコマンドを実行します。
aws iam create-service-linked-role --aws-service-name workspaces-instances.amazonaws.com <!--NeedCopy-->
Amazon WorkSpaces Core マネジメントコンソールを使用して、サービスにリンクされたロールを構成することもできます。「サービスにリンクされたロールの作成 (コンソール)」を参照してください。
接続の作成
Amazon WorkSpaces Core マネージドインスタンスへの接続は、以下を使用して作成できます。
注:
プロキシサーバーまたはファイアウォールの制限を確認し、次のアドレスに接続できることを確認してください:
https://*.amazonaws.comおよびhttps://*.api.aws。また、「Citrix Gateway サービス接続」に記載されているすべてのアドレスに接続できることを確認してください。これらに接続できない場合、ホスト接続の作成または更新中に障害が発生する可能性があります。
Studio を使用した接続の作成
- ホスティング > 接続とリソースの追加ページに移動します。
-
接続ページで、次の手順に従って接続を構成します。
- 新しい接続の作成を選択します。
- ゾーンで、AWS 環境用に設定したリソースロケーションを選択します。
- 接続タイプとして Amazon WorkSpaces Core を選択します。
-
IAM ユーザーアクセスキーを使用またはIAM ロールを使用を選択します。
IAM ユーザーアクセスキーの場合、Citrix が AWS アカウント内のリソースを管理するための適切な IAM 権限ポリシーを持つ IAM ユーザーの API キーとシークレットキーを指定します。
IAM ロールの場合、Citrix が AWS アカウント内のリソースを管理するための適切な IAM 権限ポリシーを持つ IAM ロールを Citrix Cloud Connector インスタンスに割り当てていることを確認してください。詳細については、「ロールベース認証ガイド」を参照してください。
- Citrix Cloud Connector を介して AWS に API リクエストをルーティングするには、Citrix Cloud Connector でシステムプロキシを使用チェックボックスを選択します。これにより、Cloud Connector がインターネットに直接アクセスできない場合でも、AWS 接続が適切に機能するようになります。
- 接続名を入力し、次へをクリックします。
- 仮想マシンの場所ページで、VM をプロビジョニングする場所を指定します。新しい VM を作成するためのクラウドリージョン、VPC、およびアベイラビリティーゾーン (またはローカルゾーン) を選択します。
-
ネットワークページで:
- アベイラビリティーゾーン (またはローカルゾーン) で以前に選択したリソースの名前を入力します。
- 前のメニューで構成した VPC 内の 1 つ以上のサブネットを選択します。
- 概要ページが表示されるまで、残りのページをクリックします。
- 完了をクリックして、Amazon WorkSpaces Core マネージドインスタンスへのホスト接続を作成します。
重要な考慮事項
Studio を使用して接続を作成する場合:
- Citrix が AWS リソースを管理するための適切な IAM 権限を定義します。
- Citrix が AWS リソースを管理するために IAM ユーザーアクセスキーを使用する場合、API キーとシークレットキーの値を指定する必要があります。これらの値を含むキーファイルを AWS からエクスポートし、インポートできます。また、リージョン、アベイラビリティゾーン、VPC 名、サブネットアドレス、ドメイン名、セキュリティグループ名、および資格情報も指定する必要があります。
- Citrix が AWS リソースを管理するために IAM ロールを使用する場合、すべての Cloud Connector に適切な IAM 権限を持つロールを割り当てる必要があります。詳細については、ロールベース認証ガイドを参照してください。
- ルート AWS アカウントの資格情報ファイル(AWS コンソールから取得)は、標準の AWS ユーザー用にダウンロードされた資格情報ファイルと同じ形式ではありません。そのため、Citrix DaaS はこのファイルを使用して API キーとシークレットキーのフィールドに入力することはできません。AWS Identity Access Management (IAM) 資格情報ファイルを使用していることを確認してください。
- ゾーンはアベイラビリティゾーンまたはローカルゾーンのいずれかです。
PowerShell を使用した接続の作成
- PowerShell ウィンドウを開きます。
-
asnp citrix*を実行して、Citrix 固有の PowerShell モジュールをロードします。 -
次のコマンドを実行します。以下に例を示します。
$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 "AmazonWorkSpacesCoreMachineManagerFactory" -HypervisorAddress " "https://workspaces-instances.$($cloudRegion).api.aws"" -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 の名前を元の名前に戻してください。
AWS 管理トラフィックのセキュアな環境の作成
Cloud Connector にプロキシが構成されている場合、MCS による API 呼び出しがプロキシを介して適切にルーティングされるように、プロキシを使用するホスト接続を作成する必要があります。MCS は、環境内の Cloud Connector を介してネットワークトラフィック(Citrix Cloud から AWS ハイパーバイザーへの API 呼び出し)をルーティングできるようにします。
- ホスト接続は、Cloud Connector のインストール中に構成された WinHTTP システムプロキシ値を読み取ることができます。プロキシは、[Studio](#create-a-connection-using-studio) を使用して構成するか、PowerShell を使用してホスト接続を作成または更新する際にカスタムプロパティ `UseSystemProxyForHypervisorTrafficOnConnectors` を `True` に設定することで構成できます。
注:
環境でプロキシを使用している場合は、SSL インスペクションが無効になっているか、https://workspaces-instances.*.api.aws/ の SSL 接続が変更されていないことを確認してください。
プロキシが構成されたホスト接続の作成
- 1. PowerShell ウィンドウを開きます。
- 1. `asnp citrix*` を実行して、Citrix 固有の PowerShell モジュールをロードします。
-
プロキシを構成するための PowerShell コマンドを実行します。以下に例を示します。
$connectionName = "demo-hostingconnection" $cloudRegion = "us-east-1" $apiKey = "aaaaaaaaaaaaaaaaaaaa" $zoneUid = "00000000-0000-0000-0000-000000000000" $securePassword = Read-Host 'Please enter your secret key' -AsSecureString $connectionPath = "XDHyp:\Connections\" + $connectionName $customProperties = @" <CustomProperties xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.citrix.com/2014/xd/machinecreation"> <Property xsi:type="StringProperty" Name="UseSystemProxyForHypervisorTrafficOnConnectors" Value="True" /> </CustomProperties> "@ <!--NeedCopy--> -
ホスティング接続を作成します。以下に例を示します。
$connection = New-Item -Path $connectionPath ` -ConnectionType "Custom" -PluginId "AmazonWorkSpacesCoreMachineManagerFactory" ` -HypervisorAddress "<https://workspaces-instances.$($cloudRegion).api.aws>" ` -CustomProperties> $customProperties ` -Persist -Scope @()` -UserName $apiKey -SecurePassword $securePassword ` -ZoneUid $zoneUid New-BrokerHypervisorConnection -HypHypervisorConnectionUid $connection.HypervisorConnectionUid <!--NeedCopy-->
既存のホスト接続でプロキシを有効にするには、「既存の接続でプロキシを有効にする」を参照してください。
クロスアカウントプロビジョニング
Cloud Connector を別の AWS アカウント(共有サービスアカウントまたはサイトコンポーネントアカウント)に配置し、クロスアカウントアクセス(クロスアカウント IAM ロール)を持つ IAM ロールを使用し、MCS でプロビジョニングされたマシンカタログを別のセカンダリ AWS アカウント(ワークロードアカウント)に配置するユースケースがあります。この場合、別の各アカウントに追加の Cloud Connector は必要ありません。このようなシナリオをサポートするために、この機能は VPC ピアリングと IAM ロールを使用したクロスアカウントアクセスを利用して、複数の AWS アカウントを管理する企業向けに異なる AWS アカウント間でのプロビジョニングを可能にします。
VPC ピアリングを使用すると、Cloud Connector と、異なるリージョンまたはアカウントにプロビジョニングされた VM が相互に通信できるようになります。
IAM ロールを使用したクロスアカウントアクセスを使用すると、プライマリアカウント(Cloud Connector アカウント)が IAM ロールを引き受けて、セカンダリアカウント(マシンカタログ VM)内の AWS リソースにアクセスできるようになります。
- Cloud Connector がセカンダリアカウントのリソースにアクセスできるようにするには、セカンダリアカウントから IAM ロールを引き受けた後にホスト接続を作成します。
前提条件
クロスアカウントプロビジョニング用のホスト接続を作成する前に、以下を設定してください。
- VPC ピアリングを設定し、両方のリージョンまたはアカウントでセキュリティグループを構成します。「VPC ピアリングの設定」を参照してください。
- IAM ロールを使用してクロスアカウントアクセスを委任します。「IAM ロールを使用したクロスアカウントアクセスの委任」を参照してください。
VPC ピアリングの設定
- VPC A がプライマリアカウント(アカウント A)にあり、Cloud Connector と Active Directory が含まれているとします。VPC B はセカンダリアカウント(アカウント B)にあり、VM をプロビジョニングしたい場所です。
- アカウント A とアカウント B の間に VPC ピアリング接続を設定するには、次の手順を実行します。
-
VPC ピアリング接続を作成します。参照:
- VPC Aに移動し、パブリックサブネットに関連付けられているルートテーブルに移動します。
- [ルートを編集] > [ルートを追加] をクリックします。[送信先] 列にVPC BのCIDRブロックを追加し、[ターゲット] 列に作成したVPCピアリングを追加します。
- 手順2と3を繰り返しますが、VPC AとVPC Bのプライベートサブネットを使用します(VPC AのCIDRブロックを追加します)。VPCピアリング接続のルートテーブルの更新を参照してください。
- VPC Aに関連付けられているプライベートセキュリティグループに移動します。
- [アクション] を選択し、[インバウンドルールを編集] を選択します。
-
[ルールを追加] を選択します。タイプとして [すべてのトラフィック] を選択し、[ソース] 列に以下を追加します。
- 異なるリージョンの場合は、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ロールを使用したクロスアカウントアクセスでは、プライマリアカウント(Cloud Connectorアカウント)がIAMロールを引き受けて、セカンダリアカウント(マシンカタログVM)のAWSリソースにアクセスできるようにします。
- クロスアカウントリソースにアクセスするには、次の手順を実行します。
注意:
仮定として、VPC Aはプライマリアカウント(アカウントA)にあり、Cloud ConnectorとActive Directoryがあります。VPC Bはセカンダリアカウント(アカウントB)にあり、VMをプロビジョニングしたい場所です。
- 前述の手順で、アカウント間でVPCピアリングを設定します。
-
- アカウントBに、最小限のCitrix IAM権限を持つIAMロールとポリシーを作成します。IAMチュートリアル: IAMロールを使用したAWSアカウント間のアクセス委任を参照してください。このロールのARNが「arn:aws:iam::5678:role/citrix-role」であるとします。
- IAMでのクロスアカウントリソースアクセスに従って、アカウントAのロール「arn:aws:iam::1234:role/primary-account-citrix-role」からアクセスできるように、ロール「arn:aws:iam::5678:role/citrix-role」に信頼ポリシーを追加します。
- アカウントAに、前述の名前「primary-account-citrix role」でIAMロールとポリシーを作成します。これにより、IAMロールを引き受け、アカウントBからIAMロール(arn:aws:iam::5678:role/citrix-role)を渡すことができます。
- アカウントAのすべてのCloud Connectorに、ロール「arn:aws:iam::1234:role/primary-account-citrix-role」を割り当てます。
Cloud Connectorは、アカウントBのロール(「arn:aws:iam::5678:role/citrix-role」)を引き受けることができるようになりました。
クロスアカウントプロビジョニング用のホスト接続の作成
- VMをプロビジョニングしたいセカンダリアカウント(アカウントB)にホスト接続を作成します。これにより、アカウントAのCloud Connectorは、アカウント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 "AmazonWorkSpacesCoreMachineManagerFactory" -HypervisorAddress "https://workspaces-instances.$($cloudRegion).api.aws" -Persist -Scope @() -UserName $apiKey -SecurePassword $secureKey -ZoneUid $zoneUid -CustomProperties $customProperties
New-BrokerHypervisorConnection -HypHypervisorConnectionUid $connection.HypervisorConnectionUid
<!--NeedCopy-->
- ホスト接続が作成されたら、StudioまたはPowerShellを使用してホスティングユニットを作成します。ただし、VPCとネットワークを選択します。
AWS APIリクエストのCloud Connectorバイパス
Amazon WorkSpaces Coreマネージドインスタンス(MI)環境では、Citrix Machine Creation Services(MCS)プラグインは通常Delivery Controllerに常駐し、プロキシを介してCitrix Cloud Connector経由でAWS APIリクエストをルーティングします。
AWS APIリクエストのCloud Connectorをバイパスするようにホスト接続を構成できます。この機能が有効になっている場合、プラグインはプロビジョニングや電源管理などのAPI呼び出しをDDCからAWSサービス(Amazon EC2、EBS、WorkSpacesインスタンスなど)に直接行い、プロキシを介してCloud Connectorを経由する依存関係を排除します。
利点
- Cloud ConnectorへのAWS API呼び出しの依存を軽減: Cloud ConnectorへのAWS APIの依存を排除することは、オンプレミスまたはクラウドインフラストラクチャのフットプリントを削減しようとしている顧客にとって重要なステップです。
- リソース消費の削減: Cloud Connectorを介するトラフィックが減少することで、Connector VMのコンピューティング要件が削減され、コスト削減につながる可能性があります。
- 運用の柔軟性: 重要な電源管理およびプロビジョニングタスクにおける潜在的な単一障害点(Cloud Connector/NGSプロキシパス)を排除することで、高可用性を提供します。
制限事項と考慮事項
この機能を有効にする前に、次の要件と制限事項を考慮してください。
- 認証: Cloud Connectorをバイパスする場合、ロールベース認証(IAMロール)はサポートされていません。IAMユーザーアクセスキーのみを使用するように設定を構成する必要があります。
- 環境スコープ: この機能はAmazon WorkSpaces Coreマネージドインスタンス(MI)専用です。標準のAWS EC2ホスト接続ではサポートされていません。
- ネットワーク要件: DDCはAWSサービスエンドポイントへの直接ネットワークパスを持っている必要があります。
- リソースロケーションの健全性: Cloud Connectorが元々リソースロケーションにプロビジョニングされていた場合、電源をオンにしたままにする必要があります。非MCSコンポーネントとヘルスチェックは、Cloud Connectorが存在する場合、依然としてCloud Connectorに依存します。
- サポートされていない機能:
- クロスアカウントプロビジョニング
- システムプロキシの使用
- Connectorの要件: この機能はAPIの依存関係を排除しますが、Cloud Connectorへの依存を減らすために必要な他の構成があります(Cloud Connectorの要件はここに記載されているものに限定されない場合があります)。
- ドメイン参加: 非ドメイン参加またはMicrosoft Entraハイブリッド参加マシンを使用します。
- VDA登録: VDA登録のためにRendezvous V2(DDCからVDAへのWebSocket経由の直接通信)を有効にします。
APIバイパスを使用したホスト接続の作成
フル構成(Studio)でホスト接続を作成する際、そのロケーションにCloud Connectorが存在しない場合でも、Amazon WorkSpaces Coreリソースロケーションを選択できるようになりました。
PowerShell経由でバイパスを有効にするには、BypassConnectorForAwsApiRequestsカスタムプロパティを使用します。
PowerShellの例:
$custProp = '<CustomProperties xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.citrix.com/2014/xd/machinecreation">
<Property xsi:type="StringProperty" Name="BypassConnectorForAwsApiRequests" Value="true" />
</CustomProperties>'
$connectionName = "MyWSCConnection"
$cloudRegion = "us-east-1"
$apiKey = "YOUR_IAM_ACCESS_KEY"
$zoneUid = (Get-ConfigZone | Where-Object {$_.Name -eq "MyResourceLocation"}).Uid
$securePassword = Read-Host 'Enter your IAM Secret Key' -AsSecureString
$connectionPath = "XDHyp:\Connections\" + $connectionName
$connection = New-Item -Path $connectionPath `
-ConnectionType "Custom" `
-PluginId "AmazonWorkSpacesCoreMachineManagerFactory" `
-HypervisorAddress "https://workspaces-instances.$($cloudRegion).api.aws" `
-Persist -Scope @() `
-CustomProperties $custProp `
-UserName $apiKey -SecurePassword $securePassword `
-ZoneUid $zoneUid
New-BrokerHypervisorConnection -HypHypervisorConnectionUid $connection.HypervisorConnectionUid
<!--NeedCopy-->
既存の接続の管理
既存のホスト接続に対して、バイパス機能を有効または無効にできます。
- 既存の接続での有効化: 既存の接続のカスタムプロパティを修正して、
BypassConnectorForAwsApiRequests = trueを含めることができます。 - 無効化: 無効にすると、DDC は NGS プロキシを介して Cloud Connector 経由で AWS API コールのルーティングを再開します。これには、リソースロケーションで機能する Cloud Connector と NGS プロキシパスが利用可能である必要があることに注意してください。
トラブルシューティング
サポートされていない条件下でバイパスプロパティを有効にしようとすると、システムは検証エラーを返します。
-
IAMロール/クロスアカウント/プロキシ: IAMロール、クロスアカウントプロビジョニング、またはシステムプロキシと同時に有効にすると、
New-Itemコマンドは次のエラーで失敗します。AmazonWorkSpacesCoreException: Bypassing the Cloud Connector For AWS API requests is not supported for IAM roles, Cross-Account provisioning and System Proxy. <!--NeedCopy--> -
サポートされていない接続タイプ: 標準の Amazon EC2 (AWS) 接続に適用すると、システムは次のエラーで失敗します。
AmazonWorkSpacesCoreException: Bypassing the Cloud Connector For AWS API requests is not supported for EC2 host connection. <!--NeedCopy-->
接続の編集
既存のホスト接続を編集して、次の操作を行うことができます。
- Citrix がリソースを管理するための IAM 権限を提供するオプションの変更
- ホスティング接続あたりの同時アクション (または同時マシン) の最大数の変更
- スコープの変更
- PowerShell コマンドを使用して、エラスティックネットワークインターフェイス (ENI) あたりのセキュリティグループの最大数を構成
- AWS 管理トラフィックのセキュアな環境を作成するためのプロキシの有効化
IAM 権限を提供するオプションの編集
- 既存の Amazon WorkSpaces Core 接続を右クリックします。
- [接続プロパティ] ページで、[設定の編集] をクリックします。
- Citrix がリソースを管理するための IAM 権限を提供するオプションのいずれかを選択します。必要な詳細を入力し、[保存] をクリックします。
同時アクションの最大数の変更
Studio で Amazon WorkSpaces Core マネージドインスタンスのホスト接続を作成すると、次のデフォルト値が表示されます。
| オプション | 絶対値 | パーセンテージ |
|---|---|---|
| 同時アクション (すべてのタイプ) | 125 | 100 |
| 1 分あたりの新規アクションの最大数 | 150 | n/a |
| 同時プロビジョニング操作の最大数 | 150 | n/a |
MCS は、デフォルトで 150 の同時プロビジョニング操作をサポートしています。
これらの値は、[接続の編集] 画面の Citrix Studio [詳細設定] セクションにアクセスして構成できます。
または、リモート PowerShell SDK を使用して、環境ごとの最適な設定のために同時操作の最大数を設定することもできます。
PowerShell カスタムプロパティ MaximumConcurrentProvisioningOperations を使用して、同時 AWS プロビジョニング操作の最大数を指定します。
構成前:
- Cloud 用 PowerShell SDK がインストールされていることを確認します。
-
MaximumConcurrentProvisioningOperationsのデフォルト値が 150 であることを理解しておいてください。
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>' <!--NeedCopy-->この文字列は、
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 コマンドを使用して、エラスティックネットワークインターフェイス (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 が使用されます。
既存の接続でのプロキシの有効化
- PowerShell ウィンドウを開きます。
-
次のコマンドを実行します。
Add-PSSnapin citrix*. cd XDHyp:\Connections\ dir <!--NeedCopy--> - 接続から
CustomPropertiesをメモ帳にコピーし、プロキシを有効にするためにプロパティ設定<Property xsi:type="StringProperty" Name="UseSystemProxyForHypervisorTrafficOnConnectors" Value="True" />をCustomPropertiesに追加します。 -
PowerShell ウィンドウで、変更されたカスタムプロパティを変数に割り当てます。例:
$customProperty = '<CustomProperties xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.citrix.com/2014/xd/machinecreation"> <Property xsi:type="StringProperty" Name="UseSystemProxyForHypervisorTrafficOnConnectors" Value="True" /> </CustomProperties>' <!--NeedCopy--> -
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文字列を確認します。
サービスエンドポイント URL
標準ゾーンサービスエンドポイント URL
MCS を使用すると、API キーと API シークレットを持つ新しい Amazon WorkSpaces Core Managed Instances 接続が追加されます。この情報と認証済みアカウントを使用して、MCS は AWS EC2 および Amazon WorkSpaces Core Managed Instances API 呼び出しを使用して、サポートされているリージョンとゾーンについて AWS にクエリを実行します。クエリは、Workspace Instances Service Endpoint URL https://workspaces-instances.us-east-1.api.aws/ および EC2 Service Endpoint https:/ec2.us-east-1.api.aws/ を使用して行われます。
注:
https://workspaces-instances.us-east-1.api.aws/ に接続できることを確認してください。
非標準サービスエンドポイント URL
-
接続に自動的に選択された AWS サービスエンドポイント URL が不要な場合があります。そのような場合は、Citrix Cloud SDK と PowerShell を使用して、非標準のサービスエンドポイント URL を持つ接続を作成できます。たとえば、サービスエンドポイント URL
https://ec2.cn-north-1.amazonaws.com.cnを使用して接続を作成するには: -
- AWS ホスト型 Cloud Connector をセットアップし、接続性があることを確認します。
-
- Cloud Connector のリストを表示するには、次の PowerShell コマンドを実行します。
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 "Custom" -HypervisorAddress @("https://workspaces-instances.$($cloudRegion).api.aws")-PluginId "AmazonWorkSpacesCoreMachineManagerFactory" -UserName “APIkey” -Password “API Secret” -Persist PS C:\> New-BrokerHypervisorConnection -HypHypervisorConnectionUid $hyp. HypervisorConnectionUid <!--NeedCopy--> - ホスティングタブを更新して、接続が作成されたことを確認します。
- 新しい接続を使用してリソースロケーションを追加します。
必要な AWS 権限
このセクションには、AWS 権限の完全なリストが含まれています。機能が正しく動作するように、セクションに記載されている権限の完全なセットを使用してください。
注:
iam:PassRole権限は、Citrix がリソースを管理するために IAM ロールを使用する場合にのみ必要です。
ホスト接続の作成
AWS から取得した情報を使用して、新しいホスト接続が追加されます。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"ec2:DescribeAvailabilityZones",
"ec2:DescribeSubnets",
"ec2:DescribeVpcs",
"ec2:DescribeRegions",
"workspaces-instances:*"
],
"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": "*"
},
{
"Action": [
"workspaces-instances:*"
],
"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: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": "*"
},
{
"Action": [
"workspaces-instances:*"
],
"Effect": "Allow",
"Resource": "*"
}
]
}
<!--NeedCopy-->
注:
- SecurityGroupsに関連するEC2セクションは、カタログ作成時に準備VM用に分離セキュリティグループを作成する必要がある場合にのみ必要です。これが完了すると、これらの権限は不要になります。
ディスクの直接アップロードとダウンロード
以下の権限をポリシーに追加する必要があります。
ebs:StartSnapshotebs:GetSnapshotBlockebs:PutSnapshotBlockebs:CompleteSnapshotebs:ListSnapshotBlocksebs:ListChangedBlocksec2:CreateSnapshotec2:DeleteSnapshotec2:DescribeLaunchTemplates
作成されたボリュームの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-->
注:
権限は、ユーザーの判断でリソースおよび条件ブロックを含めることにより、特定のキーに制限できます。例:条件付き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権限の定義セクションで説明されているようにユーザーに適用できます。または、ホスト接続を構成する際にIAMロールを使用を選択することで、ロールベース認証を使用することもできます。
重要:
Citrixがリソースを管理するためのIAMロールを使用するには、まずクラウドコネクタのセットアップ時に、クラウドコネクタのEC2インスタンスで目的のIAMロールを構成します。Citrix Studioを使用してホスティング接続を追加し、IAMロールを使用オプションを選択します。これらの設定を持つホスティング接続は、ロールベース認証を使用します。
{
"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: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/*"
},
{
"Effect": "Allow",
"Action": [
"workspaces-instances:*"
],
"Resource": "*"
}
]
}
<!--NeedCopy-->
注:
- SecurityGroupsに関連するEC2セクションは、カタログ作成時に準備VM用に分離セキュリティグループを作成する必要がある場合にのみ必要です。これが完了すると、これらの権限は不要になります。
- KMSセクションは、EBSボリューム暗号化を使用する場合にのみ必要です。
iam:PassRole権限セクションは、Citrixがリソースを管理するためにIAMロールを使用する場合にのみ必要です。- 要件と環境に基づいて、フルアクセスではなく特定のリソースレベルの権限を追加できます。詳細については、AWSドキュメントのEC2リソースレベルの権限の解明およびAWSリソースのアクセス管理を参照してください。
ec2:CreateNetworkInterfaceおよびec2:DeleteNetworkInterface権限は、ボリュームワーカー方式を使用している場合にのみ使用してください。
次のステップ
- 準備済みイメージの作成については、Amazon WorkSpaces Coreマネージドインスタンス用の準備済みイメージの作成を参照してください。
詳細情報
- 接続とリソースの作成および管理
- AWS仮想化環境
- Amazon WorkSpaces Core GitHub PowerShellの例については、citrix-mcs-sdk-samples-Amazon WorkSpaces Coreを参照してください。