Citrix DaaS

AWSクラウド環境

この記事では、Citrix DaaS(旧称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を設定する

  1. AWSマネジメントコンソールで [VPC] を選択します。
  2. VPCダッシュボードで、[Start VPC Wizard]を選択します。
  3. [VPC with Public and Private Subnets][Select] の順に選択します。
  4. VPC名を入力し、必要に応じてIP CIDRブロックとパブリックサブネットおよびプライベートサブネットのIP範囲を変更します。
  5. NATゲートウェイを選択している場合は、[Use NAT Instance instead]を選択します。
  6. NATインスタンスの場合は、使用するインスタンスの種類とキーペアを指定します。キーペアを指定することで、以後インスタンスへ安全に接続できるようになります。
  7. [Enable DNS hostnames]では、[Yes] が選択されたままにします。
  8. [Create VPC] を選択します。AWSにより、パブリックサブネット、プライベートサブネット、インターネットゲートウェイ、ルートテーブル、デフォルトのセキュリティグループが作成されます。

注:

AWSコンソールでAWS仮想プライベートクラウド(VPC)の名前を変更すると、Citrix Cloudの既存のホスティングユニットが破損します。ホスティングユニットが破損している場合、カタログを作成したり、既存のカタログにマシンを追加したりすることはできません。既知の問題から:PMCS-7701

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

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

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

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

  1. VPCダッシュボードで、[Security Groups]を選択します。
  2. NATインスタンス用のセキュリティグループを作成する[Create Security Group] を選択し、グループの名前タグと説明を入力します。[VPC]では、先ほど作成したVPCを選択します。[Yes, Create] を選択します。
  3. 手順2を繰り返して、パブリックセキュリティグループとプライベートセキュリティグループを作成します。

NATセキュリティグループを構成する

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

  2. [Inbound Rules] タブを選択し、[Edit] を選択して次の規則を作成します:

    種類 接続元
    すべてのトラフィック プライベートセキュリティグループを選択します。
    22(SSH) 0.0.0.0/0
  3. 最後に [Save] を選択します。

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

  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] を選択して次のルールを作成します:

    種類 接続元
    すべてのトラフィック 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 パブリックセキュリティグループを選択します。
  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:NATインスタンスをNATセキュリティグループに関連付ける

  1. AWSマネジメントコンソールで [EC2] を選択します。
  2. EC2ダッシュボードで [Instances] を選択します。
  3. 先ほど作成したNATインスタンスを選択して、[Actions]>[Networking]>[Change Security Groups] の順に選択します。
  4. デフォルトのセキュリティグループのチェックボックスをオフにします。
  5. 先ほど作成したNATセキュリティグループを選択し、[Assign Security Groups] を選択します。

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

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

  1. AWSマネジメントコンソールで [EC2] を選択します。

  2. EC2ダッシュボードで [Launch Instance] を選択します。

  3. Windows Serverマシンのイメージとインスタンスの種類を選択します。

  4. [Configure Instance Details]ページで、インスタンスの名前を入力し、先ほど設定したVPCを選択します。

  5. [Subnet] で、各インスタンスに対して次の選択を行います:

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

    • Bastion host:[Enable]を選択します。
    • Domain controller and Connectors:[Use default setting] または [Disable] を選択します。
  7. [Network Interfaces] で、ドメインコントローラーインスタンスとCloud Connectorインスタンスに、プライベートサブネットのIP範囲に含まれるプライマリIPアドレスを入力します。

  8. [Add Storage]ページで、必要に応じてディスクサイズを変更します。

  9. [Tag Instance]ページで、各インスタンスにわかりやすい名前を入力します。

  10. [Configure Security Groups]ページで、[Select an existing security group] を選択し、インスタンスごとに次の選択を行います:

    • Bastion host:パブリックセキュリティグループを選択します。
    • Domain controller and Cloud Connectors:プライベートセキュリティグループを選択します。
  11. 選択した内容を確認し、[Launch] を選択します。

  12. 新しいキーペアを作成するか、既存のキーペアを選択します。新しいキーペアを作成する場合は、秘密キー(.pem)ファイルをダウンロードして安全な場所に保管します。インスタンスのデフォルトの管理者パスワードを取得するときに、この秘密キーを提供する必要があります。

  13. [Launch Instances] を選択してから [View Instances] を選択し、インスタンスの一覧を表示します。新しく起動したインスタンスがすべての状態チェックに合格するまで待ってから、インスタンスにアクセスします。

  14. 各インスタンスのデフォルトの管理者パスワードを取得します:

    1. インスタンスの一覧で目的のインスタンスを選択し、[Connect] を選択します。
    2. [Get Password] を選択し、プロンプトが表示されたら秘密キー(.pem)ファイルを指定します。
    3. [Decrypt Password] を選択します。AWSにデフォルトのパスワードが表示されます。
  15. 手順2〜14を繰り返して、パブリックサブネット内の要塞ホストインスタンスと、プライベートサブネット内のドメインコントローラーと2つのCloud Connectorとして使用する3つのインスタンス(計4つのインスタンス)を作成します。

