マルチセッションフリートでセッションスクリプトを使用する - Amazon AppStream 2.0

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

マルチセッションフリートでセッションスクリプトを使用する

マルチセッションフリートでセッションスクリプトを使用する場合、最適なパフォーマンスとセキュリティを確保するために追加の要件と考慮事項があります。

要件

単一セッションフリートでは、特定のインスタンスに対して、 SessionStart および SessionTerminationフックは 1 回のみ実行されることが保証されます。これは、セッションをインスタンスに 1:1 でマッピングするためです。マルチセッションフリートを使用する場合、セッションとインスタンスの N:M マッピングがあり、各セッションは独自の SessionStartSessionTerminationフックを実行します。つまり、 SessionStart および SessionTerminationフックは、特定のインスタンスで、さまざまな順序で複数回実行できます。最良のエクスペリエンスを得るには、マルチセッションフリートで使用する場合、セッションスクリプトに以下が当てはまる必要があります。

  • スクリプトは冪等です。

    アクションがすでに実行されている場合、スクリプトは同じインスタンスで複数の実行を正常な処理で処理する必要があります。

  • スクリプトは独立しています。

    スクリプトはセッションごとに実行されるため、別のセッションが を実行SessionTerminationしている間に 1 つのセッションが実行されている場合SessionStart、相互に干渉したり、他のセッションの経験を妨げたりしないでください。

  • スクリプトはパフォーマンです。

    マルチセッションインスタンスでは、複数のセッションを同時にプロビジョニングできます。つまり、セッションスクリプトを複数回同時に実行できます。スクリプトは効率的で、過剰なリソースを消費せず、インスタンスでの他のユーザーの経験やセッションの安定性に影響を与えないようにする必要があります。

これらの要件の多くは、セッションスクリプトロジックをスクリプトが実行されている特定のユーザーセッションに集中させることで満たすことができます。

セキュリティに関する考慮事項

AppStream 2.0 イメージは、ユーザーがセッションスクリプトファイルへの書き込みアクセス許可を付与するように設定しないでください。これにより、悪意のあるユーザーにとって重要な攻撃ベクトルが導入され、スクリプトファイルを変更できるようになります。これらのファイルは、設定に応じて、 SYSTEMまたは別のユーザーとして実行できます。

重要

AppStream 2.0 イメージが安全に設定されていることを確認するのはお客様の責任です。これは、複数のユーザーが同じインスタンスを使用しているマルチセッションインスタンスで特に重要です。イメージが安全に設定されていない場合、そのインスタンスのすべてのユーザーにセキュリティリスクがあります。

イメージとセッションスクリプトファイルは、次の条件を満たしている必要があります。

  • ユーザーには、セッションスクリプトファイルを変更するアクセス許可がありません。

  • ユーザーには、セッションスクリプト config.json を変更するアクセス許可がありません。イメージのデフォルトの動作は、管理者へのアクセスを制限します。

セッションスクリプトの実行ファイルは、実行時に変更されない安全な場所に保存する必要があります。

サービスがセッションスクリプト実行可能ファイルが変更されたことを検出すると、そのインスタンスでそのフックの後続の実行が失敗し、ログファイルを Amazon S3 にアップロードし (Amazon S3 ログ記録が有効になっている場合)、次のメッセージが表示されます。

インスタンスのプロビジョニング後に実行可能ファイルが変更されたため、セッションスクリプトは実行されませんでした。セキュリティ上の理由から実行がスキップされました。

ユースケースで実行時にセッションスクリプト実行可能ファイルを変更する必要がある場合 (例えば、実行時に自動更新プロセスによって変更されたEXEファイルを指す場合)、上記のチェックは失敗します。この場合、スクリプトを使用して、実行を変更した実行可能ファイルにリダイレクトします。サービスがセキュリティチェックを実行する場合、スクリプトは実行時に変更しないでください。

セッションスクリプトファイルが過度に大きい (100 MB を超える) 場合、インスタンスとセッションのプロビジョニングが遅れる可能性があり、セキュリティチェックにはさらに時間がかかります (インスタンスタイプと使用可能なリソースによって異なります)。ユースケースで大規模なセッションスクリプトが必要な場合は、実行をリダイレクトするために小さなスクリプトを使用することを検討してください。これにより、インスタンスとセッションのプロビジョニングエクスペリエンスが向上します。

サービスはセッションスクリプト config.json で定義された実行可能ファイルのみをチェックしており、これはフォールバック/ベストエフォートメカニズムにすぎないことに注意してください。セッションスクリプト実行可能ファイル内のすべてのコードパスが安全であり、エンドユーザーが変更できないことを確認するのはユーザーの責任です。