Citrix Virtual Apps and Desktops

AWS EC2への接続

接続とリソースの作成および管理では、接続を作成するウィザードについて説明しています。以下の情報は、AWSクラウド環境に固有の詳細を扱います。

  • 前提条件

AWS EC2への接続を作成する前に、次の操作を行います。

  • AWSをリソースの場所として設定を完了します。AWS仮想化環境を参照してください。
  • CitrixがAWSリソースを管理するためのIAMユーザーまたはロールのIAM権限ポリシーを定義します。

IAM権限の定義

ホスト接続を作成する前に、CitrixがAWSアカウントでリソースをプロビジョニングおよび管理するための適切な権限を付与するIAMユーザーまたはロールに対して、IAM権限ポリシーを適切に定義する必要があります。このセクションの情報を使用して、AWS上のCitrix Virtual Apps and DesktopsのIAM権限を定義します。AmazonのIAMサービスでは、複数のユーザーを持つアカウントが許可されており、それらのユーザーはさらにグループに編成できます。これらのユーザーは、アカウントに関連する操作を実行する能力を制御するために、異なる権限を持つことができます。IAM権限の詳細については、IAM JSONポリシーリファレンスを参照してください。

新しいユーザーグループにIAM権限ポリシーを適用するには:

  1. AWSマネジメントコンソールにログインし、ドロップダウンリストからIAMサービスを選択します。
  2. 新しいユーザーグループの作成を選択します。
  3. 新しいユーザーグループの名前を入力し、続行を選択します。
  4. 権限ページで、カスタムポリシーを選択し、次に選択を選択します。
  5. 権限ポリシーの名前を入力します。
  6. ポリシー ドキュメントセクションに、関連する権限を入力します。

ポリシー情報を入力した後、続行を選択して、IAM権限ポリシーのユーザーグループへの適用を完了します。グループ内のユーザーには、Citrix Virtual Apps and Desktopsに必要なアクションのみを実行する権限が付与されます。

重要:

この記事で提供されている例のポリシーテキストを使用して、Citrix Virtual Apps and Desktopsが特定のAWSアカウント内でアクションを実行するために使用するアクションを、それらのアクションを特定のリソースに制限することなくリストします。Citrixは、テスト目的でこの例を使用することをお勧めします。本番環境では、リソースに対するさらなる制限を追加することを選択できます。

  • IAM権限の追加

AWSマネジメントコンソールのIAMセクションで権限を追加します。

  1. 概要パネルで、権限タブを選択します。
  2. 権限の追加を選択します。

    Identity and Access Management (IAM)

  3. 権限の追加先画面で、権限を付与します。

    Grant permissions for IAM policies

  4. JSONセクションに、環境に必要なAWS権限を含めます。

    -  ![JSON example](/en-us/citrix-virtual-apps-desktops/media/aws-iam-json-example.png)
    

接続の作成