タスク5: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] を選択します。

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

  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オプションセットの作成時に指定したドメイン名を使用します。メッセージに従ってインスタンスを再起動します。
  5. 最初のCloud Connectorを構成する:

    1. インスタンスをドメインに参加させ、プロンプトが表示されたら再起動します。要塞ホストインスタンスから、RDPを使用してインスタンスに再び接続します。
    2. Citrix Cloudにサインインします。左上のメニューで、[リソースの場所]を選択します。
    3. Cloud Connectorをダウンロードします。
    4. プロンプトが表示されたら、cwcconnector.exeファイルを実行してCitrix Cloudの資格情報を入力します。ウィザードの指示に従って操作します。
    5. ウィザードが完了したら、[更新]を選択して[リソースの場所]ページを表示します。Cloud Connectorが登録されると、インスタンスがページに表示されます。
  6. 手順5を繰り返して、2番目のCloud Connectorを構成します。

接続の作成

完全な構成インターフェイスから接続を作成する場合:

  • 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  
最大同時プロビジョニング操作 100  

MCSは、デフォルトで最大100の同時プロビジョニング操作をサポートします。

これらの値は、Citrix Studioの [接続の編集] 画面の [詳細設定] セクションで構成できます:

Identity and Access Management(IAM)

MCSは、デフォルトで最大100の同時操作をサポートします。または、Remote PowerShell SDKを使用して、環境ごとに最適な同時操作の最大数を設定することもできます。

PowerShellカスタムプロパティMaximumConcurrentProvisioningOperationsを使用して、同時AWSプロビジョニング操作の最大数を指定します。

構成前:

  • PowerShell SDK for Cloudがインストールされていることを確認してください。
  • MaximumConcurrentProvisioningOperationsのデフォルト値は100であることに留意してください。

MaximumConcurrentProvisioningOperations値をカスタマイズするには、次の手順を実行します:

  1. PowerShellウィンドウを開きます。
  2. asnp citrix*を実行し、Citrix固有のPowerShellモジュールをロードします。
  3. cd xdhyp:\Connections\」を入力します。
  4. dirを入力して、接続を一覧表示します。
  5. カスタムプロパティ文字列を変更または初期化します:

    • カスタムプロパティ文字列に値がある場合は、カスタムプロパティをメモ帳にコピーします。次に、MaximumConcurrentProvisioningOperationsプロパティを希望の値に変更します。1〜1000の範囲の値を入力できます。 例:<Property xsi:type="IntProperty" Name="MaximumConcurrentProvisioningOperations" Value="xyz"/>

    • カスタムプロパティ文字列が空またはnullの場合、スキーマとMaximumConcurrentProvisioningOperationsプロパティの両方に適切な構文を入力して、文字列を初期化する必要があります。

  6. 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プロパティをニーズに合った値に設定する必要があります。

  7. Get-XDAuthenticationと入力すると、資格情報の入力を求められます。
  8. $cred = Get-Credentialを実行すると、パスワードのみ(または名前とパスワード)の入力を求められる場合があります。また、アプリケーションIDと関連するシークレットの入力を求められる場合があります。役割ベースの認証を使用する接続の場合、role_based_authは名前とパスワードの両方です。それ以外の場合は、AWS API IDとシークレットを入力します。
  9. set-item -PSPath 'XDHyp:\Connections<connection-name>' -CustomProperties $customProperties -username $cred.username -Securepassword $cred.passwordを実行します。<connection-name>に接続名を設定する必要があります。
  10. dirを入力して、更新されたCustomProperties文字列を確認します。

