ノート:
- このチュートリアルでは、Oracle Cloudへのアクセスが必要です。無料アカウントにサインアップするには、Oracle Cloud Infrastructure Free Tierの開始を参照してください。
- Oracle Cloud Infrastructureの資格証明、テナンシおよびコンパートメントの値の例を使用します。演習を完了するときに、これらの値をクラウド環境に固有の値に置き換えます。
ログ・シッパーを使用したサード・パーティの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内のコンピュート・インスタンスにログ・シッパー・ソフトウェアをデプロイします。
ログ・シッパーは次の処理を実行します。
-
Kafkaソースを使用して、OCIストリームからログを取得します。
-
TCPポート、HTTP、サードパーティのSIEMコレクタ上のファイルなど、サポートされている任意の宛先タイプまたはプラグインを使用して、ログをサード・パーティのSIEMプラットフォームにルーティングします。
次に、次の図に示すように、ソリューション・アーキテクチャの概要を説明します。
ノート:このソリューションはギャップを埋めることができますが、他の方法を実行できない場合には、最後のオプションとしてのみ考慮することをお薦めします。SIEMプロバイダと緊密に連携して、ネイティブまたは推奨されるアプローチを最初に調査することが重要です。ログ出荷元に進むことにした場合、SIEMプロバイダと連携して最適なものを選択することで、実装中および実装後のSIEMプロバイダからのサポートが向上し、組織の特定のニーズに合わせて設定を調整できます。
使用可能な様々なログ出荷元があり、その一部は次のとおりです。
- ファイルビート
- インフルエンザビット
- Fluentd
- Vector
- ログスタッシュ
目的
- このチュートリアルでは、ログ出荷元FilebeatおよびFluent Bitを使用してOCIストリームからログを消費する方法と、サードパーティのSIEMプラットフォームと統合する方法の例について説明します。
前提条件
-
OCIのユーザーは、リソースを管理するためにOCIストリーミング、OCI Connector HubおよびOCI Loggingサービスに必要なポリシーを持っている必要があります。すべてのサービスのポリシー・リファレンスの詳細は、ポリシー・リファレンスを参照してください。
-
ログ・シッパーとして指定されたコンピュート・インスタンスは、インターネット・アクセスを使用してOCIストリームにアクセスできるようにする必要があります。詳細は、インスタンスの作成を参照してください。
ノート:次のタスク(タスク1からタスク4)は、選択した方法やログ出荷元に関係なく、OCI側で実行する必要があります。
タスク1: 取得するログの構成
OCIロギング・サービスは、テナンシ内のすべてのログに対応した、スケーラビリティの高いフルマネージド型のシングル・ペインです。OCI Loggingでは、OCIリソースからログにアクセスできます。ログは、特定のコンテキストで収集されたログ・イベントを格納および取得する最重要のOCIリソースです。ログ・グループは、コンパートメントに格納されたログのコレクションです。ログ・グループは、ログの論理コンテナです。ログ・グループを使用して、Oracle Cloud Infrastructure Identity and Access Management (OCI IAM)ポリシーを適用したり、分析用にログをグループ化したりすることで、ログを編成して管理を効率化します。
開始するには、リソースのログを有効にします。サービスには、リソースで使用できる様々なタイプのログに対応したログ・カテゴリがあります。たとえば、OCIオブジェクト・ストレージ・サービスでは、ストレージ・バケットに対して次のログ・カテゴリがサポートされます: 読取りおよび書込みアクセス・イベント。読取りアクセス・イベントはダウンロード・イベントを取得し、書込みアクセス・イベントは書込みイベントを取得します。各サービスは、リソースに対して異なるログ・カテゴリを持つことができます。
-
OCIコンソールにログインし、「監視および管理」、「ロギング」および「ログ・グループ」に移動します。
-
コンパートメントを選択し、「ログ・グループの作成」をクリックして、次の情報を入力します。
- 名前:
SIEM_log_group
と入力します。 - 説明(オプション):説明を入力します。
- Tags (オプション):タグを入力します。
- 名前:
-
「作成」をクリックして、新しいログ・グループを作成します。
-
「リソース」で、「ログ」をクリックします。
-
必要に応じて、「カスタム・ログの作成」または「サービスの有効化」ログをクリックします。
たとえば、OCIオブジェクト・ストレージ・バケットの書込みログを有効にするには、次のステップに従います:
-
「サービス・ログの有効化」をクリックします。
-
リソース・コンパートメントを選択し、「検索サービス」に「オブジェクト・ストレージ」と入力します。
-
「ログの有効化」をクリックし、「リソース」でOCIオブジェクト・ストレージのバケット名を選択します。
-
タスク1.2で作成したログ・グループ(
SIEM_log_group
)を選択し、「ログ・カテゴリ」で「書込みアクセス・イベント」を選択します。必要に応じて、「ログ名」にSIEM_bucket_write
と入力します。 -
「有効化」をクリックして、新しいOCIログを作成します。
-
タスク2: OCIストリーミングを使用したストリームの作成
OCIストリーミング・サービスは、開発者およびデータ・サイエンティスト向けの、リアルタイムでサーバーレスなApache Kafka互換イベント・ストリーミング・プラットフォームです。大量のデータ・ストリームをログなどのリアルタイムで収集および消費するための、スケーラブルで耐久性の高いフルマネージド・ソリューションを提供します。OCI Streamingは、パブリッシュ/サブスクライブ・メッセージング・モデルでデータが連続して処理されます。
-
OCIコンソールに移動し、「アナリティクスとAI」、「メッセージング」および「ストリーミング」に移動します。
-
「ストリームの作成」をクリックしてストリームを作成します。
-
次の情報を入力して、「作成」をクリックします。
- 名前:ストリーム名を入力します。このチュートリアルでは、
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をトリガーしてアラートを設定することもできます。
-
OCIコンソールに移動し、「監視および管理」、「ロギング」および「コネクタ」に移動します。
-
「コネクタの作成」をクリックして、コネクタを作成します。
-
次の情報を入力します
- 名前:
SIEM_SC
と入力します。 - 説明(オプション):説明を入力します。
- コンパートメント:コンパートメントを選択します。
- ソース: 「ロギング」を選択します。
- ターゲット: 「ストリーミング」を選択します。
- 名前:
-
「Configure Source Connection」で、「Compartment name」、「Log Group」および「Log」(タスク1で作成したログ・グループおよびログ)を選択します。
-
監査ログも送信する場合は、+Anotherログをクリックし、ログ・グループとして
_Audit
を置き換えながら同じコンパートメントを選択します。 -
「ターゲットの構成」で、「コンパートメント」および「ストリーム」(タスク2で作成されたストリーム)を選択します。
-
デフォルト・ポリシーを適用するには、各デフォルト・ポリシーに用意されている「作成」リンクをクリックします。デフォルト・ポリシーは、本コネクターがソース、タスクおよびターゲット・サービスにアクセスするために必要な一切の認可のために提供されます。
-
「作成」をクリックします。
タスク4: ログ・シッパーがログを取得するためのアクセス制御の設定
ログ・シッパーがOCIストリームからデータにアクセスできるようにするには、ユーザーを作成し、ログを取得するためのストリーム・プル権限を付与します。
-
OCIユーザーを作成します。詳細は、ユーザーの管理を参照してください。
-
SIEM_User_Group
という名前のOCIグループを作成し、そのグループにOCIユーザーを追加します。詳細は、グループの管理を参照してください。 -
次の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が収集するデータを検出および処理する方法が決まります。サポートされている入力タイプの完全なリストについては、Filebeat Input Typesを参照してください。
-
ファイルビート出力タイプ:ファイルビートは、
filebeat.yml
構成ファイルの「出力」セクションでオプションを設定することで、ログを特定の宛先に送信するように構成されます。一度に定義できる出力は1つのみです。使用可能な出力タイプの詳細は、「出力の構成」を参照してください。
ファイルビートのインストール
Filebeatは、LinuxやWindowsなどの様々なオペレーティング・システム、および仮想マシン、Dockerコンテナ、Kubernetesクラスタなどのプラットフォームにインストールできます。このチュートリアルでは、Oracle Linux 8コンピュート・インスタンスにインストールします。Filebeat Quick Start: Installation and configurationを参照してください。
ログ・シッパーとして指定されたコンピュート・インスタンスにFilebeatをインストールするには、次のステップを実行します。
-
YUMのbeatsリポジトリを追加します。詳細は、「APTおよびYUMのリポジトリ」を参照してください。
-
公開署名キーをダウンロードしてインストールします。
sudo rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
-
/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
-
これで、リポジトリを使用できるようになりました。次のコマンドを実行して、Filebeatをインストールします。
sudo yum install filebeat
-
次のコマンドを実行して、ブート中に自動的に起動するようにFilebeatを構成します。
sudo systemctl enable filebeat
ファイルビートの構成
次の構成では、Filebeatは、OCIストリームからログを取り込み、ログ・シッパー(コンピュート・インスタンス)のローカル・ファイルシステムにファイルとして保存するように設定されています。これにより、サードパーティのSIEMプラットフォーム・コレクタは、ローカル・ファイル・システムからファイルを読み取ることで、これらのログを取り込むことができます。
-
/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]}'
-
次のコマンドを実行して構成をテストします。
filebeat test config
-
構成の更新後にFilebeatサービスを再起動します。
sudo systemctl restart Filebeat
-
正常に設定されると、
/home/opc/oci_logs
フォルダにファイルとしてOCIログが表示されます。
例: Filebeatを使用したOCIとRapid7 InsightIDRの統合
この例では、Rapid7 InsightIDRは、ログ・シッパー・ファイルビートのローカル・ファイル・システムに保存されているOCIログを取り込むように構成されています。
-
ログ・シッパー・インスタンスにRapid7コレクタをインストールします。
Rapid7コレクタは、ログを収集し、処理のためにRapid7 InsightIDRアカウントに送信します。Rapid7 Collectorをインストールするには、Rapid7 InsightIDRアカウントからパッケージをダウンロードし、ログ・シッパーのコンピュート・インスタンスにインストールします。詳細は、Rapid7 Collectorのインストールおよびデプロイメントを参照してください。
-
Rapid7 InsightIDRを構成して、イベント・ソースからデータを収集します。Rapid7 InsightIDRには様々なクラウド・サービス用の事前構築済コネクタが付属していますが、OCIはネイティブにサポートされません。ただし、次のステップに従ってRAWデータを収集および処理できます。
-
Rapid7 InsightIDRに移動し、「データ収集」→「イベント・ソースの設定」に移動し、「イベント・ソースの追加」をクリックします。
-
「RAWデータの追加」および「カスタム・ログ」をクリックします。
-
「名前イベント・ソース」と入力し、「コレクタ」(コンピュート・インスタンス)を選択します。
-
イベント・ソース・ログの場所に一致する「タイムゾーン」を選択します。
-
「収集方法」に「監視ディレクトリ」を選択し、「ローカル・フォルダ」でOCIログ・パス
/home/opc/oci_logs
を使用します。
ログ収集が開始され、データはRapid7 InsightIDRで表示できます。
-
ケース2: ログ配送業者としてのFluent Bitの使用
Fluent Bitは軽量で高性能なログ・シッパーで、Fluentdの代替として機能します。Fluent Bitは、多数のソースからログを収集し、効率的に処理およびフィルタリングできる最適なソリューションのニーズの高まりに対応して登場しました。特に、Fluent Bitは、コンテナや組み込みシステムなどのリソース制約環境において優れています。
Fluent Bitを使用するには、/etc/fluent-bit/fluent-bit.conf
にある構成ファイルでinputs
、filters
、outputs
およびglobal configurations
を定義します。これらのコンポーネントの詳細を確認します。
- サービス:実行中のサービスのグローバル設定が含まれます。
- 入力:収集するFluent Bitのログ・レコードのソースを指定します。
- フィルタ:ログ・レコードに変換を適用します。
- 出力: Fluent Bitが処理されたログを送信する宛先を決定します。
Fluent Bit入力および出力プラグイン:
-
Fluent Bit Inputs Plugins: Fluent Bitは、様々なログ・ソースに合せた多様な入力プラグインを提供します。詳細は、Inputsを参照してください。
-
Fluent Bit Outputs Plugins:異なる宛先にログを効率的にディスパッチするために、Fluent Bitは多彩な出力プラグインを提供します。詳細は、Outputsを参照してください。
Fluent Bitのインストールと構成
Fluent Bitは、LinuxやWindowsなどの様々なオペレーティング・システム、および仮想マシン、Dockerコンテナ、Kubernetesクラスタなどのプラットフォームにインストールできます。このチュートリアルでは、Oracle Linux 8コンピュート・インスタンスにインストールします。ログ・シッパーとして指定されたコンピュート・インスタンスにFluent Bitをインストールするには、次のステップを実行します。
-
/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
-
リポジトリが構成されたら、次のコマンドを実行してFluent Bitをインストールします。
sudo yum install fluent-bit
-
Fluent Bitのデフォルト構成ファイルは、
/etc/fluent-bit/fluent-bit.conf
にあります。デフォルトでは、CPU使用率メトリックを収集し、出力を標準ログに送信します。/var/log/messages
ファイルの送信データを表示できます。 -
OCIストリーミング・サービスからログを収集して標準出力に送信するには、入力をKafkaとして、出力をstdoutとして構成します。
Brokers
、topics
、username
および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コレクタが受信データをリスニングします。
-
既存のログ・シッパー・インスタンスにRapid7コレクタをインストールします。
Rapid7コレクタは、ログを収集し、処理のためにRapid7 InsightIDRアカウントに送信します。コレクタをインストールするには、Rapid7 InsightIDRアカウントからパッケージをダウンロードし、ログ・シッパー・コンピュート・インスタンスにインストールします。インストール・ステップの詳細は、Rapid7 Collectorのインストールおよびデプロイメントを参照してください。
-
Rapid7 InsightIDRを構成して、イベント・ソースからデータを収集します。Rapid7 InsightIDRには様々なクラウド・サービス用の事前構築済コネクタが付属していますが、OCIはネイティブにサポートされません。ただし、次のステップに従ってRAWデータを収集および処理できます。
-
Rapid7 InsightIDRに移動し、「データ収集」→「イベント・ソースの設定」に移動し、「イベント・ソースの追加」をクリックします。
-
「RAWデータの追加」および「カスタム・ログ」をクリックします。
-
「名前イベント・ソース」を入力し、「コレクタ」(コンピュート・インスタンス)を選択します。
-
イベント・ソース・ログの場所に一致する「タイムゾーン」を選択します。
-
「収集方法」に「ネットワーク・ポートでリスニング」を選択し、「ポート番号」および「プロトコル」を入力します。
-
-
Rapid7 InsightIDR統合のサンプルFluent Bit入出力構成。
Brokers
、topics
、username
および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
-
Fluent Bitの設定を変更したら、以下のコマンドを使用してFluent Bitを再起動します。
sudo systemctl restart fluent-bit
Fluent Bitを再起動すると、Rapid7コンソールにOCIログが表示されます。
例: Fluent Bitを使用したOCIとDatadogの統合。
この例では、ログ・シッパー・インスタンスで実行されているFluent Bitは、Kafkaを入力として使用してOCIストリームからのログを消費し、HTTP出力を使用してDatadogのHTTPエンドポイントに送信します。
-
Datadog HTTPロギングエンドポイントを使用して、Datadogにログを送信します。詳細は、ロギング・エンドポイントを参照してください。
-
Datadog HTTPエンドポイントにログを送信するには、Datadog APIキーが必要です。詳細は、Datadog API and Application Keysを参照してください。
APIキーを生成するには、次のステップを実行します。
-
Datadogアカウントで、Organization Settingsに移動します。
-
「APIキー」をクリックします。
-
「新規キー」をクリックし、キーの名前を入力して、「APIキーの作成」をクリックします。
-
-
Datadog統合用のFluent Bit入力および出力構成の例。
Brokers
、topics
、username
、password
および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
-
Fluent Bitの設定を変更したら、Fluent Bitを再起動します。
sudo systemctl restart fluent-bit
これで、DatadogアカウントにOCIログが表示されます。
次のステップ
このチュートリアルでは、ログ・シッパーを使用してOCIログをサードパーティのSIEMプラットフォームに取り込む方法を実証しました。ログ・シッパーには様々な種類があり、OCIとサードパーティのSIEMプラットフォームとの統合には複数の方法がありますが、各ログ・シッパーでサポートされている入出力オプションを慎重に評価することで、適切なログ・シッパーおよび統合方法を選択することが不可欠です。SIEMプロバイダと連携して、ソリューションが特定の環境や要件に確実に一致するようにしてください。
関連リンク
承認
- 作成者 - Chaitanya Chintala (クラウド・セキュリティ・アドバイザ)
その他の学習リソース
docs.oracle.com/learnの他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。
製品ドキュメントは、Oracle Help Centerを参照してください。
Ingest Oracle Cloud Infrastructure Logs into Third-Party SIEM Platforms using Log Shippers
G20580-01
November 2024