Google Cloud Storage

このドキュメントでは、Cloud Storage を Google Security Operations の SOAR モジュールと統合する方法について説明します。

この統合では、1 つ以上のオープンソース コンポーネントを使用します。この統合のソースコードのコピーを Cloud Storage バケットからダウンロードできます。

ユースケース

Google SecOps SOAR プラットフォームでは、Google Cloud Storage の統合により、次のユースケースが解決されます。

  • インシデント証拠の保存: ハンドブックは、ログやマルウェア サンプルなどのインシデント関連の証拠を自動的に収集して Cloud Storage バケットに保存し、証拠を保存するための改ざん防止リポジトリを提供できます。

  • 脅威インテリジェンスの共有: セキュリティ チームは、Cloud Storage を使用して、悪意のある IP アドレスやドメインのリストなどの脅威インテリジェンス フィードを他のチームや組織と安全に共有できます。フィードを共有することで、脅威対策の連携と対応時間の短縮が可能になります。

  • マルウェア分析サンドボックスの統合: ハンドブックでは、インシデントから不審なファイルをクラウドベースのマルウェア分析サンドボックスに自動的に送信できます。分析結果を Cloud Storage に保存して、レビューや追加のアクションを行うことで、効率的でスケーラブルなマルウェア分析を実現できます。

  • セキュリティ構成のバックアップ: Google SecOps の SOAR 機能を使用して、ファイアウォール ルールや侵入検知システム シグネチャなどの重要なセキュリティ構成の定期的なバックアップを Cloud Storage に自動的に作成します。バックアップを自動化することで、偶発的または悪意のある変更が発生した場合に、ビジネスの継続性と迅速な復旧を実現できます。

  • フィッシング キャンペーン アーティファクトのストレージ: Google SecOps の SOAR 機能を使用して、フィッシング キャンペーンの調査中にフィッシング メール、添付ファイル、その他のアーティファクトを Cloud Storage に保存します。アーティファクト ストレージを使用すると、法的措置の可能性に備えて証拠を一元的に分析して保存できます。

始める前に

Google SecOps で Cloud Storage 統合を構成する前に、次の前提条件の手順を完了します。

  1. サービス アカウントを作成します。

  2. サービス アカウントに必要なロールを付与する。

  3. 認証方法を選択して構成する。

サービス アカウントを作成する

サービス アカウントを作成するには、次の操作を行います。

  1. Google Cloud コンソールで、[認証情報] に移動します。[認証情報] に移動

  2. [認証情報を作成] メニューから [サービス アカウント] を選択します。

  3. [サービス アカウント名] フィールドに名前を入力し、[作成して続行] をクリックします。

  4. [続行 > 完了] をクリックして、オプションのロール割り当て画面とプリンシパル アクセス画面をスキップします。

サービス アカウントにロールを付与する

統合がストレージ バケットとオブジェクトにアクセスして管理できるようにするには、サービス アカウントに必要なロールを付与します。

  1. Google Cloud コンソールで、[IAM と管理] > [IAM] に移動します。

  2. サービス アカウントを見つけて、[editプリンシパルを編集] をクリックします。

  3. [別のロールを追加] をクリックし、次のロールを選択します。

    • ストレージ管理者: バケットとオブジェクトのすべてを管理する権限を付与します。

    • Service Usage コンシューマー: 課金目的で Quota Project ID を使用する場合にのみ必要です。

  4. [保存] をクリックします。

認証方法を選択して構成する

Workload Identity は、静的なシークレットではなく有効期間の短いトークンを使用するため、推奨される認証方法です。

  1. JSON キー: 静的な秘密鍵ファイルに依存します。

  2. Workload Identity(推奨): 一時的なアクセス トークンを使用します。

JSON キーを構成する

JSON 形式のサービス アカウント キーファイルを生成するには、次の手順を行います。

  1. Google Cloud コンソールでサービス アカウントを選択し、[キー] に移動します。

  2. [鍵を追加] > [新しい鍵を作成] の順にクリックします。

  3. [JSON] を選択し、[作成] をクリックします。鍵ファイルがパソコンにダウンロードされます。

