ノート:

ログ・シッパーを使用したサード・パーティのSIEMプラットフォームへのOracle Cloud Infrastructureログの取込み

イントロダクション

Oracle Cloud Infrastructure(OCI)は、大規模企業が信頼するInfrastructure-as-a-Service(IaaS)、Platform-as-a-Service(PaaS)およびSoftware-as-a-Service(SaaS)プラットフォームです。ホスティング、ストレージ、ネットワーキング、データベースなど、包括的なマネージド・サービスを提供します。

サイバーセキュリティ・インシデントを検出して防止するには、適切なリソースにトリアージするためのセキュリティ関連のイベント・ログを積極的に提示することが重要です。多くの組織は、セキュリティ情報およびイベント管理(SIEM)プラットフォームを使用して、関連するアセットからのログとアラートを関連付け、分析しています。ログ取得の適切な構成、適切な期間保持、ほぼリアルタイムの監視とアラートにより、セキュリティ運用チームは問題を特定し、システムのチューニングに基づいて重要な情報に集中し、適切なタイミングで対処できます。

OCIログを取り込むためのベスト・プラクティスは、OCIストリーミング(Apache Kafka互換)に送信することで、サードパーティのSIEMプラットフォームがKafkaコンシューマとしてログを消費できるようにします。このアプローチにより、遅延を減らし、自己回復性を実現し、SIEM側でのデータ消費に一時的な問題が発生した場合に保持します。

ただし、サードパーティのSIEMプラットフォームには、OCIストリームから直接ログを消費するためのデフォルト・コネクタがなく、広く使用されているオープンソースのイベント・ストリーミング・プラットフォームであるKafkaトピックからのデータ消費をネイティブにサポートしておらず、統合プロセスが複雑化しています。このような場合、ログ・シッパーは、このギャップを埋めるためのソリューションとして機能します。

ログ・シッパーは、様々なソースからログを収集し、指定した1つ以上の宛先に転送するスタンドアロン・ツールとして機能します。OCIストリーミングおよびサードパーティのSIEMプラットフォームとのシームレスな通信を確保するために、ログ・シッパー・ソフトウェアはインターネット・アクセスを備えたマシンで実行する必要があります。このチュートリアルでは、OCI内のコンピュート・インスタンスにログ・シッパー・ソフトウェアをデプロイします。

ログ・シッパーは次の処理を実行します。

次に、次の図に示すように、ソリューション・アーキテクチャの概要を説明します。

アーキテクチャの図

ノート:このソリューションはギャップを埋めることができますが、他の方法を実行できない場合には、最後のオプションとしてのみ考慮することをお薦めします。SIEMプロバイダと緊密に連携して、ネイティブまたは推奨されるアプローチを最初に調査することが重要です。ログ出荷元に進むことにした場合、SIEMプロバイダと連携して最適なものを選択することで、実装中および実装後のSIEMプロバイダからのサポートが向上し、組織の特定のニーズに合わせて設定を調整できます。

使用可能な様々なログ出荷元があり、その一部は次のとおりです。

目的

前提条件

ノート:次のタスク(タスク1からタスク4)は、選択した方法やログ出荷元に関係なく、OCI側で実行する必要があります。

タスク1: 取得するログの構成

OCIロギング・サービスは、テナンシ内のすべてのログに対応した、スケーラビリティの高いフルマネージド型のシングル・ペインです。OCI Loggingでは、OCIリソースからログにアクセスできます。ログは、特定のコンテキストで収集されたログ・イベントを格納および取得する最重要のOCIリソースです。ログ・グループは、コンパートメントに格納されたログのコレクションです。ログ・グループは、ログの論理コンテナです。ログ・グループを使用して、Oracle Cloud Infrastructure Identity and Access Management (OCI IAM)ポリシーを適用したり、分析用にログをグループ化したりすることで、ログを編成して管理を効率化します。

