Citrix Virtual Apps and Desktops

Amazon WorkSpaces Core マネージドインスタンスへの接続

接続とリソースの作成および管理では、接続を作成するウィザードについて説明します。以下の情報では、Amazon WorkSpaces Core Managed Instancesに固有の詳細について説明します。

前提条件

Amazon WorkSpaces Core Managed Instancesへの接続を作成する前に、以下を実行してください。

IAM権限を定義する

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

注:

Citrixはお客様に代わってAWSアカウント内のリソースと自動化をプロビジョニングおよび管理するため、特定のタグやリソース命名規則に基づいたIAM権限ポリシーの構成はサポートされていません。

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

  1. AWS管理コンソールにログインし、ドロップダウンリストからIAMサービスを選択します。
  2. 新しいユーザーグループの作成を選択します。
  3. 新しいユーザーグループの名前を入力し、続行を選択します。
  4. Permissions」ページで、「Custom Policy」を選択します。
  5. Permissions policy」の名前を入力します。
  6. Policy Document」セクションで、関連する権限を入力します。

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

重要:

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

IAM権限を追加する

AWS Management Consoleの「IAM」セクションで権限を追加します。

  1. Summary」パネルで、「Permissions」タブを選択します。
  2. Add permissions」を選択します。
  3. Add Permissions to」画面で、権限を付与します。
  4. JSONセクションに、環境の必要なAWS権限を含めます。

サービスにリンクされたロールを作成する

CitrixがCore V2 APIを呼び出す各AWSアカウントに対して、サービスにリンクされたロール (SLR)を作成します。

ロールを作成する手順:

  • AWS マネジメントコンソールでコマンドラインインターフェイス (CLI) を開きます。
  • CLI で次のコマンドを実行します。

     aws iam create-service-linked-role --aws-service-name workspaces-instances.amazonaws.com
     <!--NeedCopy-->
    

Amazon WorkSpaces Core 管理コンソールを使用して、サービスにリンクされたロールを構成することもできます。「サービスにリンクされたロールの作成 (コンソール)」を参照してください。

接続を作成する

次の方法で Amazon WorkSpaces Core マネージドインスタンスへの接続を作成できます。

注:

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

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

Web Studio を使用して接続を作成する

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

    1. 「新しい接続を作成」を選択します。
    2. 「ゾーン」で、AWS 環境用に設定したリソースの場所を選択します。
    3. 接続の種類として Amazon WorkSpaces Core を選択します。
    4. IAMユーザーアクセスキーを使用 または IAMロールを使用 を選択します。

      IAMユーザーアクセスキーの場合、CitrixがAWSアカウントのリソースを管理するために適切なIAM権限ポリシーを持つIAMユーザーの APIキーシークレットキー を入力します。

      IAMロールの場合、CitrixがAWSアカウントのリソースを管理するために適切なIAM権限ポリシーを持つIAMロールをDelivery Controllerインスタンスに割り当てていることを確認してください。詳細については、ロールベース認証ガイドを参照してください。

    5. 接続名を入力し、「次へ」 をクリックします。
  3. 仮想マシンの場所 ページで、VMをプロビジョニングする場所を指定します。新しいVMを作成するためのクラウドリージョン、VPC、およびアベイラビリティゾーンを選択します。
  4. ネットワーク ページで:

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

重要な考慮事項

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

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

PowerShell を使用して接続を作成する

  1. PowerShell ウィンドウを開きます。
  2. Citrix固有のPowerShellモジュールをロードするには、asnp citrix*を実行します。
  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 "AmazonWorkSpacesCoreMachineManagerFactory" -HypervisorAddress " "https://workspaces-instances.$($cloudRegion).api.aws"" -Persist -Scope @() -UserName $apiKey -SecurePassword $secureKey -ZoneUid $zoneUid
    
    New-BrokerHypervisorConnection -HypHypervisorConnectionUid $connection.HypervisorConnectionUid
    
    $hostingUnitName = "demo-hostingunit"
    $availabilityzone = "us-east-1a"
    $vpcName = "Default VPC"
    $jobGroup = [Guid]::NewGuid()
    $hostingUnitPath = "XDHyp:\HostingUnits\" + $HostingUnitName
    $rootPath = $connectionPath + "\" + $vpcName + ".virtualprivatecloud\"
    $availabilityZonePath = @($rootPath + $availabilityzone + ".availabilityzone")
    $networkPaths = (Get-ChildItem $availabilityZonePath[0] | Where ObjectType -eq "Network") | Select-Object -ExpandProperty FullPath # will select all the networks in the availability zone
    
    New-Item -Path $hostingUnitPath -AvailabilityZonePath $availabilityZonePath -HypervisorConnectionName $connectionName -JobGroup $jobGroup -PersonalvDiskStoragePath @() -RootPath $rootPath -NetworkPath $networkPaths
    <!--NeedCopy-->
    

注:

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

制限事項

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

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

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

VPCピアリングを使用すると、Cloud Connectorと、異なるリージョンまたはアカウントにプロビジョニングされたVMが相互に通信できるようになります。

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

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

