Citrix Virtual Apps and Desktops

AWSクラウド環境

この記事では、Citrix Virtual Apps and Desktopsで使用できるリソースの場所としてのAmazon Web Servicesアカウントを設定する方法について説明します。このリソースの場所には基本的なコンポーネントセットのみが含まれており、概念実証など、リソースを複数のアベイラビリティゾーンに展開する必要のない展開に最適です。本記事のタスクの完了後、VDAのインストール、マシンのプロビジョニング、マシンカタログの作成、デリバリーグループの作成を行えます。

この記事のタスクを完了すると、リソースの場所に次のコンポーネントが追加されます:

  • 単一アベイラビリティゾーン内にパブリックサブネットとプライベートサブネットを持つ仮想プライベートクラウド(VPC)。
  • VPCのプライベートサブネットに配置され、Active DirectoryドメインコントローラーとDNSサーバーの両方として実行されるインスタンス。
  • VPCのパブリックサブネットで踏み台ホストとして機能するインスタンス。このインスタンスは、管理目的でプライベートサブネット内のインスタンスへのRDP接続を開始するために使用されます。リソースの場所の設定が完了したら、このインスタンスをシャットダウンし、アクセスできないようにしてもかまいません。プライベートサブネット内の他のインスタンス(VDAインスタンスなど)を管理する必要性が生じた場合に、このインスタンスを再起動できます。

タスクの概要

パブリックサブネットとプライベートサブネットを持つ仮想プライベートクラウド(VPC)の設定。このタスクを完了すると、パブリックサブネット内のエラスティックIPアドレスを持つNATゲートウェイがAWSによって展開されます。この結果、プライベートサブネット内のインスタンスからインターネットにアクセスできるようになります。パブリックサブネット内のインスタンスが受信パブリックトラフィックにアクセスできるようになりますが、プライベートサブネット内のインスタンスはアクセスできません。

セキュリティグループの構成。セキュリティグループは、VPC内のインスタンスのトラフィックを制御する仮想ファイアウォールとして機能します。セキュリティグループにルールを追加することで、パブリックサブネット内のインスタンスがプライベートサブネット内のインスタンスと通信できるようになります。また、これらのセキュリティグループを仮想プライベートクラウド内の各インスタンスに関連付けることもできます。

DHCPオプションセットの作成。Amazon VPCではデフォルトでDHCPサービスとDNSサービスが提供されるため、Active DirectoryドメインコントローラーのDNSの構成方法が変わります。AmazonのDHCPを無効にすることはできません。またAmazonのDNSは、Active Directoryの名前解決には使用できず、パブリックDNS解決にのみ使用できます。DHCP経由でインスタンスに渡すドメインサーバーとネームサーバーを指定するため、DHCPオプションセットを作成します。このセットによりActive Directoryドメインサフィックスを割り当てて、VPC内のすべてのインスタンスにDNSサーバーを指定します。ドメインへのインスタンスの参加時にホスト(A)レコードと逆引き参照(PTR)レコードが自動的に登録されるようにするため、プライベートサブネットに追加するインスタンスごとに、ネットワークアダプタープロパティを構成します。

VPCに踏み台ホストとドメインコントローラーを追加。踏み台ホストにより、プライベートサブネット内のインスタンスにログオンし、ドメインの設定、ドメインへのインスタンスの追加を行うことができます。

タスク1:VPCを設定する

  1. AWSマネジメントコンソールで [VPC] を選択します。
  2. VPCダッシュボードで、[Create VPC] を選択します。
  3. [VPC and more] を選択します。
  4. [NAT gateways ($)]で [In 1 AZ] または [1 per AZ] を選択します。
  5. [DNS]オプションで [Enable DNS hostnames] が選択されたままにします。
  6. [Create VPC] を選択します。AWSにより、パブリックサブネット、プライベートサブネット、インターネットゲートウェイ、ルートテーブル、デフォルトのセキュリティグループが作成されます。

タスク2:セキュリティグループを構成する

このタスクでは、VPC用に次のセキュリティグループを作成して構成します:

  • パブリックサブネット内のインスタンスを関連付けるパブリックセキュリティグループ。
  • プライベートサブネット内のインスタンスを関連付けるプライベートセキュリティグループ。

セキュリティグループを作成するには:

  1. VPCダッシュボードで、[Security Groups] を選択します。
  2. パブリックセキュリティグループのセキュリティグループを作成します。[Create Security Group] を選択し、グループの名前タグと説明を入力します。[VPC]では、先ほど作成したVPCを選択します。[Yes, Create] を選択します。