サービスエンドポイント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を使用して接続を作成するには:

  1. AWSがホストするCloud Connectorをセットアップし、接続できることを確認します。
  2. 以下のPowerShellコマンドを実行して、Cloud Connectorの一覧を表示します。

     PS C:> asnp citrix.*
     PS C:> Get-XDAuthentication
     PS C:> Get-ConfigEdgeServer
    <!--NeedCopy-->
    
  3. 新しく作成されたCloud ConnectorからZoneUidを見つけて、以下のPowerShellコマンドに入力します。イタリック体の項目をそれぞれの値に置き換えます。

    PS C:\> $hyp= New-Item -Path xdhyp:\Connections -ZoneUidZoneUid-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

  4. [完全な構成]>[ホスト] タブを更新して、EC2接続が作成されたことを確認します。
  5. 新しい接続を使用して、リソースの場所を追加します。

AWSテナント

AWSには、共有テナント(デフォルトタイプ)と専用テナントのテナントオプションが用意されています。共有テナントの場合、さまざまな顧客の複数のAmazon EC2インスタンスが同じ物理ハードウェア上に存在する可能性があります。専用テナントの場合、EC2インスタンスは、ユーザーが展開したほかのインスタンスを含むハードウェア上のみで実行されます。ほかの顧客は同じハードウェアを使用しません。

[完全な構成]インターフェイスまたはPowerShellを使用することで、MCSを使用してAWS専用ホストをプロビジョニングできます。

完全な構成インターフェイスを使用したAWS専用ホストテナントの構成

MCSを使用してカタログを作成し、AWSでマシンをプロビジョニングすると、[マシンカタログのセットアップ]>[セキュリティ] ページには以下のオプションが表示されます:

  • 共有されているハードウェアを使用する。この設定は、一般的な環境に適しています。複数の顧客が相互に通信していなくても、ハードウェアを共有します。共有ハードウェアの使用は、Amazon EC2インスタンスを実行するための最も安価なオプションです。

  • 専用のホストを使用する。Amazon EC2専用ホストは、完全に専用のEC2インスタンス容量を搭載した物理サーバーです。既存のソケット単位またはVM単位のソフトウェアライセンスを使用することができます。専用ホストには、インスタンスの種類に基づいて使用率が事前に設定されています。たとえば、C4ラージインスタンスタイプの1つの割り当てられた専用ホストは、16個のインスタンスの実行に限定されます。詳しくは、AWSのサイトを参照してください。

    AWSホストへのプロビジョニングの要件は次のとおりです:

    • インポートされたBYOL(ライセンス持ち込み)のイメージ(AMI)。専用ホストでは、既存のライセンスを使用および管理します。
    • プロビジョニング要求を満たすのに十分な使用率を持つ専用ホストの割り当て。
    • 自動配置の有効化。

    この設定は、ライセンス制限やセキュリティ要件により、専用ホストを使用する必要がある展開に適しています。専用のホストを使用すると、物理ホスト全体を所有することになり、時間単位で課金されます。ホストを所有すると、追加料金なしで、そのホストが許可する数のEC2インスタンスをスピンアップできます。

    または、PowerShellを使用してAWS専用のホストをプロビジョニングすることもできます。これを行うには、Hostに設定したTenancyTypeパラメーターを付けたNew-ProvSchemeコマンドレットを使用します。詳しくは、Citrix開発者向けドキュメントを参照してください。

  • 専用のインスタンスを使用する。この設定は、特定のセキュリティまたはコンプライアンス要件を満たす必要がある環境に適しています。専用のインスタンスを使用すると、ホストをほかの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カタログを作成するには、AMIの作成に使用されたEC2インスタンスを削除しないでください。