前提条件

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

VPCピアリングの設定

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

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

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

  2. VPC Aに移動し、パブリックサブネットに関連付けられているルートテーブルに移動します。
  3. Edit Routes > Add routeをクリックします。Destination列にVPC BのCIDRブロックを追加し、Target列に作成したVPCピアリングを追加します。
  4. 手順2と3を繰り返しますが、VPC AとVPC Bのプライベートサブネットを使用します(VPC AのCIDRブロックを追加します)。VPCピアリング接続のルートテーブルを更新するを参照してください。
  5. VPC Aに関連付けられているプライベートセキュリティグループに移動します。
  6. Actions を選択し、次に Edit inbound rules を選択します。
  7. Add rule を選択します。タイプには All Traffic を選択し、Source Column に以下を追加します。

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

注:

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

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

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

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

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

注意:

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

  1. 前述の手順で、アカウント間で VPC ピアリングを設定します。
  2. アカウント B で、最小限の Citrix IAM 権限を持つ IAM ロールとポリシーを作成します。「IAM チュートリアル: IAM ロールを使用して AWS アカウント間でアクセスを委任する」を参照してください。このロールの ARN が「arn:aws:iam::5678:role/citrix-role」であるとします。
  3. 「arn:aws:iam::5678:role/citrix-role」ロールに信頼ポリシーを追加し、(https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies-cross-account-resource-access.html)に従ってアカウントAの「arn:aws:iam::1234:role/primary-account-citrix-role」ロールからアクセスできるようにします。
  4. アカウントAで、以前に「primary-account-citrix role」という名前で言及されたIAMロールとポリシーを作成します。これにより、アカウントB(arn:aws:iam::5678:role/citrix-role)からIAMロールを引き受け、IAMロールを渡すことができます。
  5. アカウントAのすべてのCloud Connectorに「arn:aws:iam::1234:role/primary-account-citrix-role」ロールを割り当てます。

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

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

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

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

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

例:

$connectionName = "cross-account-conn"
$cloudRegion = "us-east-1"
$apiKey = "role_based_auth"
$secretKey = "role_based_auth"
$zoneUid = "xxxxxx"
$secureKey = (ConvertTo-SecureString -String $secretKey -AsPlainText -Force)
$connectionPath = "XDHyp:\Connections\" + $connectionName
$customProperties = '<CustomProperties xmlns="http://schemas.citrix.com/2014/xd/machinecreation" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Property xsi:type="StringProperty" Name="CrossAccountRoleArn" Value="arn:aws:iam::5678:role/citrix-role" /><Property xsi:type="StringProperty" Name="MaximumAssumeRoleDurationInSeconds" Value="3600" />
"</CustomProperties>'

$connection = New-Item -Path $connectionPath -ConnectionType "AmazonWorkSpacesCoreMachineManagerFactory" -HypervisorAddress "https://workspaces-instances.$($cloudRegion).api.aws" -Persist -Scope @() -UserName $apiKey -SecurePassword $secureKey -ZoneUid $zoneUid -CustomProperties $customProperties

New-BrokerHypervisorConnection -HypHypervisorConnectionUid $connection.HypervisorConnectionUid
<!--NeedCopy-->

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

接続を編集する

既存のホスト接続を編集して、次のことができます。

IAM権限を付与するためのオプションを編集する

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

同時実行アクションの最大数を変更する

StudioでAmazon WorkSpaces Coreマネージドインスタンスのホスト接続を作成すると、次のデフォルト値が表示されます。

オプション 絶対値 パーセンテージ
同時実行アクション(すべての種類) 125 100
1分あたりの新規アクションの最大数 150 n/a
最大同時プロビジョニング操作数 150 n/a

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

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

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

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

構成前:

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

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>'
    <!--NeedCopy-->
    

    この文字列は 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. 更新された CustomProperties 文字列を確認するには、dir を入力します。

ネットワークインターフェースごとのセキュリティグループを構成する

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

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

  1. PowerShell ウィンドウを開きます。
  2. Citrix固有のPowerShellモジュールをロードするには、asnp citrix*を実行します。
  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シークレットを持つ新しいAmazon WorkSpaces Core Managed Instances接続が追加されます。この情報と認証済みアカウントを使用して、MCSはAWS EC2およびAmazon WorkSpaces Core Managed Instances API呼び出しを使用して、サポートされているリージョンとゾーンをAWSに照会します。クエリは、Workspace Instances Service Endpoint URL https://workspaces-instances.us-east-1.api.aws/とEC2 Service Endpoint https:/ec2.us-east-1.api.aws/を使用して行われます。

注:

https://workspaces-instances.us-east-1.api.aws/に接続できることを確認してください。

必要なAWS権限

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

注:

iam:PassRole権限は、Citrixがリソースを管理するためにIAMロールを使用する場合にのみ必要です。

ホスト接続の作成

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

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

