Google Cloud (Pro)
このページの内容
Google Cloudコネクタはアセットコネクタです。Google Cloudのリソース階層を読み取り、projectごとにDefectDojoのアセットを作成し、そのprojectが属するfolderによってOrganizationsにグループ化します。folderもそれぞれアセットになるため、organization、folder、projectは、Cloud consoleで見えるのと同じツリーとしてDefectDojo上にも表示されます。検出事項はインポートされません。
ご注意ください: このコネクタがインポートするのはprojectのインベントリのみです。Security Command Centerの検出事項をインポートするには、別途用意されたGoogle Cloud Security Command Centerコネクタを使用してください。この2つは互いに独立しており、併用することを前提に設計されています。このコネクタが作成するprojectは、SCCの検出事項が届くのと同じアセットであるため、両方を実行しても重複は発生しません。
Prerequisites
コネクタはGoogleのサービスアカウントで認証を行い、階層のメタデータ(folderとprojectの名前、id、ライフサイクルの状態、ラベル)のみを読み取ります。リソースの中身や検出事項は読み取りません。
- Google Cloudでサービスアカウントを作成します。DefectDojo専用のアカウントを作成することをお勧めします。
- インポートしたいorganizationまたはfolderに対して、Browserロール(
roles/browser)を付与します。階層の走査にはresourcemanager.folders.listとresourcemanager.projects.listが必要です。カスタムロールにはさらにresourcemanager.folders.getとresourcemanager.organizations.getも含めてください。含めない場合、最上位のAssetは表示名ではなくリソースIDで命名されます。 アカウントにorganizationがない場合、ロールを付与する親リソースは存在しません。インポートしたい各projectにroles/browserを付与してください。 - 設定するスコープの最上位でロールを付与してください。コネクタはサブツリー全体を走査するため、読み取れないfolderが1つでもあると、部分的なインベントリを黙ってインポートするのではなく、同期が失敗します。
- サービスアカウントのJSONキーを作成してダウンロードします。
- サービスアカウントを所有するprojectでCloud Resource Manager API(
cloudresourcemanager.googleapis.com)を有効にします。
Connector Mappings
- 標準以外のエンドポイントを使用しない限り、Locationフィールドはデフォルトの
https://cloudresourcemanager.googleapis.comのままにします。 - Parent Resourceフィールドに、インポートしたい階層のルートを入力します:
organizations/{id}またはfolders/{id}。単一のprojectは階層ではないため、projects/{id}はここでは使用できません。単一projectのスコープにはGoogle Cloud SCCコネクタを使用してください。 アカウントにorganizationがない場合は、このフィールドを空のままにしてください。コネクタはサービスアカウントが読み取れるすべてのprojectを、folder階層なしのフラットな一覧としてインポートします。 - サービスアカウントのJSONキーファイルの内容全体をService Account Keyフィールドに貼り付けます。
parentの配下にあるACTIVE状態のすべてのfolderとprojectがRecordになります。各projectのRecordはそのproject IDにちなんで名付けられ、DefectDojoでのOrganizationは、そのprojectが属するfolder(folderの直下にある場合はGoogle Cloudのorganization)になります。
Google Cloudでprojectを削除するとDELETE_REQUESTED状態になり、インポート対象から外れます。そのため、対応するRecordは削除されるのではなく、次回の同期時にMISSINGとしてフラグが付けられます。DefectDojoがアセットを黙って削除することはありません。folderを削除した場合も同様です。
Recordが一度マッピングされると、このコネクタはそのメタデータを二度と更新しません。Google Cloudでfolderの名前を変更したり、projectを別のfolderに移動したりしても、DefectDojoには古い名前や古いfolderが表示されたままになります。
Working alongside the Google Cloud SCC connector
どちらのコネクタも同じ方法でprojectを識別し、どちらもそのアセットをproject IDにちなんで名付けます。そのため、このコネクタを先に実行した場合、SCCの検出事項はこのコネクタが作成したアセットに届きます。SCCを先に実行した場合は、このコネクタがそれらのアセットを引き継ぎ、folderの階層をその周りに追加します。二重にマッピングする必要はありません。
Organizationについても同じ規則が適用されます。このコネクタがアセットを作成した場合、そのOrganizationはprojectが属するfolderになります。Google Cloud SCCコネクタが先にアセットを作成した場合は、そのアセットは既存のOrganizationを保持し、このコネクタはfolderの階層を追加するだけです。
例外が1つあります。organizationレベルのポリシー検出事項など、どのprojectにも属さないSCCの検出事項は、別のアセットに届きます。そのアセットはGoogle Cloud SCCコネクタが設定済みの親リソースに対して作成するもので、このコネクタが作成するorganizationやfolderのアセットではありません。両方のコネクタを実行する場合、これらの検出事項のために1つ追加のアセットができることを想定してください。