パブリックセキュリティグループを構成する

  1. セキュリティグループの一覧で、先ほど作成したパブリックセキュリティグループを選択します。

  2. [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
  3. 完了したら、[Save] を選択します。

  4. [Outbound Rules] タブを選択し、[Edit]を選択して次のルールを作成します:

    種類 接続先
    すべてのトラフィック プライベートセキュリティグループを選択します。
    すべてのトラフィック 0.0.0.0/0
    ICMP 0.0.0.0/0
  5. 完了したら、[Save] を選択します。

プライベートセキュリティグループを構成する

  1. セキュリティグループの一覧で、先ほど作成したプライベートセキュリティグループを選択します。

  2. パブリックセキュリティグループからのトラフィックを設定していない場合は、TCPポートを設定する必要があります。[Inbound Rules] タブを選択し、[Edit] を選択して次のルールを作成します:

    種類 接続元
    すべてのトラフィック プライベートセキュリティグループを選択します。
    すべてのトラフィック パブリックセキュリティグループを選択します。
    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 パブリックセキュリティグループを選択します。
  3. 完了したら、[Save] を選択します。

  4. [Outbound Rules] タブを選択し、[Edit]を選択して次のルールを作成します:

    種類 接続先
    すべてのトラフィック プライベートセキュリティグループを選択します。
    すべてのトラフィック 0.0.0.0/0
    ICMP 0.0.0.0/0
    UDP 53(DNS) 0.0.0.0/0
  5. 完了したら、[Save] を選択します。

タスク3:インスタンスを起動する

次の手順に従い、EC2インスタンスを2つ作成し、Amazonで生成されたデフォルトの管理者パスワードの暗号化を解除します:

  1. AWSマネジメントコンソールで [EC2] を選択します。
  2. EC2ダッシュボードで [Launch Instance] を選択します。
  3. Windows Serverマシンのイメージとインスタンスの種類を選択します。
  4. [Configure Instance Details] ページで、インスタンスの名前を入力し、先ほど設定したVPCを選択します。
  5. [Subnet] で、各インスタンスに対して次の選択を行います:

    • Bastion host:パブリックサブネットを選択します
    • Domain Controller::プライベートサブネットを選択します
  6. [Auto-assign Public IP address] で、各インスタンスに対して次の選択を行います:

    • Bastion host:[Enable]を選択します。
    • Domain Controller:[Use default setting] または [Disable] を選択します。
  7. [Network Interfaces] で、ドメインコントローラーのプライベートサブネットのIP範囲に含まれるプライマリIPアドレスを入力します。
  8. 必要に応じて、[Add Storage] ページでディスクサイズを変更します。
  9. [Tag Instance] ページで、各インスタンスにわかりやすい名前を付けます。
  10. [Configure Security Groups] ページで、[Select an existing security group] を選択し、インスタンスごとに次の選択を行います:

    • Bastion host:パブリックセキュリティグループを選択します。
    • ドメインコントローラー:プライベートセキュリティグループを選択します。
  11. 選択した内容を確認し、[Launch] を選択します。
  12. 新しいキーペアを作成するか、既存のキーペアを選択します。新しいキーペアを作成する場合は、秘密キー(.pem)ファイルをダウンロードして安全な場所に保管します。インスタンスのデフォルトの管理者パスワードを取得するときに、この秘密キーを提供する必要があります。
  13. [Launch Instances] を選択してから [View Instances] を選択し、インスタンスの一覧を表示します。新しく起動したインスタンスがすべての状態チェックに合格するまで待ってから、インスタンスにアクセスします。
  14. 各インスタンスのデフォルトの管理者パスワードを取得します:

    1. インスタンスの一覧で目的のインスタンスを選択し、[Connect] を選択します。
    2. [RDP client] タブに移動し、[Get Password] を選択し、プロンプトが表示されたら秘密キー(.pem)ファイルをアップロードします。
    3. 人間が判読できるパスワードを取得するには、[Decrypt Password] を選択します。AWSにデフォルトのパスワードが表示されます。
  15. 2つのインスタンスを作成し終わるまで、手順2以降のすべてのステップを繰り返します:

    • パブリックサブネットに含まれる1つの踏み台ホストインスタンス
    • ドメインコントローラーとして使用する、プライベートサブネット内の1つのインスタンス。

タスク4:DHCPオプションセットを作成する

  1. VPCダッシュボードで [DHCP Options Sets] を選択します。

  2. 次の情報を入力します:

    • Name tag:オプションセットのフレンドリ名を入力します。
    • Domain name:ドメインコントローラーインスタンスの構成に使用する完全修飾ドメイン名を入力します。
    • Domain name servers:ドメインコントローラーインスタンスに割り当てたプライベートIPアドレスと、「AmazonProvidedDNS」という文字列をカンマで区切って入力します。
    • NTP servers:このフィールドは空白のままにします。
    • NetBIOS name servers:ドメインコントローラーインスタンスのプライベートIPアドレスを入力します。
    • NetBIOS node type:「2」と入力します。
  3. [Yes, Create] を選択します。

  4. 新しく作成したセットをVPCに関連付けます:

    1. VPCダッシュボードで [Your VPCs] を選択し、先ほど設定したVPCを選択します。
    2. [Actions]>[Edit DHCP Options Set] の順に選択します。
    3. プロンプトが表示されたら、新しく作成したセットを選択して [Save] を選択します。

タスク5:インスタンスを構成する

  1. RDPクライアントを使用して、要塞ホストインスタンスのパブリックIPアドレスに接続します。プロンプトが表示されたら、管理者アカウントの資格情報を入力します。

  2. 踏み台ホストインスタンスでリモートデスクトップ接続を起動し、構成するインスタンスのプライベートIPアドレスに接続します。プロンプトが表示されたら、インスタンスの管理者アカウントの資格情報を入力します。

  3. プライベートサブネット内のすべてのインスタンスに対して、DNS設定を構成します:

    1. [スタート]>[コントロールパネル]>[ネットワークとインターネット]>[ネットワークと共有センター]>[アダプターの設定の変更] の順に選択します。表示されたネットワーク接続をダブルクリックします。
    2. [プロパティ]>[インターネットプロトコルバージョン4(TCP/IPv4)]>[プロパティ] を選択します。
    3. [詳細設定]>[DNS] を選択します。次の設定を有効にして [OK] を選択します:

      • この接続のアドレスをDNSに登録する
      • この接続のDNSサフィックスをDNS登録に使う
  4. ドメインコントローラーを構成する:

    1. サーバーマネージャーを使用して、すべてのデフォルト機能を持つActive Directoryドメインサービスの役割を追加します。
    2. インスタンスをドメインコントローラーに昇格させます。昇格時には、DNSを有効にして、DHCPオプションセットの作成時に指定したドメイン名を使用します。メッセージに従ってインスタンスを再起動します。

接続の作成

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を設定または変更することはできなくなります。

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 Developerのドキュメントを参照してください。

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 Developerのドキュメントを参照してください。

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を使用してリソースにタグを付けるには、次の手順を実行します:

  1. DDCホストからPowerShellウィンドウを開きます。
  2. コマンド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アクセス権限ポリシーを新しいユーザーグループに適用するには、次を実行します:

  1. AWS管理コンソールにログインし、ドロップダウンリストから [IAM service] を選択します。
  2. [Create a New Group of Users] を選択します。
  3. 新しいユーザーグループの名前を入力し、[Continue] を選択します。
  4. [Permissions] ページで [Custom Policy] を選択します。[Select] を選択します。
  5. [Permissions policy] の名前を入力します。
  6. [Policy Document] セクションで、関連する権限の情報を入力します。

ポリシー情報の入力後、[Continue] を選択してユーザーのグループを完了します。グループ内のユーザーには、Citrix DaaSに必要なアクションのみを実行するためのアクセス権限が付与されます。

重要:

上記の例で提供されているポリシーテキストを使用して、Citrix DaaSが特定のリソースに限定せずにAWSアカウント内でアクションを実行するために使用するアクションを一覧表示します。Citrixでは、この例はテスト目的で使用することをお勧めします。実稼働環境では、リソースにさらに制限を加えることを選択できます。

IAMアクセス許可の追加

AWSマネジメントコンソールの [IAM] セクションで、アクセス許可を設定します:

  1. [Summary] パネルで [Permissions] タブを選択します。
  2. [Add permissions] を選択します。

Identity and Access Management(IAM)

[Add Permissions to] 画面でアクセス許可を付与します:

IAMポリシーのアクセス許可を付与する

以下は[JSON] タブの例です:

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: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: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を使用するには、まずサイトのすべてのDelivery Controllerで必要なIAM役割を構成します。Web 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: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リソースのアクセス管理」を参照してください。

追加情報