Symantec VIP Authentication Hub のログを収集する

以下でサポートされています。

このドキュメントでは、Bindplane を使用して Symantec VIP Authentication Hub のログを Google Security Operations に取り込む方法について説明します。パーサーコードは、まず入力ログ メッセージをクリーンアップして前処理し、特定のフィールドを変換して、Key-Value ペアからデータを再構築します。次に、grok パターンと条件ロジックを使用してさまざまなフィールドから関連情報を抽出し、標準化されたセキュリティ イベント表現のために、統合データモデル(UDM)内の対応する属性にマッピングします。

始める前に

次の前提条件を満たしていることを確認します。

  • Google SecOps インスタンス
  • Windows 2016 以降、または systemd を使用する Linux ホスト
  • プロキシの背後で実行されている場合、ファイアウォール ポートが開いている
  • Symantec VIP Authentication Hub への特権アクセス

Google SecOps の取り込み認証ファイルを取得する

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [コレクション エージェント] に移動します。
  3. Ingestion Authentication File をダウンロードします。Bindplane をインストールするシステムにファイルを安全に保存します。

Google SecOps のお客様 ID を取得する

  1. Google SecOps コンソールにログインします。
  2. [SIEM 設定] > [プロファイル] に移動します。
  3. [組織の詳細情報] セクションから [お客様 ID] をコピーして保存します。

Bindplane エージェントをインストールする

Windows のインストール

  1. 管理者として コマンド プロンプトまたは PowerShell を開きます。
  2. 次のコマンドを実行します。

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    

Linux のインストール

  1. root 権限または sudo 権限でターミナルを開きます。
  2. 次のコマンドを実行します。

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    

その他のインストール リソース

その他のインストール オプションについては、インストール ガイドをご覧ください。

Syslog を取り込んで Google SecOps に送信するように Bindplane エージェントを構成する

  1. 構成ファイルにアクセスします。
    • config.yaml ファイルを見つけます。通常、Linux では /etc/bindplane-agent/ ディレクトリに、Windows ではインストール ディレクトリにあります。
    • テキスト エディタ(nanovi、メモ帳など)を使用してファイルを開きます。
  2. 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: '/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
            ingestion_labels:
                log_type: 'SYMANTEC_VIP_AUTHHUB'
                raw_log_field: body
    
    service:
        pipelines:
            logs/source0__chronicle_w_labels-0:
                receivers:
                    - udplog
                exporters:
                    - chronicle/chronicle_w_labels
    
  3. 自社のインフラストラクチャでの必要性に応じて、ポートと IP アドレスを置き換えます。

  4. <customer_id> は、実際の顧客 ID に置き換えます。

  5. /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
    

Symantec VIP Authentication Hub で Syslog を構成する

  1. Symantec VIP Gateway ウェブ UI にログインします。
  2. [Logs] > [Syslog Configuration] に移動します。
  3. Syslog を初めて構成する場合は、Syslog 設定を構成するように求められます。[はい] をオンにします。
  4. Syslog をすでに構成している場合は、ページの下部にある [編集] をクリックします。
  5. 次の構成の詳細を指定します。
    • Syslog Facility: [LOG_LOCAL0] を選択します。
    • Syslog ホスト: Bindplane エージェントの IP アドレスを入力します。
    • Syslog ポート: Bindplane エージェントのポート番号を入力します(例: UDP の場合は 514)。
  6. [保存] をクリックします。
  7. [ID プロバイダ> セルフサービス ポータル構成] に移動します。
  8. 次の構成の詳細を編集します。
    • ロギングレベル: [情報] を選択します。
    • Enable Syslog: [Yes] を選択します。
  9. [送信] をクリックします。
  10. [Identity providers] > [VIP Manager Authentication Configuration] に移動します。
  11. 次の構成の詳細を編集します。
    • ロギングレベル: [情報] を選択します。
    • Enable Syslog: [Yes] を選択します。
  12. [送信] をクリックします。
  13. [User Store] > [LDAP Directory Synchronization] に移動します。
  14. 次の構成の詳細を編集します。
    • ログレベル: [情報] を選択します。
    • Enable Syslog: [Yes] を選択します。
  15. [送信] をクリックします。

UDM マッピング テーブル