開始するには、リソースのログを有効にします。サービスには、リソースで使用できる様々なタイプのログに対応したログ・カテゴリがあります。たとえば、OCIオブジェクト・ストレージ・サービスでは、ストレージ・バケットに対して次のログ・カテゴリがサポートされます: 読取りおよび書込みアクセス・イベント。読取りアクセス・イベントはダウンロード・イベントを取得し、書込みアクセス・イベントは書込みイベントを取得します。各サービスは、リソースに対して異なるログ・カテゴリを持つことができます。

  1. OCIコンソールにログインし、「監視および管理」「ロギング」および「ログ・グループ」に移動します。

  2. コンパートメントを選択し、「ログ・グループの作成」をクリックして、次の情報を入力します。

    • 名前: SIEM_log_groupと入力します。
    • 説明(オプション):説明を入力します。
    • Tags (オプション):タグを入力します。
  3. 「作成」をクリックして、新しいログ・グループを作成します。

  4. 「リソース」で、「ログ」をクリックします。

  5. 必要に応じて、「カスタム・ログの作成」または「サービスの有効化」ログをクリックします。

    たとえば、OCIオブジェクト・ストレージ・バケットの書込みログを有効にするには、次のステップに従います:

    1. 「サービス・ログの有効化」をクリックします。

    2. リソース・コンパートメントを選択し、「検索サービス」「オブジェクト・ストレージ」と入力します。

    3. 「ログの有効化」をクリックし、「リソース」でOCIオブジェクト・ストレージのバケット名を選択します。

    4. タスク1.2で作成したログ・グループ(SIEM_log_group)を選択し、「ログ・カテゴリ」「書込みアクセス・イベント」を選択します。必要に応じて、「ログ名」SIEM_bucket_writeと入力します。

    5. 「有効化」をクリックして、新しいOCIログを作成します。

タスク2: OCIストリーミングを使用したストリームの作成

OCIストリーミング・サービスは、開発者およびデータ・サイエンティスト向けの、リアルタイムでサーバーレスなApache Kafka互換イベント・ストリーミング・プラットフォームです。大量のデータ・ストリームをログなどのリアルタイムで収集および消費するための、スケーラブルで耐久性の高いフルマネージド・ソリューションを提供します。OCI Streamingは、パブリッシュ/サブスクライブ・メッセージング・モデルでデータが連続して処理されます。

  1. OCIコンソールに移動し、「アナリティクスとAI」「メッセージング」および「ストリーミング」に移動します。

  2. ストリームの作成」をクリックしてストリームを作成します。

  3. 次の情報を入力して、「作成」をクリックします。

    • 名前:ストリーム名を入力します。このチュートリアルでは、SIEM_Streamです。
    • ストリーム・プール:既存のストリーム・プールを選択するか、パブリック・エンドポイントを含む新しいストリーム・プールを作成します。
    • 保持(時間):このストリームでメッセージを保持する時間を入力します。
    • パーティション数:ストリームのパーティション数を入力します。
    • 「合計書込み率」および「合計読取り率」:処理する必要があるデータの量に基づいて入力します。

テスト用のデフォルト値から始めることができます。詳細は、ストリームのパーティション化を参照してください。

タスク3: OCIコネクタ・ハブの設定

OCI Connector Hubは、OCIのサービス間でのデータ移動を調整します。OCI Connector Hubは、OCI Logging、OCI Object Storage、OCI Streaming、OCI Logging Analytics、OCI Monitoringなどのサービス間のデータ移動を記述、実行、監視するための一元的な場所を提供します。また、OCI Functionsをトリガーして軽量なデータ処理を実現し、OCI Notificationsをトリガーしてアラートを設定することもできます。

  1. OCIコンソールに移動し、「監視および管理」「ロギング」および「コネクタ」に移動します。

  2. 「コネクタの作成」をクリックして、コネクタを作成します。

  3. 次の情報を入力します

    • 名前: SIEM_SCと入力します。
    • 説明(オプション):説明を入力します。
    • コンパートメント:コンパートメントを選択します。
    • ソース: 「ロギング」を選択します。
    • ターゲット: 「ストリーミング」を選択します。
  4. 「Configure Source Connection」で、「Compartment name」「Log Group」および「Log」(タスク1で作成したログ・グループおよびログ)を選択します。

  5. 監査ログも送信する場合は、+Anotherログをクリックし、ログ・グループとして_Auditを置き換えながら同じコンパートメントを選択します。

  6. 「ターゲットの構成」で、「コンパートメント」および「ストリーム」(タスク2で作成されたストリーム)を選択します。

  7. デフォルト・ポリシーを適用するには、各デフォルト・ポリシーに用意されている「作成」リンクをクリックします。デフォルト・ポリシーは、本コネクターがソース、タスクおよびターゲット・サービスにアクセスするために必要な一切の認可のために提供されます。

  8. 「作成」をクリックします。

タスク4: ログ・シッパーがログを取得するためのアクセス制御の設定

ログ・シッパーがOCIストリームからデータにアクセスできるようにするには、ユーザーを作成し、ログを取得するためのストリーム・プル権限を付与します。

  1. OCIユーザーを作成します。詳細は、ユーザーの管理を参照してください。

  2. SIEM_User_Groupという名前のOCIグループを作成し、そのグループにOCIユーザーを追加します。詳細は、グループの管理を参照してください。

  3. 次のOCI IAMポリシーを作成します。

    Allow group <SIEM_User_Group> to use stream-pull in compartment <compartment_of_stream>
    