AWSインスタンスプロパティのキャプチャ

この機能は、AWSホスト接続でプロビジョニングスキーム作成時にカスタムプロパティAwsCaptureInstancePropertiesを指定することで使用できます:

New-ProvScheme -CustomProperties “AwsCaptureInstanceProperties,true” …<standard provscheme parameters

詳しくは、Citrix開発者向けドキュメントを参照してください。

完全な構成インターフェイスでのAWSインスタンスのプロパティの適用および運用リソースのタグ付け

MCSを使用してAWSでマシンをプロビジョニングするカタログを作成する場合、IAMの役割とタグのプロパティをそれらのマシンに適用するかを制御できます。マシンタグを運用リソースに適用するかを制御することもできます。次の2つのオプションが使用できます:

AWSのマシンタグとテンプレートのプロパティ

  • マシンテンプレートのプロパティを仮想マシンに適用する
    • 選択したマシンテンプレートに関連付けられたIAMの役割とタグのプロパティを、このカタログ内の仮想マシンに適用するかを制御します。
  • 運用リソースにマシンタグを適用する
    • マシンのプロビジョニングを容易にするマシンタグをAWS環境で作成された項目に適用するかを制御します。カタログ作成の副産物として運用リソースが作成されます。運用リソースには、準備VMインスタンスやAMIなどの一時的なリソースと永続的なリソースの両方が含まれます。

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用に分離セキュリティグループを作成する必要がある場合にのみ必要です。これが行われると、これらの権限は必要ありません。
  • ボリュームワーカーメソッドを使用している場合のみ、ec2:CreateNetworkInterface権限、およびec2:DeleteNetworkInterface権限を使用します。

ディスクの直接アップロードとダウンロード

ディスクの直接アップロードは、マシンカタログプロビジョニングのボリュームワーカー要件をなくし、代わりに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:GenerateDataKey",
                 "kms:ReEncryptTo",
                 "kms:ReEncryptFrom"
            ],
            "Resource": "*"
        }
    ]
}
<!--NeedCopy-->

注:

ResourceとConditionのブロックを含めることにより、ユーザーの裁量で権限を特定のキーに制限できます。たとえば、Conditionを使用したKMS権限

{
     "Version": "2012-10-17",
     "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                 "kms:CreateGrant",
                 "kms:Decrypt",
                 "kms:DescribeKey",
                 "kms:GenerateDataKeyWithoutPlainText",
                 "kms:GenerateDataKey",
                 "kms:ReEncryptTo",
                 "kms:ReEncryptFrom"
            ],
            "Resource": [
                "arn:aws:kms:us-east-2:123456789012:key/abcd1234-a123-456d-a12b-a123b4cd56ef"
            ],
            "Condition": {
                "Bool": {
                    "kms:GrantIsForAWSResource": true
                }
            }
        }
    ]
}
<!--NeedCopy-->

以下のキーポリシーステートメントは、アカウントがIAMポリシーを使用してKMSキーの全操作(kms:*)の権限を委任できるようにするために必要なKMSキーのデフォルトのキーポリシー全体です。

{
"Sid": "Enable IAM policies",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:root"
},
"Action": "kms:",
"Resource": ""
}
<!--NeedCopy-->

詳しくは、AWS Key Management Service公式ドキュメントを参照してください。

IAM役割ベースの認証

以下の権限が、役割ベースの認証をサポートするために追加されています。

{
     "Version": "2012-10-17",
     "Statement": [
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::\*:role/\*"
        }
    ]
}
<!--NeedCopy-->

最低限のIAM権限ポリシー

以下のJSONは、現在サポートされているすべての機能に使用できます。このポリシーを使用して、ホスト接続の作成、VMの作成、更新、削除、および電源管理を行うことができます。 「IAM権限の定義」セクションで説明されているように、ポリシーをユーザーに適用できます。または、role_based_authセキュリティキーと秘密キーを使用して、役割ベースの認証を使用することもできます。

重要:

