Cloud Storage コンテキスト ログを収集する
このドキュメントでは、Cloud Storage を使用して Cloud Storage コンテキスト ログをエクスポートし、Google Security Operations に取り込む方法について説明します。パーサーは、Cloud Storage ログから受信した JSON データをクリーンアップして構造化します。次に、関連するフィールドを統合データモデル(UDM)にマッピングし、ラベルとメタデータでデータを拡充して、セキュリティ エコシステム内で一貫した表現と分析を実現します。
始める前に
次の前提条件を満たしていることを確認します。
- Google SecOps インスタンス。
- Cloud Storage が Google Cloud 環境で設定され、有効になっている。
- Google Cloud への特権アクセスと適切な権限。
Cloud Storage バケットを作成する
- Google Cloud コンソールにログインします。
[Cloud Storage バケット] のページに移動します。
[作成] をクリックします。
[バケットの作成] ページでユーザーのバケット情報を入力します。以下のステップでは、操作を完了した後に [続行] をクリックして、次のステップに進みます。
[始める] セクションで、次の操作を行います。
- バケット名の要件を満たす一意の名前(google-storage-context-logs など)を入力します。
階層名前空間を有効にするには、展開矢印をクリックして [Optimize for file oriented and data-intensive workloads] セクションを開き、[このバケットで階層的な名前空間を有効にする] を選択します。
バケットラベルを追加するには、展開矢印をクリックして [ラベル] セクションを開きます。
[ラベルを追加] をクリックし、ラベルのキーと値を指定します。
[データの保存場所の選択] セクションで、次の操作を行います。
- ロケーション タイプを選択してください。
ロケーション タイプのメニューを使用して、バケット内のオブジェクト データが永続的に保存されるロケーションを選択します。
クロスバケット レプリケーションを設定するには、[クロスバケット レプリケーションを設定する] セクションを開きます。
[データのストレージ クラスを選択する] セクションで、バケットのデフォルトのストレージ クラスを選択します。あるいは、Autoclass を選択して、バケットデータのストレージ クラスを自動的に管理します。
[オブジェクトへのアクセスを制御する方法を選択する] セクションで、[なし] を選択して公開アクセスの防止を適用し、バケットのオブジェクトの [アクセス制御モデル] を選択します。
[オブジェクト データを保護する方法を選択する] セクションで、次の操作を行います。
- [データ保護] で、バケットに設定するオプションを選択します。
- オブジェクト データの暗号化方法を選択するには、[データ暗号化] というラベルの付いた展開矢印をクリックし、データの暗号化方法を選択します。
[作成] をクリックします。
Cloud Storage コンテキスト ログのエクスポートを構成する
- Google Cloud コンソールにログインします。
- [ロギング>ログルーター] に移動します。
- [シンクを作成] をクリックします。
次の構成パラメータを指定します。
- シンク名: わかりやすい名前を入力します(例:
Storage-Context-Sink
)。 - シンクの宛先: [Cloud Storage] を選択し、バケットの URI(例:
gs://google-storage-context-logs
)を入力します。 ログフィルタ:
logName="*storage*" resource.type="gcs_bucket"
- シンク名: わかりやすい名前を入力します(例:
[作成] をクリックします。
Cloud Storage の権限を構成する
- [IAM と管理] > [IAM] に移動します。
- Cloud Logging サービス アカウントを見つけます。
- バケットに対する roles/storage.admin を付与します。
フィードを設定する
Google SecOps プラットフォームでフィードを設定するには、次の 2 つのエントリ ポイントがあります。
- [SIEM 設定] > [フィード]
- [Content Hub] > [Content Packs]
[SIEM 設定] > [フィード] でフィードを設定する
フィードを構成する手順は次のとおりです。
- [SIEM Settings] > [Feeds] に移動します。
- [Add New Feed] をクリックします。
- 次のページで [単一のフィードを設定] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例: Cloud Storage コンテキスト ログ)。
- [Source type] として [Google Cloud Storage] を選択します。
- [Log type] で [GCP Google Cloud Storage Context] を選択します。
- [Chronicle Service Account] フィールドの横にある [サービス アカウントを取得する] をクリックします。
- [次へ] をクリックします。
次の入力パラメータの値を指定します。
- ストレージ バケット URI: Cloud Storage バケットの URL(例:
gs://google-storage-context-logs
)。 - URI Is A: [サブディレクトリを含むディレクトリ] を選択します。
Source deletion options: 必要に応じて削除オプションを選択します。
- ストレージ バケット URI: Cloud Storage バケットの URL(例:
[次へ] をクリックします。
[Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。
コンテンツ ハブからフィードを設定する
次のフィールドに値を指定します。
- ストレージ バケット URI: Cloud Storage バケットの URL(例:
gs://google-storage-context-logs
)。 - URI Is A: [サブディレクトリを含むディレクトリ] を選択します。
- Source deletion options: 必要に応じて削除オプションを選択します。
詳細オプション
- フィード名: フィードを識別する事前入力された値。
- ソースタイプ: Google SecOps にログを収集するために使用される方法。
- アセットの名前空間: フィードに関連付けられた名前空間。
- Ingestion Labels: このフィードのすべてのイベントに適用されるラベル。
UDM マッピング テーブル
ログフィールド | UDM マッピング | ロジック |
---|---|---|
祖先 | event.idm.entity.entity.resource.attribute.labels.value | 祖先値は、未加工ログの ancestors 配列から抽出されます。 |
assetType | event.idm.entity.entity.resource.type | 未加工ログの assetType フィールドから直接マッピングされます。 |
insertId | event.idm.entity.metadata.product_entity_id | 未加工ログの insertId フィールドから直接マッピングされます。 |
labels.compute.googleapis.com/resource_name | event.idm.entity.entity.resource.name | 未加工ログの labels.compute.googleapis.com/resource_name フィールドから直接マッピングされます。 |
labels.k8s-pod/controller-revision-hash | event.idm.entity.entity.file.sha1 | 未加工ログの labels.k8s-pod/controller-revision-hash フィールドから直接マッピングされます。 |
labels.k8s-pod/name | event.idm.entity.entity.resource.attribute.labels.value | 未加工ログの labels.k8s-pod/name フィールドから直接マッピングされます。 |
labels.k8s-pod/pod-template-generation | event.idm.entity.entity.resource.attribute.labels.value | 未加工ログの labels.k8s-pod/pod-template-generation フィールドから直接マッピングされます。 |
logName | event.idm.entity.entity.resource.attribute.labels.value | 未加工ログの logName フィールドから直接マッピングされます。 |
name | event.idm.entity.entity.resource.name | 未加工ログの name フィールドから直接マッピングされます。 |
receiveTimestamp | event.idm.entity.entity.resource.attribute.creation_time | 未加工ログの receiveTimestamp フィールドからタイムスタンプ形式に変換されます。 |
resource.data.iamConfiguration.publicAccessPrevention | event.idm.entity.entity.resource.attribute.labels.value | 未加工ログの resource.data.iamConfiguration.publicAccessPrevention フィールドから直接マッピングされます。 |
resource.data.id | event.idm.entity.entity.resource.product_object_id | 未加工ログの resource.data.id フィールドから直接マッピングされます。 |
resource.data.kind | event.idm.entity.entity.resource.type | 未加工ログの resource.data.kind フィールドから直接マッピングされます。 |
resource.data.labels.app_id | event.idm.entity.entity.resource.attribute.labels.value | 未加工ログの resource.data.labels.app_id フィールドから直接マッピングされます。 |
resource.data.labels.app_name | event.idm.entity.entity.resource.attribute.labels.value | 未加工ログの resource.data.labels.app_name フィールドから直接マッピングされます。 |
resource.data.labels.bucket_id | event.idm.entity.entity.resource.attribute.labels.value | 未加工ログの resource.data.labels.bucket_id フィールドから直接マッピングされます。 |
resource.data.labels.data_classification | event.idm.entity.entity.resource.attribute.labels.value | 未加工ログの resource.data.labels.data_classification フィールドから直接マッピングされます。 |
resource.data.labels.dept_name | event.idm.entity.entity.resource.attribute.labels.value | 未加工ログの resource.data.labels.dept_name フィールドから直接マッピングされます。 |
resource.data.labels.dept_no | event.idm.entity.entity.resource.attribute.labels.value | 未加工ログの resource.data.labels.dept_no フィールドから直接マッピングされます。 |
resource.data.labels.environment | event.idm.entity.entity.resource.attribute.labels.value | 未加工ログの resource.data.labels.environment フィールドから直接マッピングされます。 |
resource.data.labels.goog-composer-environment | event.idm.entity.entity.resource.attribute.labels.value | 未加工ログの resource.data.labels.goog-composer-environment フィールドから直接マッピングされます。 |
resource.data.labels.goog-composer-location | event.idm.entity.entity.resource.attribute.labels.value | 未加工ログの resource.data.labels.goog-composer-location フィールドから直接マッピングされます。 |
resource.data.labels.goog-composer-version | event.idm.entity.entity.resource.attribute.labels.value | 未加工ログの resource.data.labels.goog-composer-version フィールドから直接マッピングされます。 |
resource.data.labels.technical_contact | event.idm.entity.entity.resource.attribute.labels.value | 未加工ログの resource.data.labels.technical_contact フィールドから直接マッピングされます。 |
resource.data.labels.type | event.idm.entity.entity.resource.attribute.labels.value | 未加工ログの resource.data.labels.type フィールドから直接マッピングされます。 |
resource.data.location | event.idm.entity.entity.location.name | 未加工ログの resource.data.location フィールドから直接マッピングされます。 |
resource.data.projectNumber | event.idm.entity.entity.resource.attribute.cloud.project.id | 未加工ログの resource.data.projectNumber フィールドから直接マッピングされます。 |
resource.data.selfLink | event.idm.entity.entity.url | 未加工ログの resource.data.selfLink フィールドから直接マッピングされます。 |
resource.data.timeCreated | event.idm.entity.entity.resource.attribute.creation_time | 未加工ログの resource.data.timeCreated フィールドからタイムスタンプ形式に変換されます。 |
resource.data.updated | event.idm.entity.entity.resource.attribute.last_update_time | 未加工ログの resource.data.updated フィールドからタイムスタンプ形式に変換されます。 |
resource.discoveryDocumentUri | event.idm.entity.entity.file.full_path | 未加工ログの resource.discoveryDocumentUri フィールドから直接マッピングされます。 |
resource.labels.cluster_name | event.idm.entity.entity.resource.attribute.labels.value | 未加工ログの resource.labels.cluster_name フィールドから直接マッピングされます。 |
resource.labels.container_name | event.idm.entity.entity.resource.attribute.labels.value | 未加工ログの resource.labels.container_name フィールドから直接マッピングされます。 |
resource.labels.location | event.idm.entity.entity.location.name | 未加工ログの resource.labels.location フィールドから直接マッピングされます。 |
resource.labels.namespace_name | event.idm.entity.entity.resource.attribute.labels.value | 未加工ログの resource.labels.namespace_name フィールドから直接マッピングされます。 |
resource.labels.pod_name | event.idm.entity.entity.resource.attribute.labels.value | 未加工ログの resource.labels.pod_name フィールドから直接マッピングされます。 |
resource.labels.project_id | event.idm.entity.entity.resource.attribute.cloud.project.id | 未加工ログの resource.labels.project_id フィールドから直接マッピングされます。 |
resource.parent | event.idm.entity.entity.resource.parent | 未加工ログの resource.parent フィールドから直接マッピングされます。 |
resource.type | event.idm.entity.entity.resource.type | 未加工ログの resource.type フィールドから直接マッピングされます。 |
resource.version | event.idm.entity.entity.resource.attribute.labels.value | 未加工ログの resource.version フィールドから直接マッピングされます。 |
textPayload | event.idm.entity.entity.resource.attribute.labels.value | 未加工ログの textPayload フィールドから直接マッピングされます。 |
なし | event.idm.entity.metadata.collected_timestamp | 収集されたタイムスタンプはログエントリのタイムスタンプです。 |
なし | event.idm.entity.metadata.entity_type | RESOURCE にハードコードされています。 |
なし | event.idm.entity.metadata.product_name | GCP Storage Context にハードコードされています。 |
なし | event.idm.entity.metadata.vendor_name | Google Cloud Platform にハードコードされています。 |
なし | event.idm.entity.entity.resource.attribute.cloud.environment | GOOGLE_CLOUD_PLATFORM にハードコードされています。 |
なし | event.idm.entity.entity.resource.resource_type | STORAGE_BUCKET にハードコードされています。 |
なし | event.timestamp | イベントのタイムスタンプはログエントリのタイムスタンプです。 |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。