Amazon EC2への接続は、次の方法で作成できます。

    -  [Web Studio](#create-a-connection-using-web-studio)

注:

  • プロキシサーバーまたはファイアウォールの制限を確認し、次のアドレスに接続できることを確認してください:https://*.amazonaws.com。また、Citrix Gatewayサービス接続に記載されているすべてのアドレスに接続できることを確認してください。

  • これらに接続できない場合、ホスト接続の作成または更新が失敗する可能性があります。

Web Studioを使用した接続の作成

  1. ホスティング > 接続とリソースの追加ページに移動します。
  2. 接続ページで、以下の手順に従って接続を構成します。

    1. 新しい接続の作成を選択します。
    2. ゾーンで、AWS環境用に設定したリソースの場所を選択します。
    3. 接続タイプとしてAmazon EC2を選択します。
    4. リソースをプロビジョニングする方法のいずれかを選択します。

      • このAWSアカウントを使用してリソースをプロビジョニングするを選択する場合は、IAMユーザーアクセスキーを使用するまたはIAMロールを使用するを選択します。IAMユーザーアクセスキーの場合、CitrixがAWSアカウントのリソースを管理するための適切なIAM権限ポリシーを持つIAMユーザーのAPIキーシークレットキーを指定します。IAMロールの場合、CitrixがAWSアカウントのリソースを管理するための適切なIAM権限ポリシーを持つIAMロールがDelivery Controllerインスタンスに割り当てられていることを確認してください。詳細については、ロールベース認証ガイドを参照してください。
      • クロスアカウントアクセスを使用してリソースをプロビジョニングするを選択する場合は、アカウントAのDelivery Controllerが引き受けてプロビジョニング操作を実行する必要があるアカウントBのIAMロールのARNを指定します。
    5. 接続名を入力し、次へをクリックします。
  3. 仮想マシンの場所ページで、VMをプロビジョニングする場所を指定します。新しいVMを作成するためのクラウドリージョン、VPC、およびアベイラビリティーゾーンを選択します。
  4. ネットワークページで、次の操作を行います。

    1. 以前にアベイラビリティーゾーンまたはローカルゾーンで選択したリソースの名前を入力します。
    2. 前のメニューで構成したVPC内の1つ以上のサブネットを選択します。
  5. 概要ページまで残りのページをクリックします。
  6. 完了をクリックして、Amazon EC2へのホスト接続を作成します。

重要な考慮事項

Studioを使用して接続を作成する場合:

-  CitrixがAWSリソースを管理するための適切なIAM権限を定義します。
-  CitrixがAWSリソースを管理するためにIAMユーザーアクセスキーを使用する場合は、APIキーとシークレットキーの値を指定する必要があります。これらの値を含むキーファイルをAWSからエクスポートし、インポートできます。また、リージョン、アベイラビリティーゾーン、VPC名、サブネットアドレス、ドメイン名、セキュリティグループ名、および資格情報も指定する必要があります。
-  CitrixがAWSリソースを管理するためにIAMロールを使用する場合は、すべてのDelivery Controllerに適切なIAM権限を持つロールを割り当てる必要があります。詳細については、[ロールベース認証ガイド](https://www.citrix.com/blogs/2019/02/04/role-based-authentication-for-citrix-virtual-apps-and-desktops-in-aws/?srsltid=AfmBOorMOzQipGk-r-n__SwFPJxzmbb5HZl9mDHmlTLRLv5o4w7-uCwD)を参照してください。
-  ルートAWSアカウントの資格情報ファイル(AWSコンソールから取得)は、標準のAWSユーザー用にダウンロードされた資格情報ファイルと同じ形式ではありません。そのため、Citrix Virtual Apps and Desktopsでは、このファイルを使用してAPIキーとシークレットキーのフィールドに入力することはできません。AWS Identity Access Management(IAM)資格情報ファイルを使用していることを確認してください。
  • ゾーンは、アベイラビリティーゾーンまたはローカルゾーンのいずれかです。

PowerShell を使用した接続の作成

  1. PowerShell ウィンドウを開きます。
  2. asnp citrix* を実行して、Citrix 固有の PowerShell モジュールをロードします。
  3. 次のコマンドを実行します。以下に例を示します。

    $connectionName = "demo-hostingconnection"
    $cloudRegion = "us-east-1"
    $apiKey = "aaaaaaaaaaaaaaaaaaaa"
    $apiSecret = “bbbbb”
    -  $secureKey = ConvertTo-SecureString -String $apiSecret
    -  $zoneUid = "00000000-0000-0000-0000-000000000000"
    $connectionPath = "XDHyp:\Connections\" + $connectionName
    
    $connection = New-Item -Path $connectionPath -ConnectionType "<name of the connection>" -HypervisorAddress " "@("https://ec2.cn-north-1.amazonaws.com.cn") -Persist -Scope @() -UserName $apiKey -SecurePassword $secureKey -ZoneUid $zoneUid
    
    New-BrokerHypervisorConnection -HypHypervisorConnectionUid $connection.HypervisorConnectionUid
    
    -  $hostingUnitName = "demo-hostingunit"
    -  $availabilityzone = "us-east-1a"
    $vpcName = "Default VPC"
    $jobGroup = [Guid]::NewGuid()
    $hostingUnitPath = "XDHyp:\HostingUnits\" + $HostingUnitName
    $rootPath = $connectionPath + "\" + $vpcName + ".virtualprivatecloud\"
    $availabilityZonePath = @($rootPath + $availabilityzone + ".availabilityzone")
    $networkPaths = (Get-ChildItem $availabilityZonePath[0] | Where ObjectType -eq "Network") | Select-Object -ExpandProperty FullPath # will select all the networks in the availability zone
    
    New-Item -Path $hostingUnitPath -AvailabilityZonePath $availabilityZonePath -HypervisorConnectionName $connectionName -JobGroup $jobGroup -PersonalvDiskStoragePath @() -RootPath $rootPath -NetworkPath $networkPaths
    <!--NeedCopy-->
    

注:

ロールベース認証を使用して接続を作成するには、apiKeyapiSecretrole_based_auth として指定します。

制限事項

AWS コンソールで AWS Virtual Private Cloud (VPC) の名前を変更すると、Citrix Cloud™ 内の既存のホスティングユニットが破損します。ホスティングユニットが破損すると、カタログを作成したり、既存のカタログにマシンを追加したりできなくなります。この問題を解決するには、AWS VPC の名前を元の名前に戻します。

クロスアカウントプロビジョニング

  • Delivery Controller を別の AWS アカウント(共有サービスアカウントまたはサイトコンポーネントアカウント)に配置し、クロスアカウントアクセス(クロスアカウント IAM ロール)を持つ IAM ロールと、別のセカンダリ AWS アカウント(ワークロードアカウント)に MCS プロビジョニングされたマシンカタログを配置するユースケースがあります。この場合、個々のアカウントに追加の Delivery Controller は必要ありません。このようなシナリオをサポートするために、この機能は VPC ピアリングと IAM ロールを使用したクロスアカウントアクセスを利用して、複数の AWS アカウントを管理する企業向けに異なる AWS アカウント間でのプロビジョニングを可能にします。

VPC ピアリングを使用すると、Delivery Controller とプロビジョニングされた VM が異なるリージョンまたはアカウントに存在する場合でも、相互に通信できます。

IAM ロールを使用したクロスアカウントアクセスを使用すると、プライマリアカウント(Delivery Controller アカウント)が IAM ロールを引き受けて、セカンダリアカウント(マシンカタログ VM)の AWS リソースにアクセスできます。

Delivery Controller がセカンダリアカウントのリソースにアクセスできるようにするには、セカンダリアカウントから IAM ロールを引き受けた後にホスト接続を作成します。

前提条件

クロスアカウントプロビジョニング用のホスト接続を作成する前に、以下を設定します。

VPC ピアリングのセットアップ

VPC A がプライマリアカウント(アカウント A)にあり、Delivery Controller と Active Directory があると仮定します。VPC B はセカンダリアカウント(アカウント B)にあり、VM をプロビジョニングしたい場所です。

アカウント A とアカウント B の間に VPC ピアリング接続を設定するには、次の手順を実行します。

-  1.  VPC ピアリング接続を作成します。以下を参照してください。

-  [異なるアカウント、同じリージョン](https://docs.aws.amazon.com/vpc/latest/peering/create-vpc-peering-connection.html#different-account-same-region)
-  [異なるアカウント、異なるリージョン](https://docs.aws.amazon.com/vpc/latest/peering/create-vpc-peering-connection.html#different-account-different-region)
  1. VPC A に移動し、パブリックサブネットに関連付けられているルートテーブルに移動します。
  2. [ルートの編集] > [ルートの追加] をクリックします。[送信先] 列に VPC B の CIDR ブロックを追加し、[ターゲット] 列に作成した VPC ピアリングを追加します。
  3. 手順 2 と 3 を繰り返しますが、VPC A と VPC B のプライベートサブネットを使用します(VPC A の CIDR ブロックを追加します)。「VPC ピアリング接続のルートテーブルの更新」を参照してください。
  4. VPC A に関連付けられているプライベートセキュリティグループに移動します。
  5. [アクション] を選択し、[インバウンドルールの編集] を選択します。
  6. [ルールの追加] を選択します。タイプに [すべてのトラフィック] を選択し、[ソース] 列に以下を追加します。

    • 異なるリージョンの場合は、VPC B の CIDR ブロックを追加します。
    • 異なるアカウントだが同じリージョンの場合は、VPC B のアカウント ID とプライベートセキュリティグループ ID をスラッシュで区切って追加します(例: 123456789012/sg-1a2b3c4d)。
  7. 手順 5 から 7 を繰り返しますが、VPC B のプライベートセキュリティグループを使用します(ただし、VPC A の CIDR ブロック、または同じリージョンだが異なるアカウントの VPC A のアカウント ID とプライベートセキュリティグループ ID を追加します)。「ピアセキュリティグループを参照するためのセキュリティグループの更新」を参照してください。

注:

  • VPC ピアリング接続の作成に料金はかかりません。ただし、アベイラビリティーゾーン内の VPC ピアリングは無料ですが、複数のアベイラビリティーゾーンやリージョン間で VPC ピアリング接続を介したデータ転送には料金が発生します。「VPC ピアリング接続の料金」を参照してください。

IAM ロールを使用したクロスアカウントアクセスの委任

アカウント間で VPC ピアリングを設定した後、IAM ロールを使用してクロスアカウントアクセスを委任します。

IAM ロールを使用したクロスアカウントアクセスにより、プライマリアカウント(Delivery Controller アカウント)は IAM ロールを引き受けて、セカンダリアカウント(マシンカタログ VM)の AWS リソースにアクセスできます。

-  クロスアカウントリソースにアクセスするには、次の手順を実行します。

-  > **注意:** > > VPC A はプライマリアカウント(アカウント A)にあり、Delivery Controller と Active Directory があると仮定します。VPC B はセカンダリアカウント(アカウント B)にあり、VM をプロビジョニングしたい場所です。
  1. 前述の手順でアカウント間の VPC ピアリングを設定します。
  2. アカウント B で、最小限の Citrix IAM 権限を持つ IAM ロールとポリシーを作成します。「IAM チュートリアル: IAM ロールを使用した AWS アカウント間のアクセス委任」を参照してください。このロールの ARN が「arn:aws:iam::5678:role/citrix-role」であるとします。
  3. IAM でのクロスアカウントリソースアクセス」に従って、アカウント A のロール「arn:aws:iam::1234:role/primary-account-citrix-role」によってアクセスが許可されるように、ロール「arn:aws:iam::5678:role/citrix-role」に信頼ポリシーを追加します。
  4. アカウント A で、前述の「primary-account-citrix role」という名前の IAM ロールとポリシーを作成します。これにより、IAM ロールを引き受け、アカウント B から IAM ロール(arn:aws:iam::5678:role/citrix-role)を渡すことができます。
  5. アカウント A のすべての Delivery Controller にロール「arn:aws:iam::1234:role/primary-account-citrix-role」を割り当てます。

Delivery Controller は、アカウント B からロール(「arn:aws:iam::5678:role/citrix-role」)を引き受けることができるようになりました。

クロスアカウントプロビジョニング用のホスト接続の作成

VMをプロビジョニングするセカンダリアカウント(アカウントB)にホスト接続を作成します。これにより、アカウントAのDelivery Controllerは、アカウントBからロールを引き受けた後、アカウントBのリソースにアクセスできるようになります。

PowerShellコマンドを使用してホスト接続を作成し、次の2つのカスタムプロパティを追加します。

  • CrossAccountRoleArn: CrossAccountRoleArnプロパティを指定しない場合、通常のホスト接続が作成されます。この場合、MaximumAssumeRoleDurationInSecondsが指定されていても無視されます。
  • MaximumAssumeRoleDurationInSeconds: DurationInSecondsは900秒から3600秒の間である必要があります。デフォルトは900秒です。3600を超える値を指定した場合、DurationInSecondsは3600に設定されます。

例:

$connectionName = "cross-account-conn"
$cloudRegion = "us-east-1"
$apiKey = "role_based_auth"
$secretKey = "role_based_auth"
$zoneUid = "xxxxxx"
$secureKey = (ConvertTo-SecureString -String $secretKey -AsPlainText -Force)
$connectionPath = "XDHyp:\Connections\" + $connectionName
$customProperties = '<CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Property xsi:type="StringProperty" Name="CrossAccountRoleArn" Value="arn:aws:iam::5678:role/citrix-role" /><Property xsi:type="StringProperty" Name="MaximumAssumeRoleDurationInSeconds" Value="3600" />
"</CustomProperties>'
 
$connection = New-Item -Path $connectionPath -ConnectionType "AWS" -HypervisorAddress "https://ec2.$($cloudRegion).amazonaws.com" -Persist -Scope @() -UserName $apiKey -SecurePassword $secureKey -ZoneUid $zoneUid -CustomProperties $customProperties
 
New-BrokerHypervisorConnection -HypHypervisorConnectionUid $connection.HypervisorConnectionUid
<!--NeedCopy-->

ホスト接続が作成されたら、StudioまたはPowerShellを使用してホスティングユニットを作成します。ただし、VPCとネットワークを選択してください。

接続の編集

既存のホスト接続を編集して、次の操作を実行できます。

IAM権限提供オプションの編集

  1. 既存のAmazon EC2接続を右クリックします。
  2. 接続プロパティページで、設定の編集をクリックします。
  3. Citrixがリソースを管理するためのIAM権限を提供するオプションのいずれかを選択します。必要な詳細を入力し、保存をクリックします。

同時アクションの最大数の変更

StudioでAmazon EC2のホスト接続を作成すると、次のデフォルト値が表示されます。

オプション 絶対値 パーセンテージ
同時アクション(すべてのタイプ) 125 100
1分あたりの新規アクションの最大数 150 該当なし
同時プロビジョニング操作の最大数 100 該当なし

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

これらの値は、Citrix Studioの接続の編集画面にある詳細設定セクションにアクセスして構成します。

または、Remote PowerShell SDKを使用して、環境に応じた最適な設定のために同時操作の最大数を設定することもできます。

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

構成の前に:

  • Cloud用PowerShell SDKがインストールされていることを確認します。
  • MaximumConcurrentProvisioningOperationsのデフォルト値が100であることを理解しておいてください。

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

  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文字列を確認します。

ネットワークインターフェースあたりのセキュリティグループの構成

ホスト接続を編集する際、PowerShellコマンドを使用して、エラスティックネットワークインターフェース(ENI)あたりのセキュリティグループの最大数を構成できるようになりました。AWSセキュリティグループのクォータ値については、「セキュリティグループ」を参照してください。

ネットワークインターフェースあたりのセキュリティグループを構成するには:

  1. PowerShellウィンドウを開きます。
  2. asnp citrix* を実行して、Citrix固有のPowerShellモジュールをロードします。
  3. cd xdhyp:\Connections\ を実行します。
  4. dir を実行して、接続を一覧表示します。
  5. ネットワークインターフェイスごとにセキュリティグループを構成するには、次のPowerShellコマンドを実行します。

    Set-HypHypervisorConnectionMetadata -HypervisorConnectionName aws -Name "Citrix_MachineManagement_Options" -Value " AwsMaxENISecurityGroupLimit=<number>"
    <!--NeedCopy-->
    

    注:

    AwsMaxENISecurityGroupLimit の値を設定しない場合、デフォルト値の 5 が使用されます。

サービスエンドポイントURL

標準ゾーンサービスエンドポイントURL

MCSを使用すると、APIキーとAPIシークレットを使用して新しいAWS接続が追加されます。この情報と認証済みアカウントを使用して、MCSはAWS DescribeRegions EC2 API呼び出しを使用して、サポートされているゾーンについてAWSにクエリを実行します。クエリは、汎用EC2サービスエンドポイントURL https://ec2.amazonaws.com/ を使用して行われます。MCSを使用して、サポートされているゾーンのリストから接続のゾーンを選択します。優先されるAWSサービスエンドポイントURLは、そのゾーンに対して自動的に選択されます。ただし、サービスエンドポイントURLを作成した後、そのURLを設定または変更することはできません。

必要なAWS権限

このセクションには、AWS権限の完全なリストが含まれています。機能が正しく動作するように、このセクションに記載されている権限の完全なセットを使用してください。

注:

iam:PassRole 権限は、role_based_auth の場合にのみ必要です。

ホスト接続の作成

AWSから取得した情報を使用して、新しいホスト接続が追加されます。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeSubnets",
                "ec2:DescribeVpcs",
                "ec2:DescribeRegions"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
<!--NeedCopy-->

VMの電源管理

VMの電源がオンまたはオフになります。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "ec2:DescribeInstances",
                "ec2:StartInstances",
                "ec2:StopInstances",
                "ec2:RebootInstances",
                "ec2:DescribeInstanceStatus"
            ],
            "Effect": "Allow",
-  "Resource": "*"
-  }
-  ]
-  }
<!--NeedCopy-->
-  ### VMの作成、更新、または削除

