AWSクラウド環境
この記事では、Citrix Virtual Apps and Desktopsで使用できるリソースの場所としてAmazon Web Services(AWS)アカウントを設定する方法について説明します。このリソースの場所には基本的なコンポーネントセットのみが含まれており、概念実証など、リソースを複数のアベイラビリティゾーンに展開する必要のない展開に最適です。本記事のタスクの完了後、VDAのインストール、マシンのプロビジョニング、マシンカタログの作成、デリバリーグループの作成を行えます。
この記事のタスクを完了すると、リソースの場所に次のコンポーネントが追加されます:
- 単一アベイラビリティゾーン内にパブリックサブネットとプライベートサブネットを持つ仮想プライベートクラウド(VPC)。
- VPCのプライベートサブネットに配置され、Active DirectoryドメインコントローラーとDNSサーバーの両方として実行されるインスタンス
- VPCのプライベートサブネットに配置され、Citrix Cloud Connectorがインストールされた2つのドメイン参加済みインスタンス
- VPCのパブリックサブネットに配置され、要塞ホストとして機能するインスタンス。このインスタンスは、管理目的でプライベートサブネット内のインスタンスへのRDP接続を開始するために使用されます。リソースの場所の設定が完了したら、このインスタンスをシャットダウンし、アクセスできないようにしてもかまいません。プライベートサブネット内の他のインスタンス(VDAインスタンスなど)を管理する必要性が生じた場合に、このインスタンスを再起動できます。
タスクの概要
パブリックサブネットとプライベートサブネットを持つ仮想プライベートクラウド(VPC)の設定。このタスクを完了すると、パブリックサブネット内のElastic IPアドレスを持つNATインスタンスがAWSによって展開されます。これにより、プライベートサブネット内のインスタンスからインターネットにアクセスできるようになります。パブリックサブネット内のインスタンスが受信パブリックトラフィックにアクセスできるようになりますが、プライベートサブネット内のインスタンスはアクセスできません。
セキュリティグループの構成。セキュリティグループは、VPC内のインスタンスのトラフィックを制御する仮想ファイアウォールとして機能します。セキュリティグループにルールを追加することで、パブリックサブネット内のインスタンスがプライベートサブネット内のインスタンスと通信できるようになります。また、これらのセキュリティグループをVPC内の各インスタンスに関連付けることもできます。
DHCPオプションセットの作成。Amazon VPCではデフォルトでDHCPサービスとDHCPサービスが提供されるため、Active DirectoryドメインコントローラーのDNSの構成方法が変わります。AmazonのDHCPを無効にすることはできません。またAmazonのDNSは、Active Directoryの名前解決には使用できず、パブリックDNS解決にのみ使用できます。DHCP経由でインスタンスに渡すドメインサーバーとネームサーバーを指定するため、DHCPオプションセットを作成します。このセットによりActive Directoryドメインサフィックスを割り当てて、VPC内のすべてのインスタンスにDNSサーバーを指定します。ドメインへのインスタンスの参加時にホスト(A)レコードと逆引き参照(PTR)レコードが自動的に登録されるようにするため、プライベートサブネットに追加するインスタンスごとに、ネットワークアダプタープロパティを構成します。
VPCへの要塞ホスト、ドメインコントローラー、Citrix Cloud Connectorの追加。要塞ホストにより、プライベートサブネット内のインスタンスにログオンし、ドメインの設定、ドメインへのインスタンスの追加、Citrix Cloud Connectorのインストールを行うことができます。
タスク1:VPCを設定する
- AWSマネジメントコンソールで [VPC] を選択します。
- VPCダッシュボードで、[Start VPC Wizard]を選択します。
- [VPC with Public and Private Subnets] を選択して [Select] を選択します。
- VPC名を入力し、必要に応じてIP CIDRブロックとパブリックサブネットおよびプライベートサブネットのIP範囲を変更します。
- NATゲートウェイを選択している場合は、[Use NAT Instance instead]を選択します。
- NATインスタンスの場合は、使用するインスタンスの種類とキーペアを指定します。キーペアを指定することで、以後インスタンスへ安全に接続できるようになります。
- [Enable DNS hostnames]では、[Yes] が選択されたままにします。
- [Create VPC] を選択します。AWSにより、パブリックサブネット、プライベートサブネット、インターネットゲートウェイ、ルートテーブル、デフォルトのセキュリティグループが作成されます。
注:
AWSコンソールでAWS仮想プライベートクラウド(VPC)の名前を変更すると、Citrix Cloudの既存のホスティングユニットが破損します。ホスティングユニットが破損している場合、カタログを作成したり、既存のカタログにマシンを追加したりすることはできません。既知の問題から:PMCS-7701
タスク2:セキュリティグループを構成する
このタスクでは、VPC用に次のセキュリティグループを作成して構成します:
- NATインスタンス用のセキュリティグループ
- パブリックサブネット内のインスタンスを関連付ける、パブリックセキュリティグループ
- プライベートサブネット内のインスタンスを関連付ける、プライベートセキュリティグループ
セキュリティグループを作成するには
- VPCダッシュボードで、[Security Groups]を選択します。
- NATインスタンス用のセキュリティグループを作成する[Create Security Group] を選択し、グループの名前タグと説明を入力します。[VPC]では、先ほど作成したVPCを選択します。[Yes, Create] を選択します。
- 手順2を繰り返して、パブリックセキュリティグループとプライベートセキュリティグループを作成します。
NATセキュリティグループを構成する
-
セキュリティグループの一覧で、先ほど作成したNATセキュリティグループを選択します。
-
[Inbound Rules] タブを選択し、[Edit]を選択して次のルールを作成します:
種類 接続元 すべてのトラフィック プライベートセキュリティグループを選択します。 22(SSH) 0.0.0.0/0 -
最後に [Save] を選択します。
パブリックセキュリティグループを構成する
-
セキュリティグループの一覧で、先ほど作成したパブリックセキュリティグループを選択します。
-
[Inbound Rules] タブを選択し、[Edit]を選択して次のルールを作成します:
種類 接続元 すべてのトラフィック プライベートセキュリティグループを選択します。 すべてのトラフィック パブリックセキュリティグループを選択します。 ICMP 0.0.0.0/0 22(SSH) 0.0.0.0/0 80(HTTP) 0.0.0.0/0 443(HTTPS) 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 -
最後に [Save] を選択します。
-
[Outbound Rules] タブを選択し、[Edit]を選択して次のルールを作成します:
種類 接続先 すべてのトラフィック プライベートセキュリティグループを選択します。 すべてのトラフィック 0.0.0.0/0 ICMP 0.0.0.0/0 -
最後に [Save] を選択します。
プライベートセキュリティグループを構成する
-
セキュリティグループの一覧で、先ほど作成したプライベートセキュリティグループを選択します。
-
パブリックセキュリティグループからのトラフィックを設定していない場合は、TCPポートを設定する必要があります。[Inbound Rules] タブを選択し、[Edit] を選択して次のルールを作成します:
種類 接続元 すべてのトラフィック NATセキュリティグループを選択します。 すべてのトラフィック プライベートセキュリティグループを選択します。 すべてのトラフィック パブリックセキュリティグループを選択します。 ICMP パブリックセキュリティグループを選択します。 TCP 53(DNS) パブリックセキュリティグループを選択します。 UDP 53(DNS) パブリックセキュリティグループを選択します。 80(HTTP) パブリックセキュリティグループを選択します。 TCP 135 パブリックセキュリティグループを選択します。 TCP 389 パブリックセキュリティグループを選択します。 UDP 389 パブリックセキュリティグループを選択します。 443(HTTPS) パブリックセキュリティグループを選択します。 TCP 1494(ICA/HDX) パブリックセキュリティグループを選択します。 TCP 2598(セッション画面の保持) パブリックセキュリティグループを選択します。 3389(RDP) パブリックセキュリティグループを選択します。 TCP 49152~65535 パブリックセキュリティグループを選択します。 -
最後に [Save] を選択します。
-
[Outbound Rules] タブを選択し、[Edit]を選択して次のルールを作成します:
種類 接続先 すべてのトラフィック プライベートセキュリティグループを選択します。 すべてのトラフィック 0.0.0.0/0 ICMP 0.0.0.0/0 UDP 53(DNS) 0.0.0.0/0 -
最後に [Save] を選択します。
タスク3:NATインスタンスをNATセキュリティグループに関連付ける
- AWSマネジメントコンソールで [EC2] を選択します。
- EC2ダッシュボードで [Instances] を選択します。
- 先ほど作成したNATインスタンスを選択して、[Actions]>[Networking]>[Change Security Groups] の順に選択します。
- デフォルトのセキュリティグループのチェックボックスをオフにします。
- 先ほど作成したNATセキュリティグループを選択し、[Assign Security Groups] を選択します。
タスク4:インスタンスを起動する
次の手順では、EC2インスタンスを4つ作成し、Amazonで生成されたデフォルトの管理者パスワードの暗号化を解除します。
-
AWSマネジメントコンソールで [EC2] を選択します。
-
EC2ダッシュボードで [Launch Instance] を選択します。
-
Windows Serverマシンのイメージとインスタンスの種類を選択します。
-
[Configure Instance Details]ページで、インスタンスの名前を入力し、先ほど設定したVPCを選択します。
-
[Subnet] で、各インスタンスに対して次の選択を行います:
- Bastion host:パブリックサブネットを選択します。
- Domain controller and Connectors:プライベートサブネットを選択します。
-
[Auto-assign Public IP address] で、各インスタンスに対して次の選択を行います:
- Bastion host:[Enable]を選択します。
- Domain controller and Connectors:[Use default setting] または [Disable] を選択します。
-
[Network Interfaces] で、ドメインコントローラーインスタンスとCloud Connectorインスタンスに、プライベートサブネットのIP範囲に含まれるプライマリIPアドレスを入力します。
-
[Add Storage]ページで、必要に応じてディスクサイズを変更します。
-
[Tag Instance]ページで、各インスタンスにわかりやすい名前を入力します。
-
[Configure Security Groups]ページで、[Select an existing security group] を選択し、インスタンスごとに次の選択を行います:
- Bastion host:パブリックセキュリティグループを選択します。
- Domain controller and Cloud Connectors:プライベートセキュリティグループを選択します。
-
選択した内容を確認し、[Launch] を選択します。
-
新しいキーペアを作成するか、既存のキーペアを選択します。新しいキーペアを作成する場合は、秘密キー(.pem)ファイルをダウンロードして安全な場所に保管します。インスタンスのデフォルトの管理者パスワードを取得するときに、この秘密キーを提供する必要があります。
-
[Launch Instances] を選択してから [View Instances] を選択し、インスタンスの一覧を表示します。新しく起動したインスタンスがすべての状態チェックに合格するまで待ってから、インスタンスにアクセスします。
-
各インスタンスのデフォルトの管理者パスワードを取得します:
- インスタンスの一覧で目的のインスタンスを選択し、[Connect] を選択します。
- [Get Password] を選択し、プロンプトが表示されたら秘密キー(.pem)ファイルを指定します。
- [Decrypt Password] を選択します。AWSにデフォルトのパスワードが表示されます。
-
手順2〜14を繰り返して、パブリックサブネット内の要塞ホストインスタンスと、プライベートサブネット内のドメインコントローラーと2つのCloud Connectorとして使用する3つのインスタンス(計4つのインスタンス)を作成します。
タスク5:DHCPオプションセットを作成する
-
VPCダッシュボードで [DHCP Options Sets] を選択します。
-
次の情報を入力します:
- Name tag:オプションセットのフレンドリ名を入力します。
- Domain name:ドメインコントローラーインスタンスの構成に使用する完全修飾ドメイン名を入力します。
- Domain name servers:ドメインコントローラーインスタンスに割り当てたプライベートIPアドレスと、「AmazonProvidedDNS」という文字列をカンマで区切って入力します。
- NTP servers:このフィールドは空白のままにします。
- NetBIOS name servers:ドメインコントローラーインスタンスのプライベートIPアドレスを入力します。
- NetBIOS node type:「2」と入力します。
-
[Yes, Create] を選択します。
-
新しく作成したセットをVPCに関連付けます:
- VPCダッシュボードで [Your VPCs] を選択し、先ほど設定したVPCを選択します。
- [Actions]>[Edit DHCP Options Set] の順に選択します。
- プロンプトが表示されたら、新しく作成したセットを選択して [Save] を選択します。
タスク6:インスタンスを構成する
-
RDPクライアントを使用して、要塞ホストインスタンスのパブリックIPアドレスに接続します。プロンプトが表示されたら、管理者アカウントの資格情報を入力します。
-
要塞ホストインスタンスでリモートデスクトップ接続を起動し、構成するインスタンスのプライベートIPアドレスに接続します。プロンプトが表示されたら、インスタンスの管理者アカウントの資格情報を入力します。
-
プライベートサブネット内のすべてのインスタンスに対して、DNS設定を構成します:
- [スタート]>[コントロールパネル]>[ネットワークとインターネット]>[ネットワークと共有センター]>[アダプターの設定の変更] の順に選択します。表示されたネットワーク接続をダブルクリックします。
- [プロパティ]>[インターネットプロトコルバージョン4(TCP/IPv4)]>[プロパティ] を選択します。
-
[詳細設定]>[DNS] を選択します。次の設定を有効にして [OK] を選択します:
- この接続のアドレスをDNSに登録する
- この接続のDNSサフィックスをDNS登録に使う
-
ドメインコントローラーを構成する:
- サーバーマネージャーを使用して、すべてのデフォルト機能を持つActive Directoryドメインサービスの役割を追加します。
- インスタンスをドメインコントローラーに昇格させます。昇格時には、DNSを有効にして、DHCPオプションセットの作成時に指定したドメイン名を使用します。メッセージに従ってインスタンスを再起動します。
-
最初のCloud Connectorを構成する:
- インスタンスをドメインに参加させ、プロンプトが表示されたら再起動します。要塞ホストインスタンスから、RDPを使用してインスタンスに再び接続します。
- Citrix Cloudにサインインします。左上のメニューで、[リソースの場所]を選択します。
- Cloud Connectorをダウンロードします。
- プロンプトが表示されたら、
cwcconnector.exe
ファイルを実行してCitrix Cloudの資格情報を入力します。ウィザードの指示に従って操作します。 - ウィザードが完了したら、[更新]を選択して[リソースの場所]ページを表示します。Cloud Connectorが登録されると、インスタンスがページに表示されます。
-
手順5を繰り返して、2番目のCloud Connectorを構成します。
接続の作成
Studioから接続を作成する場合:
- APIキーと秘密キーの値を指定する必要があります。AWSでこれらの値を含んでいるキーファイルをエクスポートしてから、値をインポートすることができます。また、リージョン、アベイラビリティゾーン、仮想プライベートクラウド名、サブネットアドレス、ドメイン名、セキュリティグループ名、および資格情報も必要になります。
- AWSコンソールから取得するルートAWSアカウント用の資格情報ファイルでは、標準的なAWSユーザーのものとは異なる形式が使用されています。このため、このファイルをCitrix Virtual Apps and Desktops管理コンソールで、APIキーと秘密キーの情報を入力するために使用することはできません。AWS Identity Access Management(IAM)形式の資格情報ファイルを使用してください。
注:
接続を作成した後、APIキーと秘密キーを更新しようとすると失敗することがあります。この問題を解決するには、プロキシサーバーまたはファイアウォールの制限を確認し、次のアドレスに接続できることを確認してください:
https://*.amazonaws.com
。
ホスト接続のデフォルト値
AWSクラウド環境のホスト接続を作成すると、次のデフォルト値が表示されます:
| オプション | 絶対 | パーセンテージ | |— | — | —| | 同時操作(すべての種類) | 125 | 100 | | 1分あたりの最大新規操作 | 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を設定または変更することはできなくなります。
非標準のサービスエンドポイント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
“APISecret”-Persist
PS C:\> New-BrokerHypervisorConnection -HypHypervisorConnectionUid $hyp. HypervisorConnectionUid
- [構成]>[ホスト] タブを更新して、EC2接続が作成されたことを確認します。
- 新しい接続を使用して、リソースの場所を追加します。
AWSテナント
AWSには、共有テナント(デフォルトタイプ)と専用テナントのテナントオプションが用意されています。共有テナントの場合、さまざまな顧客の複数のAmazon EC2インスタンスが同じ物理ハードウェア上に存在する可能性があります。専用テナントの場合、EC2インスタンスは、ユーザーが展開したほかのインスタンスを含むハードウェア上のみで実行されます。ほかの顧客は同じハードウェアを使用しません。
PowerShellを使用して、MCSでAWS専用のホストをプロビジョニングすることができます。
PowerShellを使用したAWS専用ホストテナントの構成
PowerShellで定義されたホストテナントを持つマシンのカタログを作成できます。
Amazon [EC2] 専用ホストは、完全に専用の [EC2] インスタンス容量を搭載した物理サーバーです。既存のソケット単位またはVM単位のソフトウェアライセンスを使用することができます。
専用ホストには、インスタンスの種類に基づいて使用率が事前に設定されています。たとえば、C4ラージインスタンスタイプの1つの割り当てられた専用ホストは、16個のインスタンスの実行に限定されます。詳しくは、AWSのサイトを参照してください。
AWSホストへのプロビジョニングの要件は次のとおりです:
- インポートされたBYOL(ライセンス持ち込み)のイメージ(AMI)。専用ホストでは、既存のライセンスを使用および管理します。
- プロビジョニング要求を満たすのに十分な使用率を持つ専用ホストの割り当て。
- 自動配置を有効にします。
PowerShellを使用してAWSの専用ホストにプロビジョニングするには、TenancyTypeパラメーターをHostに設定したNew-ProvSchemeコマンドレットを使用します。
詳しくは、Citrix開発者向けドキュメントを参照してください。
AWSインスタンスプロパティのキャプチャ
AWSでMachine Creation Services(MCS)を使用してマシンをプロビジョニングするカタログを作成する場合、このカタログのマスター/ゴールデンイメージに相当するAMIを選択します。MCSは、このAMIからディスクのスナップショットを使用します。以前のリリースでは、マシンに役割やタグが必要な場合AWSコンソールを使用して個別に設定していました。 この機能はデフォルトで有効になっています。
ヒント:
AWSインスタンスプロパティキャプチャを使用するには、AMIに関連付けられたVMが必要です。
このプロセスを改善するために、MCSはAMIが作成されたインスタンスからプロパティを読み取り、マシンのIDアクセス管理(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環境を使用するサービスを展開します。AWSでMCSを使用してマシンをプロビジョニングするカタログを作成する場合、このカタログのゴールデンイメージとして機能するAMIを選択します。
重要:
インスタンスプロパティと起動テンプレートをキャプチャしてカタログを作成することは、運用リソースのタグ付けに必要です。
AWSカタログを作成するには、最初にゴールデンイメージとして使用するインスタンスのAMIを作成する必要があります。MCSは、そのインスタンスからタグを読み取り、起動テンプレートに組み込みます。起動テンプレートタグは、AWS環境で作成されたすべてのCitrixリソースに適用されます。これには以下が含まれます:
- 仮想マシン
- VMディスク
- VMネットワークインターフェイス
- S3バケット
- S3オブジェクト
- 起動テンプレート
- AMI
運用リソースのタグ付け
PowerShellを使用してリソースにタグを付けるには、次の手順を実行します:
- DDCホストからPowerShellウィンドウを開きます。
- コマンド
asnp citrix
を実行し、Citrix固有のPowerShellモジュールをロードします。
プロビジョニングされた仮想マシンのリソースにタグを付けるには、新しいカスタムプロパティAwsOperationalResourcesTagging
を使用します。以下はこのプロパティの構文です:
New-ProvScheme -CustomProperties “AwsCaptureInstanceProperties,true; AwsOperationalResourcesTagging,true” …<standard provscheme parameters>
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] を選択してユーザーのグループを完了します。グループ内のユーザーには、Citrix DaaSに必要なアクションのみを実行するためのアクセス権限が付与されます。
重要:
上記の例で提供されているポリシーテキストを使用して、Citrix DaaSが特定のリソースに限定せずにAWSアカウント内でアクションを実行するために使用するアクションを一覧表示します。Citrixでは、この例はテスト目的で使用することをお勧めします。実稼働環境では、リソースにさらに制限を加えることを選択できます。
IAMアクセス許可の追加
AWSマネジメントコンソールの [IAM] セクションで、アクセス許可を設定します:
- [Summary] パネルで [Permissions] タブを選択します。
- [Add permissions] を選択します。
[Add Permissions to] 画面でアクセス許可を付与します:
以下は[JSON] タブの例です:
ヒント:
JSONの例には、環境に対するすべての権限が含まれているとは限らないことに注意してください。詳しくは、「AWSでCitrix Virtual Apps and Desktopsを実行するIDアクセス管理の権限を定義する方法」を参照してください。
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: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: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: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: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: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-->
注:
- SecurityGroupsに関連するEC2セクションは、カタログの作成中に準備VM用に分離セキュリティグループを作成する必要がある場合にのみ必要です。これが行われると、これらの権限は必要ありません。
- EBSボリューム暗号化を使用している場合は、KMSセクションのみが必要です。
- iam:PassRole権限セクションは、role_based_authでのみ必要です。
- 要件と環境に基づいて、フルアクセス権限の代わりに、特定のリソースレベルのアクセス権限を追加できます。詳しくは、AWSドキュメントの「Demystifying EC2 Resource-Level Permissions」と「AWSリソースのアクセス管理」を参照してください。