次に、ログ・シッパーのインストール方法を確認し、それらをSIEMプラットフォームと統合する方法の例をいくつか示します。

ケース1: Filebeatをログ・シッパーとして使用

Filebeatは、ログデータを転送および集中管理するための軽量の出荷元です。Filebeatは、モジュールを使用して拡張性が高く、Apache Kafka、Amazon Web Services (AWS)などのソースからログを収集できます。Goで記述されたFilebeatは、簡単なデプロイメントのための単一のバイナリ・ファイルを提供します。最小限のリソースを消費しながら、大量のデータ量を処理するほうが優れています。

ファイルビートのインストール

Filebeatは、LinuxやWindowsなどの様々なオペレーティング・システム、および仮想マシン、Dockerコンテナ、Kubernetesクラスタなどのプラットフォームにインストールできます。このチュートリアルでは、Oracle Linux 8コンピュート・インスタンスにインストールします。Filebeat Quick Start: Installation and configurationを参照してください。

ログ・シッパーとして指定されたコンピュート・インスタンスにFilebeatをインストールするには、次のステップを実行します。

  1. YUMのbeatsリポジトリを追加します。詳細は、「APTおよびYUMのリポジトリ」を参照してください。

  2. 公開署名キーをダウンロードしてインストールします。

    sudo rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
    
  3. /etc/yum.repos.d/ディレクトリに.repo拡張子(たとえば、elastic.repo)のファイルを作成し、次の行を追加します。

    [elastic-8.x]
    name=Elastic repository for 8.x packages
    baseurl=https://artifacts.elastic.co/packages/8.x/yum
    gpgcheck=1
    gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
    enabled=1
    autorefresh=1
    type=rpm-md
    
  4. これで、リポジトリを使用できるようになりました。次のコマンドを実行して、Filebeatをインストールします。

    sudo yum install filebeat
    
  5. 次のコマンドを実行して、ブート中に自動的に起動するようにFilebeatを構成します。

    sudo systemctl enable filebeat
    

ファイルビートの構成

次の構成では、Filebeatは、OCIストリームからログを取り込み、ログ・シッパー(コンピュート・インスタンス)のローカル・ファイルシステムにファイルとして保存するように設定されています。これにより、サードパーティのSIEMプラットフォーム・コレクタは、ローカル・ファイル・システムからファイルを読み取ることで、これらのログを取り込むことができます。

  1. /etc/filebeat/filebeat.ymlの内容を次のサンプル構成に置き換えます(hosts, topics, username, and passwordを詳細に置き換えてください)。また、/home/opc/oci_logsなどのログを格納するフォルダを作成します。

    filebeat.inputs:
    - type: kafka
      hosts: ["cell-1.streaming.us-ashburn-1.oci.oraclecloud.com:9092"]
      topics: ["SIEM_Stream"]
      group_id: "filebeat"
      username: <username>
      password: <Auth Token>
      ssl.enabled: true
      sasl.mechanism: PLAIN
    
    output.file:
      path: "/home/opc/oci_logs"
      filename: "oci_logs"
      rotate_every_kb: 5000 # 5 MB
      codec.format:
        string: '%{[@timestamp]} %{[message]}'
    
  2. 次のコマンドを実行して構成をテストします。

    filebeat test config
    
  3. 構成の更新後にFilebeatサービスを再起動します。

    sudo systemctl restart Filebeat
    
  4. 正常に設定されると、/home/opc/oci_logsフォルダにファイルとしてOCIログが表示されます。

例: Filebeatを使用したOCIとRapid7 InsightIDRの統合