role_based_authを使用するには、クラウドコネクタを設定するときに、まずクラウドコネクタEC2インスタンスで目的のIAM役割を設定します。Citrix Studioを使用して、ホスティング接続を追加し、認証キーとシークレットのrole_based_authを指定します。これらの設定のホスティング接続は、役割ベースの認証を使用します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "ec2:AttachVolume",
                "ec2:AssociateIamInstanceProfile",
                "ec2:AuthorizeSecurityGroupEgress",
                "ec2:AuthorizeSecurityGroupIngress",
                "ec2:CreateImage",
                "ec2:CreateLaunchTemplate",
                "ec2:CreateNetworkInterface",
                "ec2:CreateTags",
                "ec2:CreateVolume",
                "ec2:DeleteLaunchTemplate",
                "ec2:DeleteNetworkInterface",
                "ec2:DeleteSecurityGroup",
                "ec2:DeleteSnapshot",
                "ec2:DeleteTags",
                "ec2:DeleteVolume",
                "ec2:DeregisterImage",
                "ec2:DescribeAccountAttributes",
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeIamInstanceProfileAssociations",
                "ec2:DescribeImages",
                "ec2:DescribeInstances",
                "ec2:DescribeInstanceTypes",
                "ec2:DescribeLaunchTemplates",
                "ec2:DescribeLaunchTemplateVersions",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribeRegions",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSnapshots",
                "ec2:DescribeSubnets",
                "ec2:DescribeTags",
                "ec2:DescribeVolumes",
                "ec2:DescribeVpcs",
                "ec2:DetachVolume",
                "ec2:DisassociateIamInstanceProfile",
                "ec2:RebootInstances",
                "ec2:RunInstances",
                "ec2:StartInstances",
                "ec2:StopInstances",
                "ec2:TerminateInstances"
            ],
            "Effect": "Allow",
            "Resource": "\*"
        },
        {
            "Action": [
                "ec2:AuthorizeSecurityGroupEgress",
                "ec2:AuthorizeSecurityGroupIngress",
                "ec2:CreateSecurityGroup",
                "ec2:DeleteSecurityGroup",
                "ec2:RevokeSecurityGroupEgress",
                "ec2:RevokeSecurityGroupIngress"
            ],
            "Effect": "Allow",
            "Resource": "\*"
        },
        {
            "Action": [
                "s3:CreateBucket",
                "s3:DeleteBucket",
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:PutBucketAcl",
                "s3:PutObject",
                "s3:PutBucketTagging",
                "s3:PutObjectTagging"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::citrix*"
        },
        {
            "Action": [
                "ebs:StartSnapshot",
                "ebs:GetSnapshotBlock",
                "ebs:PutSnapshotBlock",
                "ebs:CompleteSnapshot",
                "ebs:ListSnapshotBlocks",
                "ebs:ListChangedBlocks",
                "ec2:CreateSnapshot"
            ],
            "Effect": "Allow",
            "Resource": "\*"
        },
        {
            "Effect": "Allow",
            "Action": [
                 "kms:CreateGrant",
                 "kms:Decrypt",
                 "kms:DescribeKey",
                 "kms:GenerateDataKeyWithoutPlainText",
                 "kms:GenerateDataKey",
                 "kms:ReEncryptTo",
                 "kms:ReEncryptFrom"
            ],
            "Resource": "\*"
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::\*:role/\*"
        }
    ]
}
<!--NeedCopy-->

注:

  • SecurityGroupsに関連するEC2セクションは、カタログの作成中に準備VM用に分離セキュリティグループを作成する必要がある場合にのみ必要です。これが行われると、これらの権限は必要ありません。
  • EBSボリューム暗号化を使用している場合は、KMSセクションのみが必要です。
  • iam:PassRole権限セクションは、role_based_authでのみ必要です。
  • 要件と環境に基づいて、フルアクセス権限の代わりに、特定のリソースレベルのアクセス権限を追加できます。詳しくは、AWSドキュメントの「Demystifying EC2 Resource-Level Permissions」と「AWSリソースのアクセス管理」を参照してください。
  • ボリュームワーカーメソッドを使用している場合のみ、ec2:CreateNetworkInterface権限、およびec2:DeleteNetworkInterface権限を使用します。

追加情報