-  AWSインスタンスとしてプロビジョニングされたVMを使用して、マシンカタログが作成、更新、または削除されます。
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "ec2:AttachVolume",
                "ec2:AssociateIamInstanceProfile",
                "ec2:AuthorizeSecurityGroupEgress",
                "ec2:RevokeSecurityGroupEgress",
                "ec2:AuthorizeSecurityGroupIngress",
                "ec2:CreateImage",
                "ec2:CreateLaunchTemplate",
                "ec2:CreateSecurityGroup",
                "ec2:CreateTags",
                "ec2:CreateVolume",
                "ec2:DeleteVolume",
                "ec2:DescribeAccountAttributes",
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeIamInstanceProfileAssociations",
                "ec2:DescribeImages",
                "ec2:DescribeInstances",
                "ec2:DescribeInstanceStatus",
                "ec2:DescribeInstanceTypes",
                "ec2:DescribeLaunchTemplates",
                "ec2:DescribeLaunchTemplateVersions",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribeRegions",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSnapshots",
                "ec2:DescribeSubnets",
                "ec2:DescribeTags",
                "ec2:DescribeSpotInstanceRequests",
                "ec2:CancelSpotInstanceRequests",
                "ec2:DescribeInstanceCreditSpecifications",
                "ec2:DescribeInstanceAttribute",

                "ec2:GetLaunchTemplateData",
                "ec2:DescribeVolumes",
                "ec2:DescribeVpcs",
                "ec2:DetachVolume",
                "ec2:DisassociateIamInstanceProfile",
                "ec2:RunInstances",
                "ec2:StartInstances",
                "ec2:StopInstances",
                "ec2:TerminateInstances"
            ],
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Action": [
                "ec2:CreateSecurityGroup",
                "ec2:DeleteSecurityGroup"
            ],
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Action": [
                "ebs:StartSnapshot",
                "ebs:GetSnapshotBlock",
                "ebs:PutSnapshotBlock",
                "ebs:CompleteSnapshot",
                "ebs:ListSnapshotBlocks",
                "ebs:ListChangedBlocks",
                "ec2:CreateSnapshot"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
