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 インテグレーションを構成する前に、次の前提条件の手順を完了します。
サービス アカウントを作成する
サービス アカウントを作成するには、次の操作を行います。
Google Cloud コンソールで、[認証情報] に移動します。[認証情報] に移動
[認証情報を作成] メニューから [サービス アカウント] を選択します。
[サービス アカウント名] フィールドに名前を入力し、[作成して続行] をクリックします。
[続行 > 完了] をクリックして、ロールの割り当てとプリンシパル アクセスの画面をスキップします。
サービス アカウントにロールを付与する
統合でストレージ バケットとオブジェクトにアクセスして管理できるようにするには、サービス アカウントに必要なロールを付与します。
Google Cloud コンソールで、[IAM と管理] > [IAM] に移動します。
サービス アカウントを見つけて、[編集プリンシパルを編集] をクリックします。
[別のロールを追加] をクリックして、次のように選択します。
ストレージ管理者: バケットとオブジェクトのすべてを管理する権限を付与します。
Service Usage ユーザー: 課金目的で
Quota Project IDを使用する場合にのみ必要です。
[保存] をクリックします。
認証方法を選択して構成する
Workload Identity は、静的シークレットではなく有効期間の短いトークンを使用するため、推奨される認証方法です。
JSON キー: 静的シークレット キーファイルに依存します。
Workload Identity(推奨): 一時アクセス トークンを使用します。
JSON キーを構成する
次の手順で、JSON 形式のサービス アカウント キーファイルを生成します。
Google Cloud コンソールでサービス アカウントを選択し、[キー] に移動します。
[鍵を追加] > [新しい鍵を作成] の順にクリックします。
[JSON] を選択し、[作成] をクリックします。キーファイルがパソコンにダウンロードされます。
Workload Identity の認証情報を構成する
Workload Identity を使用すると、Google SecOps はサービス アカウントを安全に偽装できます。Workload Identity を構成する手順は次のとおりです。
インテグレーション インスタンスを構成する
ID 検出プロセスをトリガーするには、まず Google SecOps で基本的な接続パラメータを構成する必要があります。
[コンテンツ ハブ] > [レスポンスの統合] に移動します。
Google Cloud Storage インテグレーションを検索して選択します。
次の必須パラメータを構成します。
API ルート: ベース URL(
https://storage.googleapis.comなど)を入力します。Workload Identity Email: 先ほど作成したサービス アカウントのメールアドレスを入力します。
SSL の検証: 有効になっていることを確認します。
[User's Service Account](JSON)フィールドは空欄のままにします。
[保存] をクリックします。
一意の ID メールを特定する
特定の ID アドレスを特定するには、接続テストをトリガーする必要があります。これは、Google SecOps が特定の内部プリンシパルを使用して Google Cloud リソースと通信するためです。この手順では、正しいバックエンド プリンシパルに権限が付与されていることを確認します。
[Test] をクリックします。テストは失敗することが想定されます。
[テスト] の横にある close_small ボタンをクリックします。
エラー メッセージで
gke-init-python@...またはsoar-python@...で始まるメールアドレスを検索します。この固有のメールアドレスをコピーします。
権限の借用を許可する
信頼関係を確立するには、サービス アカウントの代行として動作する権限を一意の ID に付与する必要があります。この最後のステップでは、統合が一時的な有効期間の短いトークンを使用してリソースにアクセスできる安全なブリッジを確立します。
Google Cloud コンソールで、[IAM と管理] > [サービス アカウント] に移動します。
ターゲット サービス アカウントを選択し、[権限] に移動します。
[アクセス権を付与] をクリックします。
[新しいプリンシパル] フィールドに、Google SecOps からコピーした一意の ID メールアドレスを貼り付けます。
[ロールを割り当てる] フィールドで、
Service Account Token Creator(roles/iam.serviceAccountTokenCreator)ロールを選択します。[保存] をクリックします。
Cloud Storage を Google SecOps と統合する
統合には次のパラメータが必要です。
| パラメータ | 説明 |
|---|---|
Service Account |
省略可
サービス アカウントの JSON キーファイルの完全な内容。 |
Workload Identity Email |
省略可。 Workload Identity の権限借用に使用されるサービス アカウントのクライアント メールアドレス。 |
Project ID |
Optional Cloud Storage の統合に使用するプロジェクト ID。このパラメータに値を設定しない場合、プロジェクト ID は |
Quota Project ID |
Optional Google Cloud API と課金に使用する Google Cloud プロジェクト ID。このパラメータを使用するには、サービス アカウントに 値が指定されていない場合、プロジェクト ID は |
Google SecOps で統合を構成する手順については、統合を構成するをご覧ください。
必要に応じて、後の段階で変更できます。統合インスタンスを構成すると、ハンドブックで使用できるようになります。複数のインスタンスの構成とサポートの方法については、複数のインスタンスのサポートをご覧ください。
操作
アクションの詳細については、 デスクから保留中のアクションに対応すると手動による対策を実行するをご覧ください。
バケットからオブジェクトをダウンロードする
このアクションを使用して、Cloud Storage バケットから特定のオブジェクト(ファイル)をダウンロードします。
このアクションはエンティティに対しては実行されません。
アクション入力
[バケットからオブジェクトをダウンロードする] アクションには、次のパラメータが必要です。
| パラメータ | 説明 |
|---|---|
Bucket Name |
必須 ダウンロードするオブジェクトを含む Cloud Storage バケットの名前。 |
Object Name |
必須 ダウンロードするオブジェクトのフルネーム。 オブジェクトがバケット内のフォルダにある場合は、 |
Download Path |
必須 ダウンロードしたオブジェクトの絶対パス。既存のディレクトリを指します(例: |
アクションの出力
[バケットからオブジェクトをダウンロード] アクションは、次の出力を提供します。
| アクションの出力タイプ | 対象 |
|---|---|
| ケースウォールのアタッチメント | 利用不可 |
| ケースウォールのリンク | 利用不可 |
| ケースウォール テーブル | 利用不可 |
| 拡充テーブル | 利用不可 |
| 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] アクションは次の出力メッセージを提供します。
| 出力メッセージ | メッセージの説明 |
|---|---|
|
アクションが成功しました。 |
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 を取得するには、バケット名をカンマ区切りの文字列( |
アクションの出力
バケットのアクセス制御リストを取得するアクションでは、次の出力が提供されます。
| アクションの出力タイプ | 対象 |
|---|---|
| ケースウォールのアタッチメント | 利用不可 |
| ケースウォールのリンク | 利用不可 |
| ケースウォール テーブル | 利用不可 |
| 拡充テーブル | 利用不可 |
| JSON の結果 | 利用不可 |
| 出力メッセージ | 利用可能 |
| スクリプトの結果 | 利用可能 |
JSON の結果
[
{"BucketName": "ziv",
"BucketACLs": [
{"Entity": "project-owners-ID",
"Role": "OWNER"}
]
}
]
出力メッセージ
ケースウォールで、[Get a Bucket's Access Control List] アクションは次の出力メッセージを提供します。
| 出力メッセージ | メッセージの説明 |
|---|---|
|
アクションが成功しました。 |
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 アクションは次の出力メッセージを提供します。
| 出力メッセージ | メッセージの説明 |
|---|---|
|
アクションが成功しました。 |
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 アクションは次の出力メッセージを提供します。
| 出力メッセージ | メッセージの説明 |
|---|---|
|
アクションが成功しました。 |
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 |
必須 権限を保持するエンティティ。 使用できる値は次のとおりです。
エンティティの詳細については、リソースの表現をご覧ください。 |
Role |
必須 エンティティに必要なアクセス権限。 次の値を指定できます。
|
アクションの出力
[バケットの ACL エントリを更新] アクションは、次の出力を提供します。
| アクションの出力タイプ | 対象 |
|---|---|
| ケースウォールのアタッチメント | 利用不可 |
| ケースウォールのリンク | 利用不可 |
| ケースウォール テーブル | 利用不可 |
| 拡充テーブル | 利用不可 |
| JSON の結果 | 利用不可 |
| 出力メッセージ | 利用可能 |
| スクリプトの結果 | 利用可能 |
出力メッセージ
ケースウォールで [Update an ACL entry on Bucket] アクションを実行すると、次の出力メッセージが表示されます。
| 出力メッセージ | メッセージの説明 |
|---|---|
|
アクションが成功しました。既存のロールが Role パラメータ値と一致しません。Role パラメータの値を確認します。 |
Successfully updated ACL entity:
ENTITY to role:
ROLE in bucket
BUCKET_NAME. |
アクションが成功しました。 |
|
操作を実行できませんでした。 サーバーへの接続、入力パラメータ、または認証情報を確認してください。 |
スクリプトの結果
次の表に、バケットの ACL エントリを更新するアクションを使用する場合のスクリプト結果出力の値を示します。
| スクリプトの結果名 | 値 |
|---|---|
is_success |
True または False |
バケットにオブジェクトをアップロードする
[Upload an Object To a Bucket] アクションを使用して、Cloud Storage バケットにオブジェクトをアップロードします。
このアクションはエンティティに対しては実行されません。
アクション入力
[Upload an Object To a Bucket] アクションには、次のパラメータが必要です。
| パラメータ | 説明 |
|---|---|
Bucket Name |
必須 オブジェクトをアップロードするバケットの名前。 |
Source File Path |
必須 アップロードするファイルの絶対パス( |
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 アクションは次の出力メッセージを提供します。
| 出力メッセージ | メッセージの説明 |
|---|---|
|
アクションが成功しました。 |
Error executing action "Upload an Object To a Bucket". Reason:
ERROR_REASON |
操作を実行できませんでした。 サーバーへの接続、入力パラメータ、または認証情報を確認してください。 |
スクリプトの結果
次の表に、オブジェクトをバケットにアップロードするアクションを使用する場合のスクリプト結果出力の値を示します。
| スクリプトの結果名 | 値 |
|---|---|
is_success |
True または False |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。