コンテンツにスキップ

手順 読了目安 14 分

Google Cloud をアセットインベントリに接続する

Google Cloud コネクタは、Google Cloud プロジェクトのインターネット公開リソースを読み取り、Ostorlab のアセットインベントリに保持します。 これにより、アタックサーフェスの一部としてスキャンや追跡ができます。必要なのは読み取りアクセスのみです。

コネクタは何を収集しますか?

すべて Cloud Asset Inventory を通じて、プロジェクトごとに読み取ります。プライベートアドレスは除外されます。

リソース 保持される内容
Compute Engine インスタンス 外部 IPv4 または IPv6 アドレスを持つインスタンス
予約済みアドレス リージョンおよびグローバルの外部アドレス
転送ルール 外部ロードバランシングスキームを持つリージョンおよびグローバルのルール
Cloud DNS パブリックのマネージドゾーンとそのレコードセット (ワイルドカードレコードは除外)

インポートされるのは上記のリソースのみです。Cloud Run、Cloud Functions、GKE などのサービスは収集されません。

各プロジェクトは、そのプロジェクトの他のノードの親となるクラウドノードになります。リソースが公開するパブリック IP アドレスとホスト名は、 通常の IP アセットおよびドメインアセットになり、プラットフォームの他の機能でスキャンできます。

始める前に必要なものは?

  • インテグレーションを含む Ostorlab のプラン。 含まれていない場合、Ostorlab は「Your organisation does not have the necessary permissions to run this integration.」と応答します。
  • サービスアカウントをホストするプロジェクトの ID (表示名ではなくプロジェクト ID)。
  • そのプロジェクトの所有者として認証された gcloud (例: Cloud Shell)。組織全体のコネクタの場合は、組織の所有者でもある必要があります。
  • 組織全体のコネクタの場合は、数値の組織 ID。
  • インポートされるアセットの Ostorlab 所有者。 必要に応じて事前に作成してください。

Google Cloud でアクセスを設定する

Library > Integrations を開き、クラウド カテゴリを選択して、Google Cloud カードを選びます。設定タブは ステップ 1: Google Cloud プロジェクトを準備する から始まります。

Google Cloud カードが表示されたクラウドカテゴリ

2 つのダウンロードボタンはどちらも ostorlab-gcp-connector.sh という名前のファイルを提供します。権限借用版とキー版は、最後のステップを除いて同一です。サービスアカウントの権限借用を推奨します。キーが組織外に出ることはありません。

ダウンロードボタンが表示されたセットアップ手順

オプション 1: サービスアカウントの権限借用 (推奨)

  1. ステップ 1 で サービスアカウントの権限借用: セットアップファイルをダウンロード をクリックします。使用するパラメータ ブロックには、Ostorlab が組織用に作成するサービスアカウント ostorlab_service_account と、スクリプトが付与する roles が表示されます。
  2. Cloud Shell を開いてスクリプトをアップロードし、1 つのプロジェクトに対して実行します。

    PROJECT_ID=<project id> bash ostorlab-gcp-connector.sh
    

    組織のすべてのプロジェクトを読み取るには、組織レベルでロールを付与します。

    ORGANIZATION_ID=<organization id> PROJECT_ID=<project id> bash ostorlab-gcp-connector.sh
    
  3. スクリプトがサービスアカウントのメールアドレス ostorlab-cloud-connector@<project id>.iam.gserviceaccount.com を表示します。これをコピーします。

スクリプトは次の処理を行います。

  • プロジェクトで API cloudresourcemanager.googleapis.com、cloudasset.googleapis.com、iamcredentials.googleapis.com を有効にします (それ以外は有効にしません)。
  • プロジェクトにサービスアカウント ostorlab-cloud-connector を作成します。
  • プロジェクトまたは組織で、roles/cloudasset.viewer と roles/browser を付与します。
  • Ostorlab のサービスアカウント (ostorlab_service_account) に、新しいサービスアカウントに対するロール roles/iam.serviceAccountTokenCreator を付与し、キーなしで Ostorlab が権限を借用できるようにします。

スクリプトは再実行しても安全です。サービスアカウントが存在する場合は再利用し、Google が新しいアカウントを反映するまで再試行します。

オプション 2: サービスアカウントキー

