Tanium 監査ログを収集する
このドキュメントでは、Tanium Connect のネイティブ S3 エクスポート機能を使用して、Amazon S3 を介して Tanium 監査ログを Google Security Operations に取り込む方法について説明します。パーサーはログを抽出し、最初に多数のデフォルト フィールドをクリアします。次に、grok と json フィルタを使用してログメッセージを解析し、タイムスタンプ、デバイス IP、監査の詳細などのフィールドを抽出します。パーサーは、抽出されたこれらのフィールドを UDM にマッピングし、さまざまなデータ型と条件ロジックを処理して、特定の Tanium 監査ログ属性の有無と値に基づいて適切な UDM フィールドに入力します。
始める前に
次の前提条件を満たしていることを確認してください。
- Google SecOps インスタンス
- Tanium Connect と Tanium Console への特権アクセス
- AWS(S3、IAM)への特権アクセス
Amazon S3 バケットを作成する
- Amazon S3 コンソールを開きます。
- 必要に応じて、[リージョン] を変更できます。- ナビゲーション バーから、Tanium 監査ログを配置するリージョンを選択します。
 
- [バケットを作成] をクリックします。- バケット名: バケットのわかりやすい名前を入力します(例: tanium-audit-logs)。
- リージョン: 優先するリージョン(us-east-1など)を選択します。
- [作成] をクリックします。
 