この例では、Rapid7 InsightIDRは、ログ・シッパー・ファイルビートのローカル・ファイル・システムに保存されているOCIログを取り込むように構成されています。

  1. ログ・シッパー・インスタンスにRapid7コレクタをインストールします。

    Rapid7コレクタは、ログを収集し、処理のためにRapid7 InsightIDRアカウントに送信します。Rapid7 Collectorをインストールするには、Rapid7 InsightIDRアカウントからパッケージをダウンロードし、ログ・シッパーのコンピュート・インスタンスにインストールします。詳細は、Rapid7 Collectorのインストールおよびデプロイメントを参照してください。

  2. Rapid7 InsightIDRを構成して、イベント・ソースからデータを収集します。Rapid7 InsightIDRには様々なクラウド・サービス用の事前構築済コネクタが付属していますが、OCIはネイティブにサポートされません。ただし、次のステップに従ってRAWデータを収集および処理できます。

    1. Rapid7 InsightIDRに移動し、「データ収集」「イベント・ソースの設定」に移動し、「イベント・ソースの追加」をクリックします。

    2. 「RAWデータの追加」および「カスタム・ログ」をクリックします。

    3. 「名前イベント・ソース」と入力し、「コレクタ」(コンピュート・インスタンス)を選択します。

    4. イベント・ソース・ログの場所に一致する「タイムゾーン」を選択します。

    5. 「収集方法」「監視ディレクトリ」を選択し、「ローカル・フォルダ」でOCIログ・パス/home/opc/oci_logsを使用します。

    Rapid7カスタム・ログ

    ログ収集が開始され、データはRapid7 InsightIDRで表示できます。

ケース2: ログ配送業者としてのFluent Bitの使用

Fluent Bitは軽量で高性能なログ・シッパーで、Fluentdの代替として機能します。Fluent Bitは、多数のソースからログを収集し、効率的に処理およびフィルタリングできる最適なソリューションのニーズの高まりに対応して登場しました。特に、Fluent Bitは、コンテナや組み込みシステムなどのリソース制約環境において優れています。

Fluent Bitを使用するには、/etc/fluent-bit/fluent-bit.confにある構成ファイルでinputsfiltersoutputsおよびglobal configurationsを定義します。これらのコンポーネントの詳細を確認します。

Fluent Bit入力および出力プラグイン:

Fluent Bitのインストールと構成

Fluent Bitは、LinuxやWindowsなどの様々なオペレーティング・システム、および仮想マシン、Dockerコンテナ、Kubernetesクラスタなどのプラットフォームにインストールできます。このチュートリアルでは、Oracle Linux 8コンピュート・インスタンスにインストールします。ログ・シッパーとして指定されたコンピュート・インスタンスにFluent Bitをインストールするには、次のステップを実行します。

  1. /etc/yum.repos.d/ディレクトリに.repo拡張子(たとえば、fluentbit.repo)を持つリポジトリ・ファイルを作成し、次の行を追加します。詳細は、Yumの構成を参照してください。

    [fluent-bit]
    name = Fluent Bit
    baseurl = https://packages.fluentbit.io/centos/$releasever/
    gpgcheck=1
    gpgkey=https://packages.fluentbit.io/fluentbit.key
    repo_gpgcheck=1
    enabled=1
    
  2. リポジトリが構成されたら、次のコマンドを実行してFluent Bitをインストールします。

    sudo yum install fluent-bit
    
  3. Fluent Bitのデフォルト構成ファイルは、/etc/fluent-bit/fluent-bit.confにあります。デフォルトでは、CPU使用率メトリックを収集し、出力を標準ログに送信します。/var/log/messagesファイルの送信データを表示できます。

  4. OCIストリーミング・サービスからログを収集して標準出力に送信するには、入力をKafkaとして、出力をstdoutとして構成します。Brokerstopicsusernameおよびpasswordを必ず詳細に置き換えてください。

    [INPUT]
       Name        kafka
       Brokers     cell-1.streaming.us-ashburn-1.oci.oraclecloud.com:9092
       Topics      SIEM-Stream
       Format    	json
       group_id    fluent-bit
       rdkafka.sasl.username <User Name>
       rdkafka.sasl.password   <Auth token>  
       rdkafka.security.protocol   SASL_SSL
       rdkafka.sasl.mechanism     PLAIN
    
    [OUTPUT]
       Name        stdout
    

例: Fluent Bitを使用したOCIとRapid7 InsightIDRの統合

