セキュリティアセスメントをリクエストする
注釈:本資料はAI技術を用いて翻訳されています。
Overview
セキュリティアセスメントは、Extend Service Extension アプリをさらに展開する前に、そのエンドポイントにセキュリティ上の問題がないかを確認します。Extend セキュリティアセスメントはAIを活用しており、アプリのAPIを分析し、テストケースを生成して、実行中のアプリに対して実行します。AccelByteのセキュリティチームが結果をレビューし、完了すると結果レポートをダウンロードできます。
選択したエンドポイントがPATCH、PUT、DELETEリクエストを受け付ける場合、それらに対して実行されるテストケースが実在するデータを変更または削除する可能性があります。選択するエンドポイントは慎重に確認し、失っては困る本番データに接続されたアプリに対してアセスメントを実行しないようにしてください。
利用できるユーザー
- Extend Appを所有するゲームのnamespaceでGame Adminロールが必要です。
- スタジオが有効なExtendパッケージのサブスクリプションを持っている必要があります。
- アセスメント対象のExtend AppはService Extensionアプリである必要があり、リクエストを送信する時点で実行中である必要があります。停止しているアプリや、すでにセキュリティアセスメントセッションが進行中のアプリは選択できません。
セキュリティアセスメントセッションがアクティブな間、その対象アプリは、セッションがCompletedまたはFailedになるまで停止または再デプロイできません。デプロイスケジュールに合わせてアセスメントの期間を計画してください。
Admin Portalからセキュリティアセスメントをリクエストする
-
Extend > Security Assessmentに移動し、Request Security Assessmentをクリックします。

-
アセスメントしたいExtend Service Extension アプリを選択します。
現在実行中のアプリのみが選択可能として表示されます。停止しているアプリや、すでにセキュリティアセスメントセッションが進行中のアプリは一覧に表示されますが選択できません。

-
テストするエンドポイントを選択します。
権限は、可能な場合はアプリのOpenAPI仕様またはgRPCリフレクションから自動入力されます。詳細はセキュリティアセスメントのためにエンドポイントを準備するを参照してください。送信する前に、入力された値が正しいことを確認してください。エンドポイントの権限を自動的に検出できなかった場合は、このフォームに自分で入力してください。

-
Request Security Assessmentをクリックします。
選択したエンドポイントのいずれかが
PATCH、PUT、DELETEリクエストを受け付ける場合、確認ダイアログにそれらが一覧表示され、アセスメントによってそれらを通じて既存のデータを変更または削除するテストケースが生成される可能性があることが警告されます。一覧を確認し、Proceed with requestをクリックして送信してください。
-
Security Assessmentの一覧画面に戻ります。Extend セキュリティアセスメントがアプリに対してテストケースを生成・実行している間、新しいセッションはAnalyzingステータスで表示されます。

-
セッションのステータスがCompletedに変わると、Findings列に深刻度別の結果の概要が表示されます。Get Reportをクリックすると、完全な結果レポートをダウンロードできます。
レポート内の各結果には、深刻度、CVSSスコア、影響を受けるエンドポイントが記載されています。

AGS CLIからセキュリティアセスメントをリクエストする
セキュリティアセスメントセッションは、ags extend security-assessmentコマンドグループで管理されます。ワークフローはAdmin Portalと同様です。実行中のService Extensionアプリとそのエンドポイントを選択し、リクエストを送信し、セッションが完了したらレポートをダウンロードします。
前提条件
以下のコマンドを実行する前に、AGS CLIをインストールし、AGS環境に対して認証を済ませてください。
セキュリティアセスメントをリクエストする
Extendアプリのいずれかに対して新しいセキュリティアセスメントセッションを送信します。
ags extend security-assessment request --app <YourAppName> [--all-endpoints | --operation-ids <id1,id2,...>] [--permission <operationId>=<PERMISSION_STRING>] [--namespace <YourNamespace>] [--yes] [--dry-run]
--all-endpointsまたは--operation-idsを指定しない場合、コマンドはエンドポイントのインタラクティブなチェックリストを表示します。これはAdmin Portalのリクエストフォームに表示されるものと同じセットです。ags extend security-assessment list-endpoints --namespace <GameNamespace> --app <YourAppName>を実行すると、アプリで利用可能なエンドポイントを確認できます。--operation-idsに渡すオペレーションIDを調べるのに使用してください。- 自動検出できなかったエンドポイントの権限を手動で設定するには、
--permissionフラグを1つ以上使用してください。詳細はセキュリティアセスメントのためにエンドポイントを準備するを参照してください。<PERMISSION_STRING>はRESOURCE [ACTION]形式で、スペースを含むため、operationId=valueのペア全体をクォートしてください。 - 選択したエンドポイントのいずれかが
PUT、PATCH、DELETEリクエストを受け付ける場合、CLIはAdmin Portalの確認ダイアログと同じ警告を表示し、送信前に確認を求めます。インタラクティブな確認をスキップするには--yesを渡し、送信せずにリクエストをプレビューするには--dry-runを渡してください。
例えば、特定のエンドポイントのみを送信し、1つのエンドポイントの権限を手動で設定する場合:
ags extend security-assessment request --app playground --operation-ids createProgress \
--permission 'createProgress=ADMIN:NAMESPACE:{namespace}:CLOUDSAVE:RECORD [CREATE]'
例: --all-endpointsや--operation-idsを指定せずにコマンドを実行すると、エンドポイントのインタラクティブなチェックリストが表示されます。