VMの電源管理

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

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "ec2:DescribeInstances",,
                "ec2:StartInstances",
                "ec2:StopInstances",
                "ec2:RebootInstances",
                "ec2:DescribeInstanceStatus"
            ],
            "Effect": "Allow",
            "Resource": "*"
        },
        {
           "Action": [
               "workspaces-instances:*"
           ],
           "Effect": "Allow",
            "Resource": "*"
       }

    ]

}
<!--NeedCopy-->

VMの作成、更新、または削除

AWSインスタンスとしてプロビジョニングされたVMを使用して、マシンカタログが作成、更新、または削除されます。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "ec2:AttachVolume",
                "ec2:AssociateIamInstanceProfile",
                "ec2:AuthorizeSecurityGroupEgress",
                "ec2:RevokeSecurityGroupEgress",
                "ec2:AuthorizeSecurityGroupIngress",
                "ec2:CreateImage",
                "ec2:CreateLaunchTemplate",
                "ec2:CreateSecurityGroup",
                "ec2:CreateTags",
                "ec2:CreateVolume",
                "ec2:DeleteVolume",
                "ec2:DescribeAccountAttributes",
                "ec2:DescribeAvailabilityZones",
                "ec2:DescribeIamInstanceProfileAssociations",
                "ec2:DescribeImages",
                "ec2:DescribeInstances",
                "ec2:DescribeInstanceStatus",
                "ec2:DescribeInstanceTypes",
                "ec2:DescribeLaunchTemplates",
                "ec2:DescribeLaunchTemplateVersions",
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribeRegions",
                "ec2:DescribeSecurityGroups",
                "ec2:DescribeSnapshots",
                "ec2:DescribeSubnets",
                "ec2:DescribeTags",
                "ec2:DescribeSpotInstanceRequests",
                "ec2:DescribeInstanceCreditSpecifications",
                "ec2:DescribeInstanceAttribute",
                "ec2:GetLaunchTemplateData",
                "ec2:DescribeVolumes",
                "ec2:DescribeVpcs",
                "ec2:DetachVolume",
                "ec2:DisassociateIamInstanceProfile",
                "ec2:RunInstances",
                "ec2:StartInstances",
                "ec2:StopInstances",
                "ec2:TerminateInstances"
            ],
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Action": [
                "ec2:CreateSecurityGroup",
                "ec2:DeleteSecurityGroup"
            ],
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Action": [
                "ebs:StartSnapshot",
                "ebs:GetSnapshotBlock",
                "ebs:PutSnapshotBlock",
                "ebs:CompleteSnapshot",
                "ebs:ListSnapshotBlocks",
                "ebs:ListChangedBlocks",
                "ec2:CreateSnapshot"
            ],
            "Effect": "Allow",
            "Resource": "*"
        },
        {
            "Action": [
                "workspaces-instances:*"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }

    ]
}
<!--NeedCopy-->

注:

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

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

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

  • ebs:StartSnapshot
  • ebs:GetSnapshotBlock
  • ebs:PutSnapshotBlock
  • ebs:CompleteSnapshot
  • ebs:ListSnapshotBlocks
  • ebs:ListChangedBlocks
  • ec2:CreateSnapshot
  • ec2:DeleteSnapshot
  • ec2:DescribeLaunchTemplates

作成されたボリュームのEBS暗号化

AMIが暗号化されている場合、またはEBSがすべての新しいボリュームを暗号化するように構成されている場合、EBSは新しく作成されたボリュームを自動的に暗号化できます。ただし、この機能を実装するには、IAMポリシーに次の権限を含める必要があります。

{
     "Version": "2012-10-17",
     "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                 "kms:CreateGrant",
                 "kms:Decrypt",
                 "kms:DescribeKey",
                 "kms:GenerateDataKeyWithoutPlainText",
                 "kms:GenerateDataKey",
                 "kms:ReEncryptTo",
                 "kms:ReEncryptFrom"
            ],
            "Resource": "*"
        }
    ]
}
<!--NeedCopy-->

注:

権限は、ユーザーの裁量でリソースと条件ブロックを含めることにより、特定のキーに制限できます。例:条件付きKMS権限

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

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

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

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

IAMロールベース認証

ロールベース認証をサポートするために、次の権限が追加されます。

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

最小限のIAM権限ポリシー

次のJSONは、現在サポートされているすべての機能に使用できます。このポリシーを使用して、ホスト接続の作成、VMの作成、更新、削除、および電源管理を行うことができます。 このポリシーは、IAM権限の定義セクションで説明されているようにユーザーに適用することも、ホスト接続を構成するときにIAMロールを使用を選択してロールベース認証を使用することもできます。

重要:

Citrix がリソースを管理するための IAM ロール」を使用するには、まず Delivery Controller をセットアップする際に、Delivery Controller ec2 インスタンスで目的の IAM ロールを構成します。Citrix Studio を使用して、ホスティング接続を追加し、「IAM ロールを使用」オプションを選択します。これらの設定を持つホスティング接続は、ロールベースの認証を使用します。

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

    ]
}
<!--NeedCopy-->

注:

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

次のステップ

詳細情報

Amazon WorkSpaces Core マネージドインスタンスへの接続