この例では、Fluent Bitが実行されているログ・シッパー・インスタンスにRapid7 Collectorをインストールして、OCIをRapid7 InsightIDRと統合します。Fluent Bitは、Kafkaを入力として使用してOCIストリーミングからログを消費し、ローカルTCPポートに送信します。このポートでは、Rapid7コレクタが受信データをリスニングします。

  1. 既存のログ・シッパー・インスタンスにRapid7コレクタをインストールします。

    Rapid7コレクタは、ログを収集し、処理のためにRapid7 InsightIDRアカウントに送信します。コレクタをインストールするには、Rapid7 InsightIDRアカウントからパッケージをダウンロードし、ログ・シッパー・コンピュート・インスタンスにインストールします。インストール・ステップの詳細は、Rapid7 Collectorのインストールおよびデプロイメントを参照してください。

  2. Rapid7 InsightIDRを構成して、イベント・ソースからデータを収集します。Rapid7 InsightIDRには様々なクラウド・サービス用の事前構築済コネクタが付属していますが、OCIはネイティブにサポートされません。ただし、次のステップに従ってRAWデータを収集および処理できます。

    1. Rapid7 InsightIDRに移動し、「データ収集」「イベント・ソースの設定」に移動し、「イベント・ソースの追加」をクリックします。

    2. 「RAWデータの追加」および「カスタム・ログ」をクリックします。

    3. 「名前イベント・ソース」を入力し、「コレクタ」(コンピュート・インスタンス)を選択します。

    4. イベント・ソース・ログの場所に一致する「タイムゾーン」を選択します。

    5. 「収集方法」「ネットワーク・ポートでリスニング」を選択し、「ポート番号」および「プロトコル」を入力します。

    Rapid7カスタム・ログ

  3. Rapid7 InsightIDR統合のサンプルFluent Bit入出力構成。Brokerstopicsusernameおよびpassword を必ず詳細に置き換えてください。

    [INPUT]
       Name        kafka
       Brokers     cell-1.streaming.us-ashburn-1.oci.oraclecloud.com:9092
       Topics      SIEM-Stream
       Format    	json
       group_id    fluent-bit
       rdkafka.sasl.username <User Name>
       rdkafka.sasl.password   <Auth token>  
       rdkafka.security.protocol   SASL_SSL
       rdkafka.sasl.mechanism     PLAIN
    
    [OUTPUT]
       Name             tcp
       Match            *
       Host             127.0.0.1
       Port             5170
       Format           json_lines
    
  4. Fluent Bitの設定を変更したら、以下のコマンドを使用してFluent Bitを再起動します。

    sudo systemctl restart fluent-bit
    

    Fluent Bitを再起動すると、Rapid7コンソールにOCIログが表示されます。

例: Fluent Bitを使用したOCIとDatadogの統合。

この例では、ログ・シッパー・インスタンスで実行されているFluent Bitは、Kafkaを入力として使用してOCIストリームからのログを消費し、HTTP出力を使用してDatadogのHTTPエンドポイントに送信します。

  1. Datadog HTTPロギングエンドポイントを使用して、Datadogにログを送信します。詳細は、ロギング・エンドポイントを参照してください。

  2. Datadog HTTPエンドポイントにログを送信するには、Datadog APIキーが必要です。詳細は、Datadog API and Application Keysを参照してください。

    APIキーを生成するには、次のステップを実行します。

    1. Datadogアカウントで、Organization Settingsに移動します。

    2. 「APIキー」をクリックします。

    3. 「新規キー」をクリックし、キーの名前を入力して、「APIキーの作成」をクリックします。

    DataDog APIキー

  3. Datadog統合用のFluent Bit入力および出力構成の例。BrokerstopicsusernamepasswordおよびAPI Keyを必ず詳細に置き換えてください。

    [INPUT]
       Name        kafka
       Brokers     cell-1.streaming.us-ashburn-1.oci.oraclecloud.com:9092
       Topics      SIEM-Stream
       Format    	json
       group_id    fluent-bit
       rdkafka.sasl.username <User Name>
       rdkafka.sasl.password   <Auth token>  
       rdkafka.security.protocol   SASL_SSL
       rdkafka.sasl.mechanism     PLAIN
    
    [OUTPUT]
       Name             http
       Match            *
       Host             http-intake.logs.us5.datadoghq.com
       Port             443
       URI              /api/v2/logs
       Header           DD-API-KEY <API-KEY>
       Format           json
       Json_date_key    timestamp
       Json_date_format iso8601
       tls              On
       tls.verify       Off
    
  4. Fluent Bitの設定を変更したら、Fluent Bitを再起動します。

    sudo systemctl restart fluent-bit
    

    これで、DatadogアカウントにOCIログが表示されます。

次のステップ

このチュートリアルでは、ログ・シッパーを使用してOCIログをサードパーティのSIEMプラットフォームに取り込む方法を実証しました。ログ・シッパーには様々な種類があり、OCIとサードパーティのSIEMプラットフォームとの統合には複数の方法がありますが、各ログ・シッパーでサポートされている入出力オプションを慎重に評価することで、適切なログ・シッパーおよび統合方法を選択することが不可欠です。SIEMプロバイダと連携して、ソリューションが特定の環境や要件に確実に一致するようにしてください。

承認

その他の学習リソース

docs.oracle.com/learnの他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。

製品ドキュメントは、Oracle Help Centerを参照してください。