- バケット名: バケットのわかりやすい名前を入力します(例: 
Amazon S3 へのフルアクセス権限を持つ IAM ユーザーを作成する
- IAM コンソールを開きます。
- [ユーザー] > [ユーザーを追加] をクリックします。
- ユーザー名を入力します(例: tanium-connect-s3-user)。
- 必要に応じて、[プログラムによるアクセス] と [AWS マネジメント コンソールへのアクセス] の両方またはどちらか一方を選択します。
- [自動生成されたパスワード] または [カスタム パスワード] を選択します。
- [Next: Permissions] をクリックします。
- [既存のポリシーを直接アタッチする] を選択します。
- ユーザーに AmazonS3FullAccess ポリシーを検索して選択します。
- [Next: Tags] をクリックします。
- [次へ: 確認] をクリックします。
- [ユーザーを作成] をクリックします。
- [アクセスキー ID] と [シークレット アクセスキー] をコピーして保存し、今後の参照に備えます。
Amazon S3 バケットの権限を構成する
- Amazon S3 コンソールで、以前に作成したバケットを選択します。
- [権限> バケット ポリシー] をクリックします。
- バケット ポリシー エディタで、次のポリシーを追加します。 - { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::YOUR_ACCOUNT_ID:user/tanium-connect-s3-user" }, "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::tanium-audit-logs", "arn:aws:s3:::tanium-audit-logs/*" ] } ] }
- 次の変数を置き換えます。 - YOUR_ACCOUNT_IDを AWS アカウント ID に変更します。
- 異なる場合は、tanium-audit-logsを実際のバケット名に変更します。
- tanium-connect-s3-userは、実際の IAM ユーザー名が異なる場合は、そのユーザー名に変更します。
 
- [保存] をクリックします。 
S3 エクスポート用に Tanium Connect を構成する
Tanium Connect で AWS S3 接続を作成する
- 管理者として Tanium Console にログインします。
- [Tanium Connect] > [Connections] に移動します。
- [接続を作成] をクリックします。
- [General Information] セクションで、次の構成の詳細を指定します。
- 名前: わかりやすい名前を入力します(例: Tanium Audit to S3)。
- 説明: わかりやすい説明を入力します(例: Export Tanium audit logs to S3 for Google SecOps ingestion)。
- 有効: 接続を有効にする場合に選択します。
- ログレベル: [情報](デフォルト)を選択するか、必要に応じて調整します。
 
- 名前: わかりやすい名前を入力します(例: 
接続元を構成する
- [構成] セクションの [ソース] で、[Tanium Audit] を選択します。
- 監査ソースの設定を構成します。
- 取得する履歴の日数: 取得する過去の監査データの日数を入力します(1 週間を表す 7など)。
- 監査タイプ: エクスポートする監査タイプを選択します。次のいずれかを選択します。
- Action History: コンソール オペレーターによって発行されたアクション。
- 認証: ユーザー認証イベント。
- コンテンツ: コンテンツの変更と修正。
- グループ: パソコン グループの変更。
- パッケージ: パッケージ関連のアクティビティ。
- センサー: センサーの変更。
- システム設定: システム構成の変更。
- ユーザー: ユーザー管理アクティビティ。
 
 
- 取得する履歴の日数: 取得する過去の監査データの日数を入力します(1 週間を表す 
AWS S3 の宛先を構成する
- [宛先] で、[AWS S3] を選択します。
- 次の構成の詳細を入力します。
- 宛先名: 名前を入力します(例: Google SecOps S3 Bucket)。
- AWS アクセスキー: 事前に作成した IAM ユーザーのアクセスキー ID を入力します。
- AWS シークレット キー: 事前に作成した IAM ユーザーのシークレット アクセスキーを入力します。
- バケット名: S3 バケット名(tanium-audit-logsなど)を入力します。
- バケットパス: 省略可。パスの接頭辞(tanium/audit/など)を入力します。
- リージョン: バケットが存在する AWS リージョン(us-east-1など)を選択します。
 
- 宛先名: 名前を入力します(例: 
形式とスケジュールを構成する
- [形式] セクションで、出力形式を構成します。
- 形式タイプ: [JSON] を選択します。
- 列ヘッダーを含める: 列ヘッダーを含めるかどうかを選択します。
- ドキュメントを生成: このオプションの選択を解除すると、未加工の JSON データが送信されます。
 
- [スケジュール] セクションで、接続の実行タイミングを構成します。
- スケジュール タイプ: [Cron] を選択します。
- Cron 式: 定期的なエクスポートの cron 式を入力します(たとえば、1 時間ごとのエクスポートの場合は 0 */1 * * *)。
- 開始日: スケジュールの開始日を設定します。
 
- [変更を保存] をクリックします。
接続をテストして実行する
- [Connect の概要] ページで、[接続] に移動します。
- 作成した接続(Tanium Audit to S3)をクリックします。
- [Run Now] をクリックして接続をテストします。
- 接続を実行することを確認します。
- 接続ステータスをモニタリングし、監査ログが S3 バケットにエクスポートされていることを確認します。
省略可: Google SecOps 用の読み取り専用の IAM ユーザーと鍵を作成する
- AWS コンソール > IAM > ユーザー > ユーザーを追加 に移動します。
- [ユーザーを追加] をクリックします。
- 次の構成の詳細を入力します。
- ユーザー: 「secops-reader」と入力します。
- アクセスの種類: [アクセスキー - プログラムによるアクセス] を選択します。
 
- ユーザー: 「
- [ユーザーを作成] をクリックします。
- 最小限の読み取りポリシー(カスタム)を関連付ける: [ユーザー] > [secops-reader] > [権限] > [権限を追加] > [ポリシーを直接関連付ける] > [ポリシーを作成]。
- JSON エディタで、次のポリシーを入力します。 - { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::tanium-audit-logs/*" }, { "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": "arn:aws:s3:::tanium-audit-logs" } ] }
- 名前を - secops-reader-policyに設定します。
- [ポリシーの作成> 検索/選択> 次へ> 権限を追加] に移動します。 
- [セキュリティ認証情報] > [アクセスキー] > [アクセスキーを作成] に移動します。 
- CSV をダウンロードします(これらの値はフィードに入力されます)。 
Tanium 監査ログを取り込むように Google SecOps でフィードを構成する
- [SIEM 設定] > [フィード] に移動します。
- [+ 新しいフィードを追加] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例: Tanium Audit logs)。
- [ソースタイプ] として [Amazon S3 V2] を選択します。
- [ログタイプ] として [Tanium Audit] を選択します。
- [次へ] をクリックします。
- 次の入力パラメータの値を指定します。
- S3 URI: s3://tanium-audit-logs/tanium/audit/(別のバケット名またはパスを使用した場合は、パスを調整します)。
- Source deletion options: 必要に応じて削除オプションを選択します。
- ファイルの最大経過日数: 指定した日数以内に変更されたファイルを含めます。デフォルトは 180 日です。
- アクセスキー ID: S3 バケットにアクセスできるユーザー アクセスキー(上記で作成した読み取り専用ユーザーのアクセスキー)。
- シークレット アクセスキー: S3 バケットにアクセスできるユーザーのシークレット キー(上記で作成した読み取り専用ユーザーのキー)。
- アセットの名前空間: アセットの名前空間。
- Ingestion labels: このフィードのイベントに適用されるラベル。
 
- S3 URI: 
- [次へ] をクリックします。
- [Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。
UDM マッピング テーブル
| ログフィールド | UDM マッピング | 論理 | 
|---|---|---|
| ActionId | metadata.product_log_id | ActionIdフィールドから直接マッピングされます。 | 
| ActionName | security_result.action_details | ActionNameフィールドから直接マッピングされます。 | 
| Approver | additional.fields[Approver].value.string_value | Approverフィールドから直接マッピングされます。 | 
| Approver | principal.user.userid | Issuerが存在しない場合、Approverフィールドからマッピングされます。 | 
| audit_name | metadata.description | audit_nameフィールドから直接マッピングされます。 | 
| audit_row_id | additional.fields[audit_row_id].value.string_value | audit_row_idフィールドから直接マッピングされます。 | 
| audit_type | additional.fields[audit_type].value.string_value | audit_typeフィールドから直接マッピングされます。 | 
| authentication_type | principal.user.attribute.labels[authentication_type].value | detailsフィールドから抽出されたauthentication_typeフィールドから直接マッピングされます。 | 
| Command | principal.process.command_line | URL デコード後に Commandフィールドから直接マッピングされます。 | 
| creation_time | target.resource.attribute.creation_time | creation_timeフィールドから直接マッピングされます。 | 
| details | network.session_id | Key-Value 解析を使用して detailsフィールドから抽出されます。 | 
| details | principal.user.attribute.labels[authentication_type].value | Key-Value 解析を使用して detailsフィールドから抽出されます。 | 
| details | principal.asset.ip、principal.ip | IP アドレスは、Key-Value 解析を使用して detailsフィールドから抽出され、principal.asset.ipとprincipal.ipの両方にマッピングされます。 | 
| DistributeOver | additional.fields[DistributeOver].value.string_value | DistributeOverフィールドから直接マッピングされます。 | 
| dvc_ip | intermediary.hostname | syslog メッセージから抽出された dvc_ipフィールドから直接マッピングされます。 | 
| dvc_ip | observer.ip | logstash.collect.hostが存在しない場合、dvc_ipフィールドから直接マッピングされます。 | 
| Expiration | additional.fields[Expiration].value.string_value | Expirationフィールドから直接マッピングされます。 | 
| host.architecture | target.asset.hardware.cpu_platform | host.architectureフィールドから直接マッピングされます。 | 
| host.id | target.asset.asset_id | host.idフィールドから直接マッピングされ、「Host ID:」という接頭辞が付いています。 | 
| host.ip | target.ip | host.ipフィールドから直接マッピングされます。 | 
| host.mac | target.mac | host.macフィールドから直接マッピングされます。 | 
| host.name | target.hostname | host.hostnameが存在しない場合、host.nameフィールドから直接マッピングされます。 | 
| host.os.kernel | target.platform_patch_level | host.os.kernelフィールドから直接マッピングされます。 | 
| host.os.name | additional.fields[os_name].value.string_value | host.os.nameフィールドから直接マッピングされます。 | 
| host.os.version | target.platform_version | host.os.versionフィールドから直接マッピングされます。 | 
| InsertTime | additional.fields[InsertTime].value.string_value | InsertTimeフィールドから直接マッピングされます。 | 
| Issuer | additional.fields[Issuer].value.string_value | Issuerフィールドから直接マッピングされます。 | 
| Issuer | principal.user.userid | 存在する場合に Issuerフィールドから直接マッピングされます。 | 
| last_modified_by | principal.resource.attribute.labels[last_modified_by].value | last_modified_byフィールドから直接マッピングされます。 | 
| log.source.address | principal.ip | IP アドレスは log.source.addressフィールドから抽出され、principal.ipにマッピングされます。 | 
| log.source.address | principal.port | ポートは log.source.addressフィールドから抽出されます。 | 
| logstash.collect.host | observer.ip | 存在する場合に logstash.collect.hostフィールドから直接マッピングされます。 | 
| logstash.collect.timestamp | metadata.collected_timestamp | logstash.collect.timestampフィールドから直接マッピングされます。 | 
| logstash.ingest.timestamp | metadata.ingested_timestamp | logstash.ingest.timestampフィールドから直接マッピングされます。 | 
| logstash.irm_environment | additional.fields[irm_environment].value.string_value | logstash.irm_environmentフィールドから直接マッピングされます。 | 
| logstash.irm_region | additional.fields[irm_region].value.string_value | logstash.irm_regionフィールドから直接マッピングされます。 | 
| logstash.irm_site | additional.fields[irm_site].value.string_value | logstash.irm_siteフィールドから直接マッピングされます。 | 
| logstash.process.host | intermediary.hostname | logstash.process.hostフィールドから直接マッピングされます。 | 
| message | dvc_ip、json_data、timestamp | grok を使用してパースし、 dvc_ip、json_data、timestampを抽出します。 | 
| modification_time | target.resource.attribute.last_update_time | modification_timeフィールドから直接マッピングされます。 | 
| modifier_user_id | principal.resource.attribute.labels[modifier_user_id].value | modifier_user_idフィールドから直接マッピングされます。 | 
| object_id | target.resource.product_object_id | object_idフィールドから直接マッピングされます。 | 
| object_name | target.resource.name | object_nameフィールドから直接マッピングされます。 | 
| object_type_name | target.resource.attribute.labels[object_type_name].value | object_type_nameフィールドから直接マッピングされます。 | 
| PackageName | additional.fields[PackageName].value.string_value | PackageNameフィールドから直接マッピングされます。 | 
| SourceId | additional.fields[SourceId].value.string_value | SourceIdフィールドから直接マッピングされます。 | 
| StartTime | additional.fields[StartTime].value.string_value | StartTimeフィールドから直接マッピングされます。 | 
| Status | security_result.action | Statusが「Closed」の場合は「BLOCK」に、Statusが「Open」の場合は「ALLOW」にマッピングしました。 | 
| Status | security_result.summary | Statusフィールドから直接マッピングされます。 | 
| tanium_audit_type | metadata.product_event_type | tanium_audit_typeフィールドから直接マッピングされます。 | 
| timestamp | metadata.event_timestamp | syslog メッセージまたは messageフィールドから抽出されたtimestampフィールドから直接マッピングされます。 | 
| type | additional.fields[type].value.string_value | typeフィールドから直接マッピングされます。 | 
| type_name | metadata.product_event_type | type_nameフィールドから直接マッピングされます。 | 
| User | principal.user.userid | Userフィールドから直接マッピングされます。src_ip、has_target、has_userの有無に基づいてパーサー ロジックによって決定されます。「NETWORK_CONNECTION」、「USER_RESOURCE_ACCESS」、「STATUS_UPDATE」、「GENERIC_EVENT」のいずれかです。「TANIUM_AUDIT」にハードコードされています。「cybersecurity」にハードコードされています。「TANIUM_AUDIT」にハードコードされています。 | 
| @version | metadata.product_version | @versionフィールドから直接マッピングされます。 | 
| agent.ephemeral_id | additional.fields[ephemeral_id].value.string_value | agent.ephemeral_idフィールドから直接マッピングされます。 | 
| agent.id | observer.asset_id | agent.idフィールドから直接マッピングされ、「filebeat:」という接頭辞が付いています。 | 
| agent.type | observer.application | agent.typeフィールドから直接マッピングされます。 | 
| agent.version | observer.platform_version | agent.versionフィールドから直接マッピングされます。 | 
| Comment | security_result.description | Commentフィールドから直接マッピングされます。 | 
| host.hostname | target.hostname | 存在する場合に host.hostnameフィールドから直接マッピングされます。 | 
| input.type | network.ip_protocol | input.typeが「tcp」または「TCP」の場合は「TCP」にマッピングされます。 | 
| syslog_severity | security_result.severity | syslog_severityが「error」または「warning」の場合は「HIGH」に、「notice」の場合は「MEDIUM」に、「information」または「info」の場合は「LOW」にマッピングされます。 | 
| syslog_severity | security_result.severity_details | syslog_severityフィールドから直接マッピングされます。 | 
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。