Citrix DaaS

AWSへの接続

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

注:

AWSへの接続を作成する前に、まずAWSをリソースの場所として設定する必要があります。「AWS仮想化環境」を参照してください。

接続の作成

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

  • APIキーと秘密キーの値を指定する必要があります。AWSでこれらの値を含んでいるキーファイルをエクスポートしてから、値をインポートすることができます。また、リージョン、アベイラビリティゾーン、仮想プライベートクラウド名、サブネットアドレス、ドメイン名、セキュリティグループ名、および資格情報も必要になります。
  • AWSコンソールから取得するルートAWSアカウント用の資格情報ファイルでは、標準的なAWSユーザーのものとは異なる形式が使用されています。このため、このファイルをCitrix DaaSで使用してAPIキーと秘密キーの情報を入力することはできません。AWS Identity Access Management(IAM)形式の資格情報ファイルを使用してください。

注:

接続を作成した後、APIキーと秘密キーを更新しようとすると失敗することがあります。この問題を解決するには、プロキシサーバーまたはファイアウォールの制限を確認し、次のアドレスに接続できることを確認してください:https://*.amazonaws.com

制限事項

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

ホスト接続のデフォルト値

AWSクラウド環境の完全な構成インターフェイスでホスト接続を作成すると、次のデフォルト値が表示されます:

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

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

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

Identity and Access Management(IAM)

または、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. 新しい接続を使用して、リソースの場所を追加します。

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] を選択してユーザーのグループに対してIAM権限ポリシーのアプリケーションを完了します。グループ内のユーザーには、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権限について」を参照してください。

必要な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: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:AuthorizeSecurityGroupEgress",
                "ec2:AuthorizeSecurityGroupIngress",
                "ec2:CreateSecurityGroup",
                "ec2:DeleteSecurityGroup",
                "ec2:RevokeSecurityGroupEgress",
                "ec2:RevokeSecurityGroupIngress"
            ],
            "Effect": "Allow",
            "Resource": "\*"
        },
        {
            "Action": [
                "s3:CreateBucket",
                "s3:DeleteBucket",
                "s3:PutBucketAcl",
                "s3:PutBucketTagging",
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject",
                "s3:PutObjectTagging"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::citrix*"
        },
        {
            "Action": [
                "ebs:StartSnapshot",
                "ebs:GetSnapshotBlock",
                "ebs:PutSnapshotBlock",
                "ebs:CompleteSnapshot",
                "ebs:ListSnapshotBlocks",
                "ebs:ListChangedBlocks",
                "ec2:CreateSnapshot"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}
<!--NeedCopy-->

注:

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

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

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

注:

ボリュームワーカーのサポートは廃止されました。

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

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

重要:

  • ボリュームワーカーAMIやボリュームワーカーVMなどのボリュームワーカーリソースがなくても、既存のマシンカタログに新しいVMを追加できます。
  • 以前にボリュームワーカーを使用していた既存のカタログを削除すると、ボリュームワーカーに関連するすべてのアーティファクトが削除されます。

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

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

{
     "Version": "2012-10-17",
     "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                 "kms:CreateGrant",
                 "kms:Decrypt",
                 "kms:DescribeKey",
                 "kms:GenerateDataKeyWithoutPlainText",
                 "kms: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: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: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権限は、ボリュームワーカー方式を使用している場合にのみ使用してください。

次の手順

追加情報

AWSへの接続