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 のプロフェッショナルから回答を得ることができます。