Cloud Identity and Access Management(IAM)分析ログを収集する
このドキュメントでは、Cloud Storage を使用して Cloud IAM Analysis ログをエクスポートし、Google Security Operations に取り込む方法について説明します。パーサーは、 Google Cloud IAM JSON データからユーザー情報とリソース情報を抽出します。抽出されたフィールドを UDM にマッピングし、関連するロールとリソースの関係を持つユーザー エンティティを作成して、最終的に Google SecOps プラットフォーム内のセキュリティ コンテキストを拡充します。
始める前に
- Google SecOps インスタンスがあることを確認します。
- Google Cloud 環境で IAM が設定され、アクティブになっていることを確認します。 Google Cloud
- IAM ログにアクセスするための特権アクセス権と適切な権限があることを確認します。 Google Cloud
Cloud Storage バケットを作成する
- Google Cloud コンソールにログインします。
[Cloud Storage バケット] のページに移動します。
[作成] をクリックします。
[バケットの作成] ページでユーザーのバケット情報を入力します。以下のステップでは、操作を完了した後に [続行] をクリックして、次のステップに進みます。
[始める] セクションで、次の操作を行います。
- バケット名の要件を満たす一意の名前を入力します(google-cloud-iam-logs など)。
階層名前空間を有効にするには、展開矢印をクリックして [Optimize for file oriented and data-intensive workloads] セクションを開き、[このバケットで階層的な名前空間を有効にする] を選択します。
バケットラベルを追加するには、展開矢印をクリックして [ラベル] セクションを開きます。
[ラベルを追加] をクリックし、ラベルのキーと値を指定します。
[データの保存場所の選択] セクションで、次の操作を行います。
- ロケーション タイプを選択してください。
ロケーション タイプのメニューを使用して、バケット内のオブジェクト データが永続的に保存されるロケーションを選択します。
クロスバケット レプリケーションを設定するには、[クロスバケット レプリケーションを設定する] セクションを開きます。
[データのストレージ クラスを選択する] セクションで、バケットのデフォルトのストレージ クラスを選択します。あるいは、Autoclass を選択して、バケットデータのストレージ クラスを自動的に管理します。
[オブジェクトへのアクセスを制御する方法を選択する] セクションで、[なし] を選択して公開アクセスの防止を適用し、バケットのオブジェクトの [アクセス制御モデル] を選択します。
[オブジェクト データを保護する方法を選択する] セクションで、次の操作を行います。
- [データ保護] で、バケットに設定するオプションを選択します。
- オブジェクト データの暗号化方法を選択するには、[データ暗号化] というラベルの付いた展開矢印をクリックし、データの暗号化方法を選択します。
[作成] をクリックします。
Google Cloud IAM 分析ログのエクスポートを構成する
- Google Cloud コンソールにログインします。
- [ロギング] > [ログルーター] に移動します。
- [シンクを作成] をクリックします。
次の構成パラメータを指定します。
- シンク名: わかりやすい名前を入力します(例:
IAM-Analysis-Sink
)。 - シンク デスティネーション: [Cloud Storage Storage] を選択し、バケットの URI(
gs://gcp-iam-analysis-logs
など)を入力します。 ログフィルタ:
logName="*iam*" resource.type="gce_instance"
Cloud Storage の権限を構成する
- シンク名: わかりやすい名前を入力します(例:
[IAM と管理] > [IAM] に移動します。
Cloud Logging サービス アカウントを見つけます。
バケットに対する roles/storage.admin を付与します。
Google Cloud IAM 分析ログを取り込むように Google SecOps でフィードを構成する
- [SIEM 設定] > [フィード] に移動します。
- [新しく追加] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例: Google Cloud IAM Analysis Logs)。
- [Source type] として [Google Cloud Storage] を選択します。
- [ログタイプ] として [GCP IAM Analysis] を選択します。
- [Chronicle Service Account] フィールドの横にある [Get Service Account] をクリックします。
- [次へ] をクリックします。
次の入力パラメータの値を指定します。
- ストレージ バケット URI: Cloud Storage バケットの URL(
gs://gcp-iam-analysis-logs
など)。 - URI Is A: [サブディレクトリを含むディレクトリ] を選択します。
Source deletion options: 必要に応じて削除オプションを選択します。
Asset namespace: アセットの名前空間。
Ingestion labels: このフィードのイベントに適用されるラベル。
- ストレージ バケット URI: Cloud Storage バケットの URL(
[次へ] をクリックします。
[Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。
UDM マッピング テーブル
ログフィールド | UDM マッピング | ロジック |
---|---|---|
accessControlLists.accesses.permission | relations.entity.resource.attribute.permissions.name | 未加工ログの accessControlLists.accesses.permission フィールドから直接取得されます。 |
attachedResourceFullName | relations.entity.resource.name | 未加工ログの attachedResourceFullName フィールドから直接マッピングされますが、末尾のリソース名は削除されます。 |
relations.entity.resource.attribute.cloud.environment | GOOGLE_CLOUD_PLATFORM に設定します。 |
|
relations.entity.resource.product_object_id | STORAGE_BUCKET の場合は、未加工ログの attachedResourceFullName フィールドから直接取得されますが、末尾のリソース名は削除されます。BigQuery データセットの場合は、projectName (attachedResourceFullName から抽出)に続いてコロンと datasetName (attachedResourceFullName から抽出)フィールドが続きます。 |
|
relations.entity.resource.resource_type | 未加工ログの attachedResourceFullName フィールドのパターンによって決定されます。 |
|
relations.entity_type | SERVICE_ACCOUNT を除き、RESOURCE に設定します。SERVICE_ACCOUNT は USER に設定します。 |
|
relations.relationship | MEMBER に設定します。 |
|
metadata.collected_timestamp | 未加工ログの timestamp フィールドから直接取得されます。 |
|
metadata.entity_type | USER に設定します。 |
|
metadata.product_name | GCP IAM ANALYSIS に設定します。 |
|
metadata.vendor_name | Google Cloud Platform に設定します。 |
|
iamBinding.role | entity.user.attribute.roles.name | 未加工ログの iamBinding.role フィールドから直接取得されます。 |
identityList.identities.name | entity.user.attribute.roles.type | identityList.identities.name フィールドに文字列 serviceAccount が含まれている場合は、SERVICE_ACCOUNT に設定します。 |
entity.user.email_addresses | identityList.identities.name フィールドに @ 記号が含まれている場合、メールアドレスとして扱われます。 |
|
entity.user.userid | identityList.identities.name フィールドに @ 記号が含まれていない場合、ユーザー ID として扱われます。 |
|
identityList.identities.product_object_id | entity.user.product_object_id | 未加工ログの identityList.identities.product_object_id フィールドから直接取得されます。 |
timestamp | timestamp | 未加工ログの timestamp フィールドから直接取得されます。 |
変更点
2023-02-27
バグの修正:
- フィールド
iamBinding.members
とentity.user.group_identifiers
のマッピングを削除しました。
2022-12-28
機能強化:
- フィールド
iamBinding.role
をentity.user.attribute.role.name
にマッピングしました。 - フィールド
iamBinding.members
をentity.user.group_identifiers
にマッピングしました。
2022-07-27
機能強化:
event.idm.entity.entity.user.userid
にマッピングされていたidentity.product_object_id
のマッピングを削除しました。
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。