翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
マルチセッションフリートでセッションスクリプトを使用する場合、最適なパフォーマンスとセキュリティを確保するための追加の要件と考慮事項があります。
要件
単一セッションフリートでは、特定のインスタンスに対して、[SessionStart] フックと [SessionTermination] フックは 1 回のみ実行されることが保証されます。これは、セッションとインスタンスの 1:1 マッピングがあるためです。マルチセッションフリートを使用する場合、セッションとインスタンスの N:M マッピングがあり、各セッションは独自の [SessionStart] フックと [SessionTermination] フックを実行します。つまり、[SessionStart] フックと [SessionTermination] フックは、特定のインスタンスでは、さまざまな順序で複数回実行できます。最良のエクスペリエンスを得るには、マルチセッションフリートで使用する場合、セッションスクリプトについて以下が当てはまる必要があります。
-
スクリプトがべき等である。
アクションがすでに実行されている場合、スクリプトは同じインスタンス上で複数の実行を正常に処理する必要があります。
-
スクリプトが独立している。
スクリプトはセッションごとに実行されるため、あるセッションが [SessionTermination] を実行している間に別のセッションが [SessionStart] を実行していたとしても、それらは互いに、あるいは他のセッションのエクスペリエンスに干渉することはありません。
-
スクリプトが実行可能である。
マルチセッションインスタンスでは、複数のセッションを同時にプロビジョニングできます。つまり、セッションスクリプトを複数回同時に実行できます。スクリプトは効率的で、過剰なリソースを消費せず、インスタンスでの他のユーザーの経験やセッションの安定性に影響を与えないようにする必要があります。
これらの要件の多くは、セッションスクリプトロジックをスクリプトが実行されている特定のユーザーセッションに集中させることで満たすことができます。
セキュリティに関する考慮事項
AppStream 2.0 イメージは、ユーザーがセッションスクリプトファイルへの書き込みアクセス許可を付与するように設定しないでください。これにより、悪意のあるユーザーにとって重要な攻撃ベクトルが導入され、スクリプトファイルを変更できるようになります。これらのファイルは、設定に応じて SYSTEM または別のユーザーとして実行できるようになります。
重要
AppStream 2.0 イメージが安全に設定されていることを確認するのはユーザーの責任です。これは、複数のユーザーが同じインスタンスを使用しているマルチセッションインスタンスで特に重要です。イメージが安全に設定されていない場合、そのインスタンスのすべてのユーザーにセキュリティ上のリスクがあります。
イメージとセッションスクリプトファイルは、次の条件を満たしている必要があります。
-
ユーザーには、セッションスクリプトファイルを変更するアクセス許可がありません。
-
ユーザーには、セッションスクリプト config.json を変更するアクセス許可がありません。イメージのデフォルトの動作により、管理者へのアクセスが制限されます。
セッションスクリプトの実行ファイルは、実行時に変更されない安全な場所に保存する必要があります。
サービスがセッションスクリプトの実行ファイルが変更されたことを検出すると、そのインスタンスでそのフックの後続の実行が失敗し、ログファイルが Amazon S3 にアップロードされ (Amazon S3 ログ記録が有効になっている場合)、次のメッセージが表示されます。
インスタンスのプロビジョニング後に実行可能ファイルが変更されたため、セッションスクリプトは実行されませんでした。セキュリティ上の理由から実行がスキップされました。
ユースケースで実行時にセッションスクリプト実行可能ファイルを変更する必要がある場合 (例えば、実行時に自動更新プロセスによって変更される EXE ファイルを指す場合)、上記のチェックは失敗します。この場合、スクリプトを使用して、実行を変更した実行可能ファイルにリダイレクトします。サービスがセキュリティチェックを実行する場合、スクリプトは実行時に変更しないでください。
セッションスクリプトファイルが過度に大きい (100 MB を超える) 場合、インスタンスとセッションのプロビジョニングが遅れる可能性があり、セキュリティチェックにはさらに時間がかかります (インスタンスタイプと使用可能なリソースによって異なります)。ユースケースで大規模なセッションスクリプトが必要な場合は、実行をリダイレクトするために小さなスクリプトを使用することを検討してください。これにより、インスタンスとセッションのプロビジョニングエクスペリエンスが向上します。
サービスはセッションスクリプト config.json で定義された実行可能ファイルのみをチェックしており、これはフォールバック/ベストエフォートメカニズムにすぎないことに注意してください。セッションスクリプト実行可能ファイル内のすべてのコードパスが安全であり、エンドユーザーが変更できないことを確認するのはユーザーの責任です。