Skyhigh Security のログを収集する
このドキュメントでは、Bindplane を使用して Skyhigh Security(旧 McAfee Skyhigh CASB)ログを Google Security Operations に取り込む方法について説明します。パーサーは、SYSLOG + KV 形式のログを Unified Data Model(UDM)に変換します。まず、ログ メッセージを Key-Value ペアに正規化し、抽出したフィールドを event.idm.read_only_udm
オブジェクト内の対応する UDM 属性にマッピングします。特定のフィールドの有無と値に基づいてイベントタイプを分類します。
始める前に
次の前提条件を満たしていることを確認してください。
- Google SecOps インスタンス
- Windows 2016 以降、または
systemd
を使用する Linux ホスト - プロキシの背後で実行されている場合、ファイアウォール ポートが開いている
- Skyhigh Cloud Connector がインストールされ、構成されている
- Skyhigh Security Cloud Connector への特権アクセス
Google SecOps の取り込み認証ファイルを取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [コレクション エージェント] に移動します。
- Ingestion Authentication File をダウンロードします。Bindplane をインストールするシステムにファイルを安全に保存します。
Google SecOps のお客様 ID を取得する
- Google SecOps コンソールにログインします。
- [SIEM 設定] > [プロファイル] に移動します。
- [組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。
Bindplane エージェントをインストールする
次の手順に沿って、Windows または Linux オペレーティング システムに Bindplane エージェントをインストールします。
Windows のインストール
- 管理者として コマンド プロンプトまたは PowerShell を開きます。
次のコマンドを実行します。
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
Linux のインストール
- root 権限または sudo 権限でターミナルを開きます。
次のコマンドを実行します。
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
その他のインストール リソース
その他のインストール オプションについては、インストール ガイドをご覧ください。
Syslog を取り込んで Google SecOps に送信するように Bindplane エージェントを構成する
- 構成ファイルにアクセスします。
config.yaml
ファイルを見つけます。通常、Linux では/etc/bindplane-agent/
ディレクトリに、Windows ではインストール ディレクトリにあります。- テキスト エディタ(
nano
、vi
、メモ帳など)を使用してファイルを開きます。
config.yaml
ファイルを次のように編集します。receivers: udplog: # Replace the port and IP address as required listen_address: "0.0.0.0:514" exporters: chronicle/chronicle_w_labels: compression: gzip # Adjust the path to the credentials file you downloaded in Step 1 creds_file_path: '/path/to/ingestion-authentication-file.json' # Replace with your actual customer ID from Step 2 customer_id: <customer_id> endpoint: malachiteingestion-pa.googleapis.com # Add optional ingestion labels for better organization log_type: 'MCAFEE_SKYHIGH_CASB' raw_log_field: body ingestion_labels: service: pipelines: logs/source0__chronicle_w_labels-0: receivers: - udplog exporters: - chronicle/chronicle_w_labels
- 自社のインフラストラクチャでの必要性に応じて、ポートと IP アドレスを置き換えます。
<customer_id>
は、実際の顧客 ID に置き換えます。/path/to/ingestion-authentication-file.json
の値を、Google SecOps の取り込み認証ファイルを取得するで認証ファイルを保存したパスに更新します。
Bindplane エージェントを再起動して変更を適用する
Linux で Bindplane エージェントを再起動するには、次のコマンドを実行します。
sudo systemctl restart bindplane-agent
Windows で Bindplane エージェントを再起動するには、Services コンソールを使用するか、次のコマンドを入力します。
net stop BindPlaneAgent && net start BindPlaneAgent
Logging クライアントをダウンロードする前の前提条件
次の詳細情報をご用意ください。
- 使用状況分析のユーザー権限: アカウントに「使用状況分析のユーザー」ロールが必要です。
- お客様 ID: Skyhigh CASB でお客様 ID を確認するには、次の手順を行います。
- Skyhigh CASB にログインします。
- [設定] > [インフラストラクチャ] > [クライアント プロキシ管理] に移動します。
- [Global Configuration> Tenant Authentication] をクリックします。
- [全般設定] に、顧客 ID が表示されます。
- メールアドレスとパスワード: ログイン認証情報(パスワードを送信せずに SAML を使用してログインする場合は、ロギング クライアントをインストールできません)。
Skyhigh Logging Client をダウンロードしてインストールする
- 専用インスタンスに Logging クライアントをダウンロードします。
- Logging クライアントをインストールします(必要に応じて、ダウンロードした EXE ファイルを解凍します)。
- インストールが完了したら、ロギング クライアントを開きます。
- [構成] ページで、次の構成の詳細を指定します。
- お客様 ID: 前の手順で取得した Skyhigh CASB のお客様 ID を入力します。
- サービス: Skyhigh SSE を使用している場合は [SSE] を選択し、このプロダクトを Trellix ePO とともに使用している場合は [WGCS] を選択します。
- リージョン: データの保存場所に応じて、リージョン コードまたは国コードを選択します。
- EU - 欧州連合
- IN - インド
- SG - シンガポール
- UE - アラブ首長国連邦
- UK - 英国
- US - 米国
- 名前: ユーザー名を入力します。通常は、Secure Web Gateway または専用インスタンスへのログインに使用するメールアドレスです。
- パスワード: Secure Web Gateway へのログオンに使用するパスワードを入力します。SAML でログオンしている場合、Logging クライアントは使用できません。
- API バージョン:
version 13
と入力します。 - ログタイプ: ウェブ、リモート ブラウザ分離(RBI)、プライベート アクセス、Cloud Firewall からのデータを含むログなど、さまざまなタイプのログをダウンロードできます。
- [Send as Syslogs] を選択し、次の構成の詳細を指定します。
- Syslog-Client Host: Bindplane エージェントの IP アドレスを入力します。
- Syslog-Client Port: Bindplane エージェントのポート番号を入力します。
- トランスポート: Bindplane エージェントの構成に応じて、[UDP] または [TCP] を選択します。
UDM マッピング テーブル
ログフィールド | UDM マッピング | ロジック |
---|---|---|
EventReceivedTime | metadata.event_timestamp | yyyy-MM-dd HH:mm:ss 形式からタイムスタンプに変換 |
FileSize | target.file.size | 直接マッピングされ、uinteger に変換されます |
ホスト名 | principal.hostname | 直接マッピングされます。 |
MessageSourceAddress | principal.ip | 直接マッピング、複数のインスタンスがある場合は統合 |
重大度 | additional.fields.value.string_value(キー: SEVERITY) | 直接マッピングされます。 |
SeverityValue | additional.fields.value.string_value(キー: SEVERITY_VALUE) | 直接マッピングされます。 |
SourceModuleName | additional.fields.value.string_value(キー: SOURCE_MODULE_NAME) | 直接マッピングされます。 |
SourceModuleType | principal.resource.resource_subtype | 直接マッピングされます。 |
SyslogFacility | security_result.about.resource.attribute.labels.value(キー: SYSLOG_FACILITY) | 直接マッピングされます。 |
SyslogFacilityValue | security_result.about.resource.attribute.labels.value(キー: SYSLOG_FACILITY_VALUE) | 直接マッピングされます。 |
SyslogSeverity | security_result.about.resource.attribute.labels.value(キー: SYSLOG_SEVERITY) | 直接マッピングされます。 |
SyslogSeverityValue | security_result.about.resource.attribute.labels.value(キー: SYSLOG_SEVERITY_VALUE) | 直接マッピングされます。 |
activityName | metadata.product_event_type | 直接マッピング、角かっこを削除 |
actorId | principal.user.userid | 直接マッピングされます。メールアドレスの場合は email_addresses にも追加されます。 |
actorIdType | principal.user.attribute.roles.name | 直接マッピングされます。 |
collaborationSharedLink | security_result.about.resource.attribute.labels.value(キー: COLLABORATION_SHARED_LINK) | 直接マッピングされます。 |
contentItemId | target.file.full_path(contentItemType が FILE の場合) | 直接マッピングされ、引用符が削除されます |
contentItemId | target.url(contentItemType が SAAS_RESOURCE の場合) | 直接マッピングされ、引用符が削除されます |
contentItemHierarchy | additional.fields.value.string_value(キー: CONTENT_ITEM_HIERARCHY) | 直接マッピングされ、引用符が削除されます |
contentItemName | target.resource.name | 直接マッピングされ、引用符が削除されます |
contentItemType | additional.fields.value.string_value(キー: CONTENT_ITEM_TYPE) | 直接マッピングされます。 |
incidentGroup | security_result.detection_fields.value(キー: INCIDENT_GROUP) | 直接マッピングされます。 |
incidentId | metadata.product_log_id | 直接マッピングされます。 |
incidentRiskScore | security_result.detection_fields.value(キー: INCIDENT_RISK_SCORE) | 直接マッピングされます。 |
incidentRiskSeverityId | riskSeverity と組み合わせて security_result.severity を決定するために使用されます | |
informationAccountId | target.resource.product_object_id | 直接マッピングされます。 |
informationAnomalyCategory | security_result.category_details | 直接マッピングされ、引用符が削除されます |
informationAnomalyCause | security_result.detection_fields.value(キー: INFO_ANOMALY_CAUSE) | 直接マッピングされ、引用符が削除されます |
informationCategory | security_result.category_details | 直接マッピングされます。 |
informationConfigType | additional.fields.value.string_value(キー: INFORMATION_CONFIG_TYPE) | 直接マッピングされ、引用符が削除されます |
informationContentItemParent | target.resource.parent | 直接マッピングされ、引用符が削除されます |
informationEventId | additional.fields.value.string_value(キー: INFORMATION_EVENT_ID) | 直接マッピングされます。 |
informationExternalCollaboratorsCount | additional.fields.value.string_value(キー: INFORMATION_COLLAB_COUNT) | 直接マッピングされます。 |
informationFileTypes | additional.fields.value.list_value.values.string_value(キー: FILE_TYPE) | JSON 形式の文字列から抽出され、角かっこや引用符は削除されます |
informationLastExecutedResponseLabel | additional.fields.value.string_value(キー: INFORMATION_LAST_RESPONSE) | 直接マッピングされます。 |
informationScanName | metadata.description | 直接マッピングされ、引用符が削除されます |
informationScanRunDate | UDM にマッピングされていません | |
informationSource | additional.fields.value.string_value(キー: INFORMATION_SOURCE) | 直接マッピングされます。 |
informationUniqueMatchCount | additional.fields.value.string_value(キー: INFORMATION_UNQ_MATCH_COUNT) | 直接マッピングされます。 |
informationUserAttributesSAMAccountName | principal.user.user_display_name | 直接マッピング、角かっこを削除 |
instanceId | principal.resource.product_object_id | 直接マッピングされます。 |
instanceName | principal.resource.name | 直接マッピングされ、引用符が削除されます |
policyId | security_result.rule_id | 直接マッピングされます。 |
policyName | security_result.summary | 直接マッピングされ、引用符が削除されます |
レスポンス | security_result.action(ALLOW または BLOCK)の決定に使用されます。 | |
riskSeverity | incidentRiskSeverityId と組み合わせて security_result.severity を決定するために使用されます。大文字に変換されます | |
serviceNames | target.application | 直接マッピングされ、角かっこ、引用符、余分なスペースが削除されます |
sourceIps | principal.ip | JSON 形式の文字列から抽出され、複数のインスタンスがある場合は統合されます |
ステータス | additional.fields.value.string_value(キー: STATUS) | 直接マッピングされます。 |
threatCategory | security_result.threat_name | 直接マッピングされ、引用符が削除されます |
totalMatchCount | security_result.detection_fields.value(キー: TOTAL_MATCH_COUNT) | 直接マッピングされます。 |
なし | metadata.vendor_name | MCAFEE - 静的な値 |
なし | metadata.product_name | MCAFEE_SKYHIGH_CASB - 静的な値 |
なし | metadata.log_type | MCAFEE_SKYHIGH_CASB - 静的な値 |
なし | principal.resource.type | VIRTUAL_MACHINE - instanceName または instanceId が存在する場合に設定します |
なし | metadata.event_type | 一連の条件に基づいて決定されます。actorId、contentItemId、contentItemName が存在する場合は - USER_RESOURCE_UPDATE_CONTENT 、actorId と target が存在する場合は - USER_UNCATEGORIZED 、Hostname または MessageSourceAddress が存在する場合は - STATUS_UPDATE 、それ以外の場合は - GENERIC_EVENT |
なし | security_result.severity | riskSeverity と incidentRiskSeverityId の組み合わせに基づいて決定されます。 - riskSeverity が LOW で incidentRiskSeverityId が 0 の場合は LOW - riskSeverity が MEDIUM で incidentRiskSeverityId が 1 の場合は MEDIUM - riskSeverity が HIGH で incidentRiskSeverityId が 2 の場合は HIGH - riskSeverity が INFO で incidentRiskSeverityId が 3 の場合は INFORMATIONAL |
なし | security_result.action | レスポンスの値に基づいて決定されます。レスポンスに allow (大文字と小文字は区別されません)が含まれている場合は - ALLOW 、レスポンスに Violation (大文字と小文字は区別されません)が含まれている場合は - BLOCK |
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。