Workload Identity 認証情報を構成する

Workload Identity を使用すると、Google SecOps はサービス アカウントの権限を安全に借用できます。Workload Identity を構成するには、次の操作を行います。

統合インスタンスを構成する

ID 検出プロセスをトリガーするには、まず Google SecOps で基本的な接続パラメータを構成する必要があります。

  1. [Content Hub] > [Response Integrations] に移動します。

  2. [Google Cloud Storage] 統合を検索して選択します。

  3. 次の必須パラメータを構成します。

    • API ルート: ベース URL(https://storage.googleapis.com など)を入力します。

    • Workload Identity のメールアドレス: 前に作成したサービス アカウントのメールアドレスを入力します。

    • SSL の検証: 有効になっていることを確認します。

  4. [User's Service Account](JSON)フィールドは空白のままにします。

  5. [保存] をクリックします。

一意の ID メールを特定する

Google SecOps は特定の内部プリンシパルを使用して Google Cloud リソースと通信するため、特定の ID アドレスを特定するには、接続テストをトリガーする必要があります。このステップにより、正しいバックエンド プリンシパルに権限を付与していることを確認できます。

  1. [Test] をクリックします。テストは失敗することが想定されます。

  2. [テスト] の横にある close_small ボタンをクリックします。

  3. エラー メッセージで、gke-init-python@... または soar-python@... で始まるメールアドレスを検索します。この一意のメールアドレスをコピーします。

権限の借用を付与する

信頼関係を確立するには、サービス アカウントに代わって動作する一意の ID に権限を付与する必要があります。この最後のステップにより、統合が一時的な有効期間の短いトークンを使用してリソースにアクセスできるようにする安全なブリッジが確立されます。

  1. Google Cloud コンソールで、[IAM と管理> [サービス アカウント] に移動します。

  2. 対象のサービス アカウントを選択し、[権限] に移動します。

  3. [アクセス権を付与] をクリックします。

  4. [新しいプリンシパル] フィールドに、Google SecOps からコピーした一意の ID のメールアドレスを貼り付けます。

  5. [ロールを割り当てる] フィールドで、Service Account Token Creator(roles/iam.serviceAccountTokenCreator)ロールを選択します。

  6. [保存] をクリックします。

Cloud Storage を Google SecOps と統合する

この統合には、次のパラメータが必要です。

パラメータ 説明
Service Account 省略可

サービス アカウントの JSON 鍵ファイルのすべての内容。

Workload Identity Email 省略可。

Workload Identity の権限借用に使用されるサービス アカウントのクライアント メールアドレス。

Project ID Optional

Cloud Storage 統合に使用するプロジェクト ID。このパラメータに値を設定しない場合、プロジェクト ID は Service Account パラメータで指定された JSON ファイルの内容から取得されます。

Quota Project ID Optional

Google Cloud API と課金に使用する Google Cloud プロジェクト ID。このパラメータでは、サービス アカウントに Service Usage Consumer ロールを付与する必要があります。

値が指定されていない場合、プロジェクト ID は Service Account パラメータで指定された JSON ファイルの内容から取得されます。

Google SecOps で統合を構成する方法については、統合を構成するをご覧ください。

必要に応じて、後の段階で変更できます。統合インスタンスを構成すると、ハンドブックで使用できます。複数のインスタンスを構成してサポートする方法の詳細については、複数のインスタンスのサポートをご覧ください。

操作

アクションの詳細については、 デスクから保留中のアクションに対応するとケースで手動アクションを実行するをご覧ください。

バケットからオブジェクトをダウンロードする

このアクションを使用して、Cloud Storage バケットから特定のオブジェクト(ファイル)をダウンロードします。

このアクションはエンティティに対しては実行されません。

アクションへの入力

「バケットからオブジェクトをダウンロードする」アクションには、次のパラメータが必要です。

パラメータ 説明
Bucket Name 必須

ダウンロードするオブジェクトを含む Cloud Storage バケットの名前。

Object Name 必須

ダウンロードするオブジェクトのフルネーム。

オブジェクトがバケット内のフォルダにある場合は、フォルダパス(folderA/mydocument.pdf など)を含めます。

Download Path 必須

ダウンロードしたオブジェクトの絶対パス。既存のディレクトリ(/tmp/downloads/ など)につながります。

アクションの出力

「バケットからオブジェクトをダウンロードする」アクションの出力は次のとおりです。

アクションの出力タイプ 対象
ケースウォールのアタッチメント 利用不可
ケースウォールのリンク 利用不可
ケースウォール テーブル 利用不可
拡充テーブル 利用不可
JSON の結果 利用可能
出力メッセージ 利用可能
スクリプトの結果 利用可能
JSON の結果

次の例は、[バケットからオブジェクトをダウンロードする] アクションを使用した場合に受信される JSON 結果の出力を示しています。

{
"object_name": "123.txt"
"download_path": "/usr/bin/share/download.txt"
}
出力メッセージ

ケースウォールで、バケットからオブジェクトをダウンロードするアクションにより、次の出力メッセージが表示されます。

出力メッセージ メッセージの説明

OBJECT_NAME successfully downloaded to DESTINATION_PATH.

Action wasn't able to download OBJECT_NAME. Reason: Bucket BUCKET_NAME not found.

Action wasn't able to download OBJECT_NAME. Reason: No such object.

アクションが成功しました。
Error executing action "Download an Object From a Bucket". Reason: ERROR_REASON

操作を実行できませんでした。

サーバーへの接続、入力パラメータ、または認証情報を確認してください。

スクリプトの結果

次の表に、バケットからオブジェクトをダウンロードするアクションを使用した場合のスクリプト結果の出力値を示します。

スクリプトの結果名 値
is_success True または False

バケットのアクセス制御リストを取得する

[Get a Bucket's Access Control List] アクションを使用して、指定した Cloud Storage バケットの ACL を取得して表示します。

このアクションはエンティティに対しては実行されません。

アクションへの入力

バケットのアクセス制御リストの取得アクションには、次のパラメータが必要です。

パラメータ 説明
Bucket Name 必須

ACL を取得する Cloud Storage バケットの名前。複数のバケットの ACL を取得するには、バケット名をカンマ区切りの文字列(bucket1,bucket2,bucket3 など)として入力します。

アクションの出力

バケットのアクセス制御リストを取得するアクションでは、次の出力が提供されます。

アクションの出力タイプ 対象
ケースウォールのアタッチメント 利用不可
ケースウォールのリンク 利用不可
ケースウォール テーブル 利用不可
拡充テーブル 利用不可
JSON の結果 利用不可
出力メッセージ 利用可能
スクリプトの結果 利用可能
JSON の結果
[
  {"BucketName": "ziv",
   "BucketACLs": [
                  {"Entity": "project-owners-ID",
                   "Role": "OWNER"}
                 ]
  }
]
出力メッセージ

ケースウォールでは、バケットのアクセス制御リストを取得するアクションにより、次の出力メッセージが表示されます。

出力メッセージ メッセージの説明

Successfully retrieved the access control list (ACL) for the Cloud Storage buckets BUCKET_NAMES

Action wasn't able to return the access control list(ACL) for the Cloud Storage buckets BUCKET_NAMES. Reason: Cannot get legacy ACL for a bucket that has uniform bucket-level access. Read more at https://docs.cloud.google.com/storage/docs/uniform-bucket-level-access

Action wasn't able to return the access control list(ACL) for the Cloud Storage buckets BUCKET_NAMES.

アクションが成功しました。
Error executing action "Get a Bucket's Access Control List". Reason: ERROR_REASON

操作を実行できませんでした。

サーバーへの接続、入力パラメータ、または認証情報を確認してください。

スクリプトの結果

次の表に、バケットのアクセス制御リストを取得するアクションを使用した場合のスクリプト結果の出力値を示します。

スクリプトの結果名 値
is_success True または False

バケット オブジェクトを一覧表示する

List Bucket Objects アクションを使用して、Cloud Storage バケットに保存されているオブジェクトを一覧表示します。

このアクションはエンティティに対しては実行されません。

アクションへの入力

List Bucket Objects アクションには、次のパラメータが必要です。

パラメータ 説明
Bucket Name 必須

オブジェクトを取得するバケットの名前。

Max Objects to Return Optional

返すオブジェクトの数。

デフォルトでは、アクションの実行ごとに 50 個のオブジェクトが返されます。

Retrieves the Access Control List of an object Optional

選択すると、アクションはオブジェクト ACL を取得します。

デフォルトでは選択されていません。

アクションの出力

List Bucket Objects アクションは、次の出力を提供します。

アクションの出力タイプ 対象
ケースウォールのアタッチメント 利用不可
ケースウォールのリンク 利用不可
ケースウォール テーブル 利用不可
拡充テーブル 利用不可
JSON の結果 利用可能
出力メッセージ 利用可能
スクリプトの結果 利用可能
JSON の結果

次の例は、List Bucket Objects アクションを使用した場合に受信される JSON 結果の出力を示しています。

  • Retrieves the Access Control List of an object パラメータが選択されていない場合:

    {
        "Objects": [
            {
                "ObjectName": "test.txt",
            "Bucket":
            "ContentType":
                "TimeCreated": " ",
                "TimeUpdated": " ",
                "Size": 18,
                "MD5": "7CjVfQ+Oz/C0pI08IKRdvQ==",
                "Owner": "",
                "CR32c": "RQEqxA==",
                "id": "siemplify-tip/test.txt/1604926667310271"
            }
        ]
    }
    
  • Retrieves the Access Control List of an object パラメータが選択されている場合:

    {
        "Objects": [
            {
                "ObjectName": "test.txt",
            "Bucket": "BUCKET_NAME",
            "ContentType": "text/plain"
                "TimeCreated": " ",
                "TimeUpdated": " ",
                "Size": 18,
                "MD5": "7CjVfQ+Oz/C0pI08IKRdvQ==",
                "Owner": "",
                "CR32c": "RQEqxA==",
                "id": "BUCKET_NAME/test.txt/1604926667310271",
                "ObjectACL": [
                    {
                        "entity": "user@example.com",
                        "role": "OWNER"
                    }]
            },
        ]
    }
    
出力メッセージ

ケースウォールでは、List Bucket Objects アクションによって次の出力メッセージが表示されます。

出力メッセージ メッセージの説明

Successfully returned objects of the BUCKET_NAME bucket in Google Cloud Storage.

Action wasn't able to return objects of the BUCKET_NAME bucket in Google Cloud Storage.

アクションが成功しました。
Error executing action "List Bucket Objects". Reason: ERROR_REASON

操作を実行できませんでした。

サーバーへの接続、入力パラメータ、または認証情報を確認してください。

スクリプトの結果

次の表に、List Bucket Objects アクションを使用した場合のスクリプト結果出力の値を示します。

スクリプトの結果名 値
is_success True または False

バケットの一覧表示

List Buckets アクションを使用して、Cloud Storage からバケットのリストを取得します。

このアクションはエンティティに対しては実行されません。

アクションへの入力

List Buckets アクションには、次のパラメータが必要です。

パラメータ 説明
Max Results Optional

返されるバケットの最大数。

デフォルトでは、このアクションは 50 個のバケットを返します。

アクションの出力

List Buckets アクションは、次の出力を提供します。

アクションの出力タイプ 対象
ケースウォールのアタッチメント 利用不可
ケースウォールのリンク 利用不可
ケースウォール テーブル 利用不可
拡充テーブル 利用不可
JSON の結果 利用可能
出力メッセージ 利用可能
スクリプトの結果 利用可能
JSON の結果

次の例は、List Buckets アクションを使用した場合に受信される JSON 結果の出力を示しています。

{
    "Buckets": [
        {
            "CreationDate": "2020-11-09T12:57:03.981Z",
            "ModificationDate": "2020-11-09T12:57:03.981Z",
            "Name": "testexample",
            "Owner": "testexample"
        }]
}
出力メッセージ

ケースウォールでは、List Buckets アクションによって次の出力メッセージが表示されます。

出力メッセージ メッセージの説明

Successfully listed available buckets in Google Cloud Storage.

Action wasn't able to list available buckets in Google Cloud Storage.

アクションが成功しました。
Error executing action "List Buckets". Reason: ERROR_REASON

操作を実行できませんでした。

サーバーへの接続、入力パラメータ、または認証情報を確認してください。

スクリプトの結果

次の表に、List Buckets アクションを使用した場合のスクリプト結果の出力値を示します。

スクリプトの結果名 値
is_success True または False

Ping

ping アクションを使用して、Cloud Storage への接続をテストします。

このアクションはエンティティに対しては実行されません。

アクションへの入力

なし

アクションの出力

このアクションでは、次の出力が提供されます。

アクションの出力タイプ 対象
ケースウォールのアタッチメント 利用不可
ケースウォールのリンク 利用不可
ケースウォール テーブル 利用不可
拡充テーブル 利用不可
JSON の結果 利用不可
出力メッセージ 利用可能
スクリプトの結果 利用可能
出力メッセージ

ケースウォールでは、Ping アクションによって次の出力メッセージが表示されます。

出力メッセージ メッセージの説明
Successfully connected to the Google Cloud Storage server with the provided connection parameters! アクションが成功しました。
Failed to connect to the Google Cloud Storage server! Error is ERROR_REASON

操作を実行できませんでした。

サーバーへの接続、入力パラメータ、または認証情報を確認してください。

スクリプトの結果

次の表に、Ping アクションを使用した場合のスクリプト結果の出力値を示します。

スクリプトの結果名 値
is_success True または False

バケットから公開アクセスを削除する

[バケットから公開アクセスを削除する] アクションを使用して、Cloud Storage バケットから公開アクセスを削除します。

この操作を行うには、統合で使用するサービス アカウントに Storage Admin ロールを付与する必要があります。

このアクションはエンティティに対しては実行されません。

アクションへの入力

「バケットから公開アクセスを削除する」アクションには、次のパラメータが必要です。

パラメータ 説明
Resource Name 必須

バケットのリソース名。

Prevent Public Access From Bucket 必須

選択すると、公開アクセスを防止するようにバケットが構成されます。

アクションの出力

「バケットから公開アクセスを削除する」アクションの出力は次のとおりです。

アクションの出力タイプ 対象
ケースウォールのアタッチメント 利用不可
ケースウォールのリンク 利用不可
ケースウォール テーブル 利用不可
拡充テーブル 利用不可
JSON の結果 利用不可
出力メッセージ 利用可能
スクリプトの結果 利用可能
出力メッセージ

ケースウォールで、[Remove Public Access From Bucket] アクションを実行すると、次の出力メッセージが表示されます。

出力メッセージ メッセージの説明
Successfully removed public access from bucket using Google Cloud Storage: RESOURCE_NAME アクションが成功しました。
Error executing action "Remove Public Access From Bucket". Reason: ERROR_REASON

操作を実行できませんでした。

サーバーへの接続、入力パラメータ、または認証情報を確認してください。

スクリプトの結果

次の表に、Remove Public Access From Bucket アクションを使用した場合のスクリプト結果の出力値を示します。

スクリプトの結果名 値
is_success True または False

バケットの ACL エントリを更新する

[バケットの ACL エントリを更新] アクションを使用して、指定した Cloud Storage バケットの ACL エントリを更新します。

アクションへの入力

バケットの ACL エントリの更新アクションには、次のパラメータが必要です。

パラメータ 説明
Bucket Name 必須

ACL を変更するバケットの名前。

Entity 必須

権限を保持するエンティティ。

指定できる値は次のとおりです。

  • user-userId
  • user-emailAddress
  • group-groupId
  • group-emailAddress
  • allUsers
  • allAuthenticatedUsers

エンティティの詳細については、リソース表現をご覧ください。

Role 必須

エンティティに必要なアクセス権限。

次の値を指定できます。

  • OWNER
  • READER
  • WRITER

アクションの出力

バケットの ACL エントリを更新するアクションでは、次の出力が提供されます。

アクションの出力タイプ 対象
ケースウォールのアタッチメント 利用不可
ケースウォールのリンク 利用不可
ケースウォール テーブル 利用不可
拡充テーブル 利用不可
JSON の結果 利用不可
出力メッセージ 利用可能
スクリプトの結果 利用可能
出力メッセージ

ケースウォールでは、バケットの ACL エントリを更新するアクションにより、次の出力メッセージが表示されます。

出力メッセージ メッセージの説明

Action wasn't able to update the ACL entity: ENTITY to role: ROLE in bucket BUCKET_NAME. Reason: OWNERs are WRITERs.

Action wasn't able to update the ACL entity: ENTITY to role: ROLE in bucket BUCKET_NAME. Reason: OWNERs are WRITERs.

アクションが成功しました。既存のロールが Role パラメータ値と一致しません。Role パラメータの値を確認します。
Successfully updated ACL entity: ENTITY to role: ROLE in bucket BUCKET_NAME. アクションが成功しました。

Error executing action "Update an ACL entry on Bucket". Reason: Entity ENTITY does not exist in the ACL of bucket BUCKET_NAME.

Action wasn't able to update the ACL entity: ENTITY to role: ROLE in bucket BUCKET_NAME. The entity holding the permission can be user-userId, user-emailAddress, group-groupId, group-emailAddress, allUsers, or allAuthenticatedUsers.

Error executing action "Update an ACL entry on Bucket". Reason: ERROR_REASON

操作を実行できませんでした。

サーバーへの接続、入力パラメータ、または認証情報を確認してください。

スクリプトの結果

次の表に、[バケットの ACL エントリを更新する] アクションを使用した場合のスクリプト結果の出力値を示します。

スクリプトの結果名 値
is_success True または False

バケットにオブジェクトをアップロードする

[Upload an Object To a Bucket] アクションを使用して、Cloud Storage バケットにオブジェクトをアップロードします。

このアクションはエンティティに対しては実行されません。

アクションへの入力

[Upload an Object To a Bucket] アクションには、次のパラメータが必要です。

パラメータ 説明
Bucket Name 必須

オブジェクトをアップロードするバケットの名前。

Source File Path 必須

アップロードするファイルの絶対パス(/local/path/to/filename など)。

Object Name 必須

バケット内のアップロードされたオブジェクトの名前。

アクションの出力

「バケットにオブジェクトをアップロードする」アクションでは、次の出力が提供されます。

アクションの出力タイプ 対象
ケースウォールのアタッチメント 利用不可
ケースウォールのリンク 利用不可
ケースウォール テーブル 利用不可
拡充テーブル 利用不可
JSON の結果 利用可能
出力メッセージ 利用可能
スクリプトの結果 利用可能
JSON の結果
{
   "object_id":"BUCKET_NAME/errorlog.txt/1610616919132517",
   "Object_name":"errorlog.txt",
   "md5_hash":"PTdL8D6pBwIKyMfIXR/H9A==",
   "object_path":"/b/BUCKET_NAME/o/errorlog.txt"
}
出力メッセージ

ケースウォールでは、Upload an Object To a Bucket アクションにより、次の出力メッセージが表示されます。

出力メッセージ メッセージの説明

Successfully uploaded SOURCE_PATH to bucket: BUCKET_NAME.

Action wasn't able to upload SOURCE_PATH to Google Cloud Storage. Reason:No such file or directory: SOURCE_PATH.

アクションが成功しました。
Error executing action "Upload an Object To a Bucket". Reason: ERROR_REASON

操作を実行できませんでした。

サーバーへの接続、入力パラメータ、または認証情報を確認してください。

スクリプトの結果

次の表に、[Upload an Object To a Bucket] アクションを使用した場合のスクリプト結果の出力値を示します。

スクリプトの結果名 値
is_success True または False

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。