権限借用を使えない場合に使用します。

  1. ステップ 1 で サービスアカウントキー: セットアップファイルをダウンロード をクリックします。
  2. Cloud Shell で上記と同じコマンドを実行します。トークン作成者の付与の代わりに、スクリプトが JSON キーファイル ostorlab-cloud-connector-key.json を作成します。
  3. ファイル全体の内容をコネクタフォーム用にコピーし、その後マシンからファイルを削除します。
  4. キーをローテーションするには、スクリプトを再実行し、コネクタを新しいキーで更新します。その後、キーを一覧表示して以前のキーの ID を確認し、削除します。スクリプトが古いキーを削除することはありません。

    gcloud iam service-accounts keys list --iam-account <service account email>
    gcloud iam service-accounts keys delete <previous key id> --iam-account <service account email>
    

Tip

JSON キーは保存時に暗号化され、Ostorlab で再表示されることはありません。

コネクタを追加する

  1. 設定 タブの ステップ 2: Google Cloud コネクタ で コネクタを追加 (または 別のコネクタを追加) をクリックします。

    別のコネクタを追加ボタン

  2. フォームに入力し、作成 をクリックします。

    サービスアカウントのメールが強調表示されたコネクタ追加フォーム

フィールド 入力する内容
名前 組織内で一意の名前。例: 本番 GCP。
プロジェクト ID Google Cloud のプロジェクト ID。6〜30 文字の英小文字、数字、ハイフンで、英字で始まり、英字または数字で終わります。
組織 ID (任意) Google Cloud の組織番号。設定すると、組織配下のすべての有効なプロジェクトが収集されます。
認証方式 サービスアカウントの権限借用 または サービスアカウントキー。
サービスアカウントのメール 権限借用方式のみ。スクリプトが表示したメールアドレス。
サービスアカウントの JSON キー キー方式のみ。JSON キーファイル全体。
所有者 必須。インポートされたアセットはこの所有者に紐付けられます。
ロケーション インポートされたアセットの任意のロケーション。
有効 無効なコネクタはスケジュール同期の対象外です。

接続をテストする

コネクタの行で 接続をテスト をクリックします。テストはプロジェクトから読み取るだけで、何もインポートしません。

接続をテストの操作

4 つのチェックが実行されます。

チェック 確認内容
認証情報 Ostorlab がサービスアカウントの Google トークンを取得できたこと (権限借用、または保存済みキーから)。
権限 Cloud Asset Inventory がスコープ内のプロジェクトを一覧できること。
スコープ 読み取られるプロジェクト。対象のプロジェクト、または組織の有効なすべてのプロジェクト。プロジェクトが有効でない、または読み取れない場合は失敗します。
サンプルリソース Ostorlab がスコープ内で最初に予約された外部アドレスを読み取ります。予約済みのものがない場合も成功します。

チェックが失敗すると、以降のチェックもスキップまたは失敗として表示されます。まず最初に失敗したチェックを修正してください。

4 つのチェックがすべて成功した接続テスト

コネクタを同期する

有効なコネクタは 12 時間ごとに自動で同期されます。すぐにインポートするには、コネクタの行で 今すぐ同期 をクリックします。

今すぐ同期の操作

トーストでジョブが確認できます (同期を開始しました (ジョブ ...))。コネクタが無効な場合、または同じコネクタの同期がすでに実行中の場合、同期は拒否されます。

同期開始のトースト

同期の実行履歴とエラーを確認する

最近の同期 をクリックすると、コネクタの実行履歴が表示されます。

最近の同期ダイアログ

列 意味
状態 実行中、成功、一部成功 (一部のプロジェクトが失敗し、残りはインポート済み)、失敗 (同期を完了できなかった。例: Google がトークンを拒否した)。
リソース この実行で見つかったリソース。
作成、更新 新規および変更されたアセットとノード。作成数にはノードに加えて IP アセットとホスト名アセットも含まれます。
古い この実行で確認されなかったため、コネクタが cloud:stale タグを付けたリソース。
エラー スコープエラーの件数。クリックすると一覧が表示されます。

一覧取得に失敗したプロジェクトは 1 件のエラーとなり、他のプロジェクトは引き続き読み取られます。実行は 一部成功 で終了します。