ログフィールド UDM マッピング ロジック
/auth/v1/authenticate security_result.detection_fields[].value この値は、未加工ログの /auth/v1/authenticate フィールドから取得され、キー api を持つ security_result.detection_fields オブジェクトに割り当てられます。
__isAuditIdLcmIdStore additional.fields[].value.string_value この値は、未加工ログの __isAuditIdLcmIdStore フィールドから取得され、キー __isAuditIdLcmIdStore を持つ additional.fields オブジェクトに割り当てられます。
accessTokenScopes security_result.detection_fields[].value この値は、未加工ログの accessTokenScopes フィールドから取得され、キー accessTokenScopes を持つ security_result.detection_fields オブジェクトに割り当てられます。
accessTokenTid security_result.detection_fields[].value この値は、未加工ログの accessTokenTid フィールドから取得され、キー accessTokenTid を持つ security_result.detection_fields オブジェクトに割り当てられます。
api security_result.detection_fields[].value この値は、未加工ログの api フィールドから取得され、キー api を持つ security_result.detection_fields オブジェクトに割り当てられます。
appId additional.fields[].value.string_value この値は、未加工ログの appId フィールドから取得され、キー appId を持つ additional.fields オブジェクトに割り当てられます。
appName principal.application この値は、未加工ログの appName フィールドから取得されます。
azpName additional.fields[].value.string_value この値は、未加工ログの azpName フィールドから取得され、キー azpName を持つ additional.fields オブジェクトに割り当てられます。
bytes_sent network.sent_bytes この値は、未加工ログの bytes_sent フィールドから取得されます。
client principal.asset.ipprincipal.ip IP アドレスは、grok パターンを使用して未加工ログの client フィールドから抽出され、principal.ip フィールドと principal.asset.ip フィールドに追加されます。
clientId additional.fields[].value.string_valueprincipal.user.userid この値は、未加工ログの clientId フィールドから取得され、キー clientId を持つ additional.fields オブジェクトに割り当てられます。clientId フィールドが空でない場合は、principal.user.userid フィールドの入力にも使用されます。
clientIp principal.asset.ipprincipal.ip この値は、未加工ログの clientIp フィールドから取得され、principal.ip フィールドと principal.asset.ip フィールドに追加されます。
clientTid additional.fields[].value.string_value この値は、未加工ログの clientTid フィールドから取得され、キー clientTid を持つ additional.fields オブジェクトに割り当てられます。
clientTxnId additional.fields[].value.string_value この値は、未加工ログの clientTxnId フィールドから取得され、キー clientTxnId を持つ additional.fields オブジェクトに割り当てられます。
contentType additional.fields[].value.string_value この値は、未加工ログの contentType フィールドから取得され、キー contentType を持つ additional.fields オブジェクトに割り当てられます。
countryISO principal.location.country_or_region この値は、未加工ログの countryISO フィールドから取得されます。
eventId metadata.product_event_type この値は、未加工ログの eventId フィールドから取得されます。
flowStateId additional.fields[].value.string_value この値は、未加工ログの flowStateId フィールドから取得され、キー flowStateId を持つ additional.fields オブジェクトに割り当てられます。
geo.city_name principal.location.city この値は、未加工ログの geo.city_name フィールドから取得されます。
geo.country_name principal.location.country_or_region この値は、未加工ログの geo.country_name フィールドから取得されます。
geo.location.lat principal.location.region_coordinates.latitude 値は未加工ログの geo.location.lat フィールドから取得され、浮動小数点数に変換されて principal.location.region_coordinates.latitude に名前変更されます。
geo.location.lon principal.location.region_coordinates.longitude 値は未加工ログの geo.location.lon フィールドから取得され、浮動小数点数に変換されて principal.location.region_coordinates.longitude に名前変更されます。
guid metadata.product_log_id この値は、未加工ログの guid フィールドから取得されます。
host principal.asset.hostnameprincipal.hostname この値は、未加工ログの host フィールドから取得され、引用符が削除されて、principal.hostname フィールドと principal.asset.hostname フィールドに追加されます。
httpMethod network.http.method この値は、未加工ログの httpMethod フィールドから取得されます。
httpReferrer network.http.referral_url この値は、未加工ログの httpReferrer フィールドから取得されます。
identitySourceId additional.fields[].value.string_value この値は、未加工ログの identitySourceId フィールドから取得され、キー identitySourceId を持つ additional.fields オブジェクトに割り当てられます。
internal-user-sync-ext-resourceGuid target.user.userid この値は、未加工ログの internal-user-sync-ext-resourceGuid フィールドから取得されます。
internal-user-sync-ext-resourceName target.user.email_addresses この値は、未加工ログの internal-user-sync-ext-resourceName フィールドから取得され、target.user.email_addresses フィールドに追加されます。
issuerUrl target.url この値は、未加工ログの issuerUrl フィールドから取得されます。
kubernetes.annotations.cni.projectcalico.org_containerID target.resource.product_object_id この値は、未加工ログの kubernetes.annotations.cni.projectcalico.org_containerID フィールドから取得されます。
kubernetes.annotations.cni.projectcalico.org_podIP target.resource.attribute.labels[].value この値は、未加工ログの kubernetes.annotations.cni.projectcalico.org_podIP フィールドから取得され、キー podIP を持つ target.resource.attribute.labels オブジェクトに割り当てられます。
kubernetes.annotations.cni.projectcalico.org_podIPs target.resource.attribute.labels[].value この値は、未加工ログの kubernetes.annotations.cni.projectcalico.org_podIPs フィールドから取得され、キー podIPs を持つ target.resource.attribute.labels オブジェクトに割り当てられます。
kubernetes.container_hash target.resource.attribute.labels[].value この値は、未加工ログの kubernetes.container_hash フィールドから取得され、キー container_hash を持つ target.resource.attribute.labels オブジェクトに割り当てられます。
kubernetes.container_image target.resource.attribute.labels[].value この値は、未加工ログの kubernetes.container_image フィールドから取得され、キー container_image を持つ target.resource.attribute.labels オブジェクトに割り当てられます。
kubernetes.container_name target.resource.attribute.labels[].value この値は、未加工ログの kubernetes.container_name フィールドから取得され、キー container_name を持つ target.resource.attribute.labels オブジェクトに割り当てられます。
kubernetes.docker_id target.resource.attribute.labels[].value この値は、未加工ログの kubernetes.docker_id フィールドから取得され、キー docker_id を持つ target.resource.attribute.labels オブジェクトに割り当てられます。
kubernetes.host principal.asset.hostnameprincipal.hostname この値は、未加工ログの kubernetes.host フィールドから取得され、principal.hostname フィールドと principal.asset.hostname フィールドに追加されます。
kubernetes.labels.app このフィールドは、UDM の IDM オブジェクトにマッピングされません。
kubernetes.labels.app.kubernetes.io/component target.resource.attribute.labels[].value この値は、未加工ログの kubernetes.labels.app.kubernetes.io/component フィールドから取得され、キー io_component を持つ target.resource.attribute.labels オブジェクトに割り当てられます。
kubernetes.labels.app.kubernetes.io/instance target.resource.attribute.labels[].value この値は、未加工ログの kubernetes.labels.app.kubernetes.io/instance フィールドから取得され、キー io_instance を持つ target.resource.attribute.labels オブジェクトに割り当てられます。
kubernetes.labels.app.kubernetes.io/managed-by target.resource.attribute.labels[].value この値は、未加工ログの kubernetes.labels.app.kubernetes.io/managed-by フィールドから取得され、キー io_managed-by を持つ target.resource.attribute.labels オブジェクトに割り当てられます。
kubernetes.labels.app.kubernetes.io/name target.resource.attribute.labels[].value この値は、未加工ログの kubernetes.labels.app.kubernetes.io/name フィールドから取得され、キー io_name を持つ target.resource.attribute.labels オブジェクトに割り当てられます。
kubernetes.labels.app.kubernetes.io/part-of target.resource.attribute.labels[].value この値は、未加工ログの kubernetes.labels.app.kubernetes.io/part-of フィールドから取得され、キー io_part-of を持つ target.resource.attribute.labels オブジェクトに割り当てられます。
kubernetes.labels.app.kubernetes.io/version target.resource.attribute.labels[].value この値は、未加工ログの kubernetes.labels.app.kubernetes.io/version フィールドから取得され、キー io_version を持つ target.resource.attribute.labels オブジェクトに割り当てられます。
kubernetes.labels.helm.sh/chart target.resource.attribute.labels[].value この値は、未加工ログの kubernetes.labels.helm.sh/chart フィールドから取得され、キー helm_sh_chart を持つ target.resource.attribute.labels オブジェクトに割り当てられます。
kubernetes.labels.helmChartName target.resource.attribute.labels[].value この値は、未加工ログの kubernetes.labels.helmChartName フィールドから取得され、キー helmChartName を持つ target.resource.attribute.labels オブジェクトに割り当てられます。
kubernetes.labels.imageTag target.resource.attribute.labels[].value この値は、未加工ログの kubernetes.labels.imageTag フィールドから取得され、キー imageTag を持つ target.resource.attribute.labels オブジェクトに割り当てられます。
kubernetes.labels.pod-template-hash target.resource.attribute.labels[].value この値は、未加工ログの kubernetes.labels.pod-template-hash フィールドから取得され、キー pod-template-hash を持つ target.resource.attribute.labels オブジェクトに割り当てられます。
kubernetes.namespace_name target.resource.attribute.labels[].value この値は、未加工ログの kubernetes.namespace_name フィールドから取得され、キー namespace_name を持つ target.resource.attribute.labels オブジェクトに割り当てられます。
kubernetes.pod_id target.resource.attribute.labels[].value この値は、未加工ログの kubernetes.pod_id フィールドから取得され、キー pod_id を持つ target.resource.attribute.labels オブジェクトに割り当てられます。
kubernetes.pod_name target.resource.attribute.labels[].value この値は、未加工ログの kubernetes.pod_name フィールドから取得され、キー pod_name を持つ target.resource.attribute.labels オブジェクトに割り当てられます。
level security_result.severity 未加工ログの level フィールドが notice または info(大文字と小文字は区別されません)と一致する場合、security_result.severity フィールドは INFORMATIONAL に設定されます。
log security_result.descriptionlevelkv_data level フィールドと kv_data フィールドは、grok パターンを使用して未加工ログの log フィールドから抽出されます。security_result.description フィールドには、log フィールド全体が入力されます。
logtag additional.fields[].value.string_value この値は、未加工ログの logtag フィールドから取得され、キー logtag を持つ additional.fields オブジェクトに割り当てられます。
method network.http.method この値は、未加工ログの method フィールドから取得されます。
msg metadata.event_typesecurity_result.description この値は、未加工ログの msg フィールドから取得され、security_result.description フィールドの入力に使用されます。metadata.event_type フィールドは、msg フィールドの内容に基づいて決定されます。* msgInternal user created or updated が含まれている場合は USER_CREATION。* msgAuthorization Initiated SuccesfullyAuthentication Initiated SuccessfullyAuthentication Successful が含まれている場合は USER_LOGIN。* msgToken Generated または token verified が含まれている場合は USER_RESOURCE_ACCESS。* has_principalhas_target の両方が true の場合、NETWORK_CONNECTION。* has_principal が true の場合は STATUS_UPDATE。* それ以外の場合は GENERIC_EVENT
path principal.file.full_path この値は、未加工ログの path フィールドから取得されます。
principalId additional.fields[].value.string_valueprincipal.user.userid この値は、未加工ログの principalId フィールドから取得され、キー principalId を持つ additional.fields オブジェクトに割り当てられます。principalId フィールドが clientId でなく、空でもない場合、principal.user.userid フィールドの入力にも使用されます。
principalType additional.fields[].value.string_value この値は、未加工ログの principalType フィールドから取得され、キー principalType を持つ additional.fields オブジェクトに割り当てられます。
protocol network.application_protocol 未加工ログの protocol フィールドが HTTP と一致する場合(大文字と小文字を区別しない)、network.application_protocol フィールドは HTTP に設定されます。
referrer network.http.referral_url この値は、未加工ログの referrer フィールドから取得され、引用符が削除されて network.http.referral_url フィールドに割り当てられます。
relVersion metadata.product_version この値は、未加工ログの relVersion フィールドから取得されます。
remoteAddr additional.fields[].value.string_value この値は、未加工ログの remoteAddr フィールドから取得され、キー remoteAddr を持つ additional.fields オブジェクトに割り当てられます。
requestId additional.fields[].value.string_value この値は、未加工ログの requestId フィールドから取得され、キー requestId を持つ additional.fields オブジェクトに割り当てられます。
requestTime additional.fields[].value.string_value この値は、未加工ログの requestTime フィールドから取得され、キー requestTime を持つ additional.fields オブジェクトに割り当てられます。
responseCode network.http.response_code 数値は、grok パターンを使用して未加工ログの responseCode フィールドから抽出され、整数に変換されて network.http.response_code フィールドに割り当てられます。
request methodpathprotocol methodpathprotocol の各フィールドは、引用符を削除した後、grok パターンを使用して未加工ログの request フィールドから抽出されます。
server target.asset.hostnametarget.hostname この値は、未加工ログの server フィールドから取得され、target.hostname フィールドと target.asset.hostname フィールドに追加されます。
service additional.fields[].value.string_value この値は、未加工ログの service フィールドから取得され、キー service を持つ additional.fields オブジェクトに割り当てられます。
status network.http.response_code 値は、未加工ログの status フィールドから取得され、整数に変換されて network.http.response_code フィールドに割り当てられます。
stream additional.fields[].value.string_value この値は、未加工ログの stream フィールドから取得され、キー stream を持つ additional.fields オブジェクトに割り当てられます。
sub additional.fields[].value.string_value この値は、未加工ログの sub フィールドから取得され、キー sub を持つ additional.fields オブジェクトに割り当てられます。
subType additional.fields[].value.string_value この値は、未加工ログの subType フィールドから取得され、キー subType を持つ additional.fields オブジェクトに割り当てられます。
tid additional.fields[].value.string_value この値は、未加工ログの tid フィールドから取得され、キー tid を持つ additional.fields オブジェクトに割り当てられます。
timestamp metadata.event_timestamp 値は、未加工ログの timestamp フィールドから取得され、ISO8601 タイムスタンプとして解析されます。
tname additional.fields[].value.string_value この値は、未加工ログの tname フィールドから取得され、キー tname を持つ additional.fields オブジェクトに割り当てられます。
txnId additional.fields[].value.string_value この値は、未加工ログの txnId フィールドから取得され、キー txnId を持つ additional.fields オブジェクトに割り当てられます。
type additional.fields[].value.string_value この値は、未加工ログの type フィールドから取得され、キー type を持つ additional.fields オブジェクトに割り当てられます。
userAgent network.http.parsed_user_agentnetwork.http.user_agent この値は、未加工ログの userAgent フィールドから取得され、network.http.user_agent フィールドと network.http.parsed_user_agent フィールドに割り当てられます。network.http.parsed_user_agent フィールドは、解析されたユーザー エージェント オブジェクトに変換されます。
userDN additional.fields[].value.string_value この値は、未加工ログの userDN フィールドから取得され、キー userDN を持つ additional.fields オブジェクトに割り当てられます。
userGuid additional.fields[].value.string_value この値は、未加工ログの userGuid フィールドから取得され、キー userGuid を持つ additional.fields オブジェクトに割り当てられます。
userIdpGuid additional.fields[].value.string_value この値は、未加工ログの userIdpGuid フィールドから取得され、キー userIdpGuid を持つ additional.fields オブジェクトに割り当てられます。
userIP principal.asset.ipprincipal.iptarget.asset.iptarget.ipintermediary.ip IP アドレスは、grok パターンを使用して未加工ログの userIP フィールドから抽出されます。最初のアドレスが principal.ip フィールドと principal.asset.ip フィールドに追加されます。2 番目の IP アドレスが target.ip フィールドと target.asset.ip フィールドに追加されます。3 番目の IP アドレスが intermediary.ip フィールドに追加されます。
userLoginId target.user.email_addresses 未加工ログの userLoginId フィールドが空ではなく、メールアドレスのパターンと一致する場合は、target.user.email_addresses フィールドに追加されます。
userLoginIdAttributeMappingName target.user.user_display_name この値は、未加工ログの userLoginIdAttributeMappingName フィールドから取得されます。
userRiskLevel additional.fields[].value.string_value この値は、未加工ログの userRiskLevel フィールドから取得され、キー userRiskLevel を持つ additional.fields オブジェクトに割り当てられます。
userRiskScore additional.fields[].value.string_value この値は、未加工ログの userRiskScore フィールドから取得され、キー userRiskScore を持つ additional.fields オブジェクトに割り当てられます。
userIp principal.asset.ipprincipal.ip この値は、未加工ログの userIp フィールドから取得され、principal.ip フィールドと principal.asset.ip フィールドに追加されます。
userUniversalId additional.fields[].value.string_value この値は、未加工ログの userUniversalId フィールドから取得され、キー userUniversalId を持つ additional.fields オブジェクトに割り当てられます。
vhost additional.fields[].value.string_value この値は、未加工ログの vhost フィールドから取得され、キー vhost を持つ additional.fields オブジェクトに割り当てられます。
なし extensions.auth.type metadata.event_type フィールドが USER_LOGIN の場合、値は SSO に設定されます。
なし metadata.log_type 値は SYMANTEC_VIP_AUTHHUB に設定されています。

さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。