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. サービス アカウントを見つけて、[編集プリンシパルを編集] をクリックします。

  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. [コンテンツ ハブ> レスポンス統合] に移動します。

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

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

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

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

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

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

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

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

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

  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 の結果

次の例は、[Download an Object From a Bucket] アクションを使用した場合に受信する 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

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

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

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

アクションへの入力

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

パラメータ 説明
Bucket Name 必須

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

Max Objects to Return Optional

返すオブジェクトの数。

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

Retrieves the Access Control List of an object Optional

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

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

アクションの出力

バケット オブジェクトのリストアクションは、次の出力を提供します。

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

次の例では、バケット オブジェクトのリストアクションを使用した場合に受信される 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

バケットの一覧表示

[バケットを一覧表示] アクションを使用して、Cloud Storage からバケットのリストを取得します。

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

アクションへの入力

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

パラメータ 説明
Max Results Optional

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

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

アクションの出力

バケットのリスト取得アクションは、次の出力を提供します。

アクションの出力タイプ 対象
ケースウォールのアタッチメント 利用不可
ケースウォールのリンク 利用不可
ケースウォール テーブル 利用不可
拡充テーブル 利用不可
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

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

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

スクリプトの結果

次の表に、バケットから一般公開アクセスを削除するアクションを使用した場合のスクリプト結果出力の値を示します。

スクリプトの結果名 値
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 の結果 利用不可
出力メッセージ 利用可能
スクリプトの結果 利用可能
出力メッセージ

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

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

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

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

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

スクリプトの結果

次の表に、[Update an ACL entry on Bucket] アクションを使用する場合のスクリプト結果出力の値を示します。

スクリプトの結果名 値
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 必須

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

アクションの出力

[Upload an Object To a Bucket] アクションは、次の出力を提供します。

アクションの出力タイプ 対象
ケースウォールのアタッチメント 利用不可
ケースウォールのリンク 利用不可
ケースウォール テーブル 利用不可
拡充テーブル 利用不可
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 のプロフェッショナルから回答を得ることができます。