一部成功の同期のエラー

Note

Google Cloud から消えたリソースに cloud:stale タグが付くのは、スコープエラーが一切なかった実行の後だけです。インベントリから削除されることはありません。後の同期でリソースが再び確認されると、このタグは外れます。

実行中 のまま 2 時間を超えた実行は停止したものとして扱われます。新しい同期をブロックしなくなり、次回のスケジュール同期で 失敗 になります。

インベントリでアセットを確認する

インポートされたアセットは、選択した所有者とロケーションに属します。すべてのアセットにタグ cloud:gcp が付きます。

  1. Inventory > Assets を開きます。
  2. 検索パネルを開き、Tags タブでタグ名に cloud、値に gcp を設定して Search をクリックします。

    cloud タグを gcp に設定して絞り込んだインベントリ

  3. 一覧を絞り込むには、コネクタが追加する他のタグで絞り込みます。gcp:account (プロジェクト ID)、gcp:region、gcp:resource (完全なリソース名)、gcp:connector (コネクタの ID) です。

1 つの Google Cloud プロジェクトのアセット: IP、ホスト名、クラウドノード

検出パスをたどる

転送ルールなどのクラウドノードを開くと、ターゲット、タグ、所有者、ロケーションが表示されます。Discovery Path カードには、ノードの由来 (Google Cloud プロジェクト、次にその親リソース) が表示されます。 ノードのパブリックアドレスとホスト名は、自身の検出パスにそのノードを含むため、どのプロジェクトのどのリソースが公開したのかを常に把握できます。

検出パスが表示されたクラウドノード

コネクタを編集、一時停止、削除する

  • 編集 では、名前、プロジェクト ID と組織 ID、認証方式、所有者、ロケーション、有効 スイッチを変更できます。保存済みのキーはそのままにしたい場合は空のままにし、置き換える場合は新しいキーを貼り付けます。

    コネクタ編集フォーム

  • 有効 をオフにすると、コネクタを残したままスケジュール同期を一時停止できます。

  • 削除 はコネクタを削除します。すでにインポートされたアセットはインベントリに残り、今後の同期は停止します。
  • Google Cloud 側の Ostorlab のアクセスも削除するには、サービスアカウント ostorlab-cloud-connector を削除します (または、その IAM バインディングと、Ostorlab を信頼するトークン作成者バインディングを削除します)。サービスアカウントを削除しても、そのために作成したプロジェクトまたは組織のロールバインディングは削除されません。そのメンバーの roles/cloudasset.viewer と roles/browser も削除してください。

トラブルシューティング

症状 確認すること
「Google refused to issue a token for the service account ... Check that the organisation's Ostorlab service account has roles/iam.serviceAccountTokenCreator on it.」 スクリプトの最後のステップが実行されていないか、バインディングが削除されています。スクリプトを再実行してください。
「Google refused the service account key. Check that the key and the service account ... are enabled.」 キーが削除または無効化された、またはサービスアカウントが無効です。新しいキーを作成してコネクタを更新してください。
「Project ... is not active or cannot be read.」 プロジェクト ID が誤っている、プロジェクトが削除中、またはサービスアカウントにそのプロジェクトのロールがありません。
「No active project found in scope.」 組織全体のコネクタで、ロールがプロジェクトにのみ付与されています。ORGANIZATION_ID を指定してスクリプトを再実行してください。
権限 チェックが失敗する スクリプトの API がプロジェクトで有効になっていないか、ロールが不足しています。スクリプトを再実行してください。
JSON キーに関するフォームエラー キーファイル全体を貼り付けてください。client_email と private_key を持つサービスアカウントキー ("type": "service_account") である必要があります。
テストで、現在は接続を利用できないと表示される お客様のプロジェクトではなく Ostorlab 側の問題です。しばらくしてから再試行し、解消しない場合はサポートにお問い合わせください。
「The cloud connector is disabled.」 コネクタの編集フォームで 有効 をオンにしてください。
「A sync of this cloud connector is already running.」 実行中の同期が終わるまでお待ちください。
期待したリソースが見つからない 外部アドレスがない、またはプライベート DNS ゾーンにある可能性があります。コネクタはインターネットに公開されたリソースのみを保持します。

次のステップ