Cisco Umbrella の監査ログを収集する
以下でサポートされています。
Google SecOps
SIEM
このドキュメントでは、AWS S3 バケットを使用して Cisco Umbrella 監査ログを Google Security Operations フィードに収集する方法について説明します。パーサーは、未加工の CSV ログデータを正規化し、さまざまな区切り文字と形式の不整合を処理します。次に、ログタイプ(DNS または監査)に基づいて、抽出されたフィールドを対応する UDM スキーマにマッピングし、追加のコンテキストでデータを拡充して、さらなる分析のために表現を標準化します。
始める前に
- Google SecOps インスタンスがあることを確認します。
- AWS IAM と S3 への特権アクセス権があることを確認します。
- Cisco Umbrella に対する特権アクセス権があることを確認します。
Cisco 管理の Amazon S3 バケットを構成する
- Cisco Umbrella ダッシュボードにログインします。
- [管理者] > [ログ管理] に移動します。
- [Use a Cisco-managed Amazon S3 bucket] オプションを選択します。
- 次の構成の詳細を入力します。
- リージョンを選択: レイテンシを低減するため、ロケーションに近いリージョンを選択します。
- 保持期間を選択する: 期間を選択します。保持期間は 7 日、14 日、30 日のいずれかです。選択した期間が過ぎると、データは削除され、復元できなくなります。取り込みサイクルが定期的な場合は、期間を短くします。保持期間は後で変更できます。
- [保存] をクリックします。
- [続行] をクリックして選択内容を確定し、有効化の通知を受け取ります。
表示された [Activation complete] ウィンドウに、[Access key] と [Secret key] の値が表示されます。 - [アクセスキー] と [シークレット キー] の値をコピーします。これらのキーを紛失した場合は、再生成する必要があります。
- [OK > 続行] をクリックします。
- 概要ページに、構成とバケット名が表示されます。ロギングは、組織の要件に応じて無効または有効にできます。ただし、新しいデータが追加されても、ログは保持期間に基づいて削除されます。
省略可: セルフマネージド AWS S3 バケットのユーザー アクセスキーを構成する
- AWS Management Console にログインします。
- IAM ユーザーの作成のユーザーガイドに沿って、ユーザーを作成します。
- 作成したユーザーを選択します。
- [セキュリティ認証情報] タブを選択します。
- [アクセスキー] セクションで [アクセスキーを作成] をクリックします。
- [ユースケース] で [サードパーティ サービス] を選択します。
- [次へ] をクリックします。
- 省略可: 説明タグを追加します。
- [アクセスキーを作成] をクリックします。
- [CSV ファイルをダウンロード] をクリックして、[アクセスキー] と [シークレット アクセスキー] を保存し、後で使用できるようにします。
- [完了] をクリックします。
- [権限] タブを選択します。
- [権限ポリシー] セクションで、[権限を追加] をクリックします。
- [権限を追加] を選択します。
- [ポリシーを直接アタッチする] を選択します。
- AmazonS3FullAccess ポリシーを検索して選択します。
- [次へ] をクリックします。
- [権限を追加] をクリックします。
省略可: セルフマネージド Amazon S3 バケットを構成する
AWS Management Console にログインします。
S3 に移動します。
[バケットを作成] をクリックします。
次の構成情報を提供してください。
- バケット名: Amazon S3 バケットの名前を指定します。
- リージョン: リージョンを選択します。
[作成] をクリックします。
省略可: セルフマネージド AWS S3 バケットのバケット ポリシーを構成する
- 新しく作成されたバケットをクリックして開きます。
- [プロパティ> 権限] を選択します。
- [権限] リストで、[バケット ポリシーを追加] をクリックします。
次のように、事前構成されたバケット ポリシーを入力します。
{ "Version": "2008-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::568526795995:user/logs" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::BUCKET_NAME/*" }, { "Sid": "", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::568526795995:user/logs" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::BUCKET_NAME/*"}, { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::568526795995:user/logs" }, "Action": "s3:GetBucketLocation", "Resource": "arn:aws:s3:::BUCKET_NAME" }, { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::568526795995:user/logs" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::BUCKET_NAME" } ] }
BUCKET_NAME
は、指定した Amazon S3 バケット名に置き換えます。
[保存] をクリックします。
省略可: セルフマネージド Amazon S3 バケットに必要な検証
- Cisco Umbrella ダッシュボードで、[Admin] > [Log management] > [Amazon S3] を選択します。
- [バケット名] フィールドに Amazon S3 バケット名を正確に指定し、[確認] をクリックします。
- 確認プロセスの一環として、
README_FROM_UMBRELLA.txt
という名前のファイルが Cisco Umbrella から Amazon S3 バケットにアップロードされます。アップロードされた README ファイルを表示するには、ブラウザの更新が必要になることがあります。 README_FROM_UMBRELLA.txt
ファイルをダウンロードし、テキスト エディタで開きます。- ファイルから一意の Cisco Umbrella トークンをコピーして保存します。
- Cisco Umbrella ダッシュボードに移動します。
- [トークン番号] フィールドでトークンを指定し、[保存] をクリックします。
- 成功すると、バケットが正常に検証されたことを示す確認メッセージがダッシュボードに表示されます。バケットを検証できないことを示すエラーが表示された場合は、バケット名の構文を再確認し、構成を見直してください。
Cisco Umbrella の監査ログを取り込むように Google SecOps でフィードを構成する
- [SIEM 設定] > [フィード] に移動します。
- [新しく追加] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例: Cisco Umbrella Audit Logs)。
- [ソースタイプ] として [Amazon S3 V2] を選択します。
- [Log type] として [Cisco Umbrella Audit] を選択します。
- [次へ] をクリックします。
次の入力パラメータの値を指定します。
- S3 URI: バケット URI。
s3:/BUCKET_NAME
BUCKET_NAME
は、バケットの実際の名前に置き換えます。
- Source deletion options: 必要に応じて削除オプションを選択します。
- S3 URI: バケット URI。
[次へ] をクリックします。
[Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。
UDM マッピング テーブル
ログフィールド | UDM マッピング | ロジック |
---|---|---|
action_type | security_result.action_details | 未加工ログのフィールド action_type から直接マッピングされます。 |
action_type | security_result.action | action_type に allow (大文字と小文字を区別しない)が含まれている場合は、ALLOW に設定します。action_type に block (大文字と小文字を区別しない)が含まれている場合は、BLOCK に設定します。 |
additionalValue | additional.fields{}.key | Additional Value に設定します。 |
additionalValue | additional.fields{}.value.string_value | 未加工ログのフィールド additionalValue から直接マッピングされます。 |
blocked_categories | additional.fields{}.key | blocked_categories に設定します。 |
blocked_categories | additional.fields{}.value.string_value | 未加工ログのフィールド blocked_categories から直接マッピングされます。 |
categories | security_result.category_details | カンマで分割された後、未加工ログの categories フィールドから直接マッピングされます。 |
column1 | metadata.product_log_id | ログが監査ログの場合、未加工ログの column1 フィールドからマッピングされます。 |
column1 | date_time | ログが DNS ログの場合、未加工ログのフィールド column1 からマッピングされます。 |
column10 | categories | 未加工ログのフィールド column10 から直接マッピングされます。 |
column11 | most_granular_identity_type | 未加工ログのフィールド column11 から直接マッピングされます。 |
column12 | identity_types | 未加工ログのフィールド column12 から直接マッピングされます。 |
column13 | blocked_categories | 未加工ログのフィールド column13 から直接マッピングされます。 |
column2 | date_time | ログが監査ログの場合、未加工ログの column2 フィールドからマッピングされます。 |
column2 | most_granular_identity | ログが DNS ログの場合、未加工ログのフィールド column2 からマッピングされます。 |
column3 | principal.user.email_addresses | ログが監査ログの場合、未加工ログの column3 フィールドからマッピングされます。 |
column3 | identities | ログが DNS ログの場合、未加工ログのフィールド column3 からマッピングされます。 |
column4 | principal.user.userid | ログが監査ログの場合、未加工ログの column4 フィールドからマッピングされます。 |
column4 | internal_ip | ログが DNS ログの場合、未加工ログのフィールド column4 からマッピングされます。 |
column5 | security_result.rule_name | ログが監査ログの場合、未加工ログの column5 フィールドからマッピングされます。 |
column5 | external_ip | ログが DNS ログの場合、未加工ログのフィールド column5 からマッピングされます。 |
column6 | action_type | 未加工ログのフィールド column6 から直接マッピングされます。 |
column7 | principal.ip | ログが監査ログの場合、未加工ログの column7 フィールドからマッピングされます。 |
column7 | dns_query_type | ログが DNS ログの場合、未加工ログのフィールド column7 からマッピングされます。 |
column8 | additionalValue | ログが監査ログの場合、未加工ログの column8 フィールドからマッピングされます。 |
column8 | dns_response_code | ログが DNS ログの場合、未加工ログのフィールド column8 からマッピングされます。 |
column9 | ドメイン | 未加工ログのフィールド column9 から直接マッピングされます。 |
date_time | metadata.event_timestamp.seconds | date_time フィールドから抽出されたエポック タイムスタンプ。 |
dns_query_type | network.dns.questions.type | 正規表現を使用して dns_query_type フィールドから抽出され、整数に変換されます。 |
dns_response_code | network.dns.response_code | dns_response_code フィールドからマッピングされ、DNS レスポンス コード値に基づいて整数に変換されます。 |
ドメイン | network.dns.questions.name | domain フィールドから直接マッピングされます。 |
external_ip | principal.ip | external_ip フィールドが空でなく、internal_ip と異なる場合、このフィールドからマッピングされます。 |
identities | principal.location.name | 対応する identity_types フィールドが Networks の場合、identities フィールドからマッピングされます。 |
identities | principal.hostname | 対応する identity_types フィールドが AD Computers 、Roaming Computers 、または Anyconnect Roaming Client の場合、identities フィールドからマッピングされます。 |
identities | principal.asset.hostname | 対応する identity_types フィールドが AD Computers 、Roaming Computers 、または Anyconnect Roaming Client の場合、identities フィールドからマッピングされます。 |
identities | principal.location.city | 対応する identity_types フィールドが Sites の場合、identities フィールドからマッピングされます。 |
identity_types | additional.fields{}.key | identities_types に設定します。 |
identity_types | additional.fields{}.value.string_value | 未加工ログのフィールド identity_types から直接マッピングされます。 |
internal_ip | principal.ip | internal_ip フィールドが空でない場合、このフィールドからマッピングされます。 |
most_granular_identity | additional.fields{}.key | most_granular_identity に設定します。 |
most_granular_identity | additional.fields{}.value.string_value | 未加工ログのフィールド most_granular_identity から直接マッピングされます。 |
most_granular_identity_type | additional.fields{}.key | most_granular_identity_type に設定します。 |
most_granular_identity_type | additional.fields{}.value.string_value | 未加工ログのフィールド most_granular_identity_type から直接マッピングされます。 |
metadata.event_type | ログが DNS ログの場合は NETWORK_DNS に設定します。 |
|
metadata.event_type | ログが監査ログで、principal_ip が空でない場合は STATUS_UPDATE に設定します。 |
|
metadata.event_type | ログが監査ログで、principal_ip が空の場合は、GENERIC_EVENT に設定します。 |
|
metadata.vendor_name | CISCO UMBERLLA に設定します。 |
|
metadata.product_name | CISCO UMBERLLA に設定します。 |
|
metadata.log_type | AUDITD に設定します。 |
|
network.application_protocol | ログが DNS ログの場合は DNS に設定します。 |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。