選択内容を送信すると、CLIはデータを変更または削除する可能性のあるエンドポイントについて警告し、確認を求めた上で、作成されたセッションを報告します。

セキュリティアセスメントセッションを一覧表示する
自分のnamespaceに送信されたセキュリティアセスメントセッションを、現在のステータスとともに一覧表示します。
ags extend security-assessment list --namespace <YourNamespace> [flags]
例:

| ステータス | 意味 |
|---|---|
SUBMITTED | リクエストが受理され、分析待ちのキューに入っています |
ANALYZING | APIが分析され、テストケースが生成されています |
TESTING | テストケースがアプリに対して実行されています |
IN_REVIEW | 結果がAccelByteのセキュリティチームによってレビューされています |
COMPLETED | レポートがダウンロード可能です |
FAILED | セッションが失敗しました(例:アセスメント中にアプリが停止した場合) |
レポートをダウンロードする
選択した、完了したセキュリティアセスメントセッションの結果レポートをダウンロードします。
ags extend security-assessment result --app <YourAppName> [--engagement-id <id>] [--report-format <format>] [--report-output <path>]
特定のセッションのレポートを直接ダウンロードするには--engagement-idを渡してください。指定しない場合、コマンドは完了したセッションの中から選択するよう促します。ダウンロードするファイルの形式を選択するには--report-formatを使用してください。省略した場合はデフォルトの形式が使用されます。ダウンロードリンクは1時間で失効します。
計画時に考慮すべき制約
- アプリごとにアクティブなセッションは1つまで。 すでに終了していないセッションがあるアプリに対して、新しいセキュリティアセスメントを開始することはできません。
- アプリは実行中かつ変更されない状態を維持する必要があります。 セッションがアクティブな間にアプリを停止または再デプロイすることはブロックされます。デプロイスケジュールに合わせてアセスメントの期間を計画してください。
- リクエストごとのエンドポイント上限。 1つのセッションに含められるのは最大20エンドポイントまでです。現在の上限は、アプリのエンドポイントを確認している間、常に表示されるため、推測する必要はありません。上限を引き上げる必要がある場合は、AccelByteの担当者にお問い合わせください。
- 課金。 料金は、含まれるエンドポイントの数に関わらず、Extend Appごとに完了したセキュリティアセスメントセッション1件あたりの固定料金です。
トラブルシューティング
アプリのエンドポイントの確認が完全に失敗する。
アプリのOpenAPI仕様に到達できません。<YourServiceURL>/apidocs/api.json(または仕様が提供されている場所)がアプリの外部から200を返すこと、およびアプリが実行中であることを確認してください。
エンドポイントに権限が表示されないが、表示されるはずだった。 アプリに対してOpenAPI仕様とgRPCリフレクションの両方に正常に到達できたかどうかを確認してください。到達できていて、それでもエンドポイントに権限が表示されない場合、Extend セキュリティアセスメントはどちらのソースからも権限の宣言を検出できなかったため、意図的に未認証であるものとして扱っています。実際にはそうでない場合は、そのオペレーションのproto/OpenAPIアノテーションを再確認してください。
gRPCリフレクションがなく、今すぐx-required-permissionを追加できない。
リクエストを送信する際に、そのエンドポイントだけ手動での権限の上書きを使用してください。Extend セキュリティアセスメントは、値が正しい形式のnamespaceスコープの権限であるかどうかのみを確認します。アプリが実際に適用している内容と照合することはできないため、resource/action文字列が誤っていると、そのエンドポイントでテストされる内容に偏りが生じます。
セッションがすでに進行中であるため、リクエストが拒否される。 そのアプリのセッションはすでにアクティブです。再試行する前に、セッション一覧でアプリの現在のステータスを確認してください。