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 Email: 先ほど作成したサービス アカウントのメールアドレスを入力します。

    • 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 Creatorroles/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"
}
出力メッセージ

ケースウォールで、[Download an Object From a Bucket] アクションは次の出力メッセージを提供します。

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

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"}
                 ]
  }
]
出力メッセージ

ケースウォールで、[Get a Bucket's Access Control List] アクションは次の出力メッセージを提供します。

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

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

次の例は、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

バケットの一覧表示

バケットの一覧取得アクションを使用して、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

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

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

スクリプトの結果

次の表に、バケットの 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

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

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

スクリプトの結果

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

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

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