<!--NeedCopy-->

注:

-  SecurityGroupsに関連するEC2セクションは、カタログ作成中に準備VM用に分離セキュリティグループを作成する必要がある場合にのみ必要です。これが完了すると、これらの権限は不要になります。

VMのインポート

VMをインポートしてマシンカタログを作成します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeSubnets",
                "ec2:DescribeVolumes",
                "ec2:DescribeSpotInstanceRequests"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
<!--NeedCopy-->

注:

ec2:DescribeSpotInstanceRequests は、VMをインポートするAWSリージョンにスポットインスタンスがある場合にのみ必要です。

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

直接ディスクアップロードは、マシンカタログプロビジョニングにおけるボリュームワーカーの要件を排除し、代わりにAWSが提供するパブリックAPIを使用します。この機能により、追加のストレージアカウントに関連するコストと、ボリュームワーカー操作を維持するための複雑さが軽減されます。

注:

ボリュームワーカーのサポートは削除されました。マシンカタログプロビジョニングには、直接ディスクアップロードおよびダウンロードの権限が必要です。

次の権限をポリシーに追加する必要があります。

  • ebs: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: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権限の定義セクションで説明されているようにユーザーに適用することも、role_based_authセキュリティキーとシークレットキーを使用してロールベース認証を使用することもできます。

重要:

role_based_authを使用するには、まずDelivery Controllerをセットアップする際に、Delivery Controller ec2インスタンスで目的のIAMロールを設定します。Web Studioを使用してホスティング接続を追加し、認証キーとシークレットにrole_based_authを指定します。これらの設定を持つホスティング接続は、ロールベース認証を使用します。

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

注:

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

ホスト接続での権限の検証

ホスト接続で権限を検証し、MCSマシンカタログの作成と管理に関連するタスクを実行できます。この実装は、VMの作成、削除、更新、VMの電源管理、EBS暗号化など、さまざまなシナリオで必要な不足している権限を事前に特定するのに役立ち、重要な時期にブロックされるのを回避できます。

PowerShellコマンドTest-HypHypervisorConnectionを使用して、ホスト接続の権限を検証できます。コマンドの結果はリストとしてキャプチャされ、リストの各項目は3つのセクションに分かれています。

  • カテゴリ: ユーザーがMCSマシンカタログを作成および管理するために実行できるアクションまたはタスク。
  • 修正措置: 管理者がユーザーの不足している権限の不一致を解決するために実行する必要がある手順。
  • 不足している権限: カテゴリの不足している権限のリスト。

権限を検証するには、以下を実行します。

  1. AWSへのホスト接続を作成します。
  2. Delivery Controller™ホストからPowerShellウィンドウを開きます。
  3. asnp citrix*を実行して、Citrix固有のPowerShellモジュールをロードします。
  4. 以下のコマンドを実行して、権限を検索するために必要な権限があるかどうかを確認します。

    Test-HypHypervisorConnection -LiteralPath "XDHyp:\Connections\AWSCon"
    <!--NeedCopy-->
    
  5. 権限を検索するために必要な不足している権限を追加した後、以下のカテゴリの権限があるかどうかを確認するために、以下のコマンドを実行します。

    • 作成、更新、削除
    • 電源管理
    • EBS暗号化
    Test-HypHypervisorConnection -LiteralPath "XDHyp:\Connections\AWSCon" [-SecurePassword -Password] "password" -UserName "" -CustomProperties ""
    <!--NeedCopy-->
    

権限の追加の詳細については、IAM権限の追加を参照してください。

次のステップ

詳細情報

AWS EC2への接続