· 

VCNフローログをSumo Logicで可視化!~Part1~

こんにちは!テリロジーのY.Tです。

今回はOCI上のVCNフローログを、APIで取得し、Sumo LogicというSIEMツールへ送信しダッシュボードを作成していきます。

 

VCNフローログとは、FreeTierでも有効にすることが可能なVCN内の通信ログのことで、主に以下の情報が

確認可能です。

✔ セキュリティリストやセキュリティグループで許可・拒否された通信

✔ 送信元、宛先のIPアドレスとポート番号

✔ パケット数、データのバイト数

 

取得したログは、OCIコンソール上のLog Analyticsや、Splunkなどの外部SIEMツールで常時監視し、アラートを上げることができます。

ここでは、以下の手順でSumo Logicでログを可視化していきます。今回はOCIからAPIを使い、VCNフローログを取得するところまで実施します。

今回の記事:

1.VCNフローログの有効化

2.OCI APIを利用しフローログを取得

3.Sumo Logicにデータ送信 ※次回の記事

4.Sumo Logicでログを可視化 ※次回の記事

1.VCNフローログの有効化

OCIのWebコンソールからフローログを有効化していきます。

1.「ロギング」>「ログ・グループ」から「ログ・グループの作成」をクリックします。

グループ名を付け、ロググループを作成します。

 

2.作成したロググループ内の左下メニューの「リソース」 >「ログ」から「サービス・ログの有効化」をクリックし、

以下の値を設定し、「ログの有効化」で保存します。

サービス:Virtual Cloud Network (subnets)

リソース:パブリック・サブネット

ログ・カテゴリ:Flow Logs(All records)

ログ名:※任意

「ロギング」>「検索」からログを検索できます。検索可能なログのフィールドは以下のドキュメントに記載があります。

Oracle Cloud Infrastructureのドキュメント VCNフロー・ログの詳細

2.OCI APIを利用しVCNフローログを取得

次に、VCNフローログをOCI APIで取得していきます。

OCIのWebコンソールのメニューからログ・アナリティクスを有効化することで、ダッシュボードを確認することも できます。

ここでは、マルチクラウドで利用する場合のユースケースを考え、当社が取り扱っているSIEMツールである

Sumo Logicでログを可視化していくために、APIでデータを取得します。

 

以前記事にさせていただいた「Oracle Cloud Infrastructure (OCI) のAPI実行方法」を参考に、oci-curlコマンドを

使い、APIでのデータの取得を実施していきます。

 

ログ検索のOCI 公式APIリファレンスを参考に、リクエストコマンドを作成すると、以下のようになります。

 

oci-curl logging.ap-tokyo-1.oci.oraclecloud.com get <POSTデータファイルのフルパス> "/20190909/search"

 

POSTで送信するデータを以下のように記載し、別ファイルにしました。

"searchQuery"パラメータで必要な各OCIDは、OCI Webコンソールから確認することができます。

また、今回はセキュリティリストによって拒否された通信のログを取得するよう、クエリを指定しました。

{

  "timeStart": "2021-01-07T06:57:55.000Z",

  "timeEnd": "2021-01-07T07:00:29.000Z",

  "isReturnFieldInfo": false,

  "searchQuery": "search \"<compartment_OCID>/<log_group_OCID>/<log_OCID>\" | data.action='REJECT'"

}

Tips!

OCIロギングの検索では指定する開始時間と終了時間が14日以内の制限があるため、

ログの検索期間は14日以内となるように指定します

 実際にリクエストコマンドを実行してみると以下のような結果が得られます。

~結果例~

※OCI公式ドキュメント「Oracle Cloud Infrastructure Documentation / API Reference and Endpoints」抜粋

{
  "results": [
    {
      "data": {"ts": "2019-06-19T02:58:33Z", "severity": "ERROR", "msg": "ERROR 2019-06-19 02:58:33,932 Service error"},
    },
    {
      "data": {"ts": "2019-06-19T02:59:33Z", "severity": "ERROR", "msg": "ERROR 2019-06-19 02:59:33,950 Service error"},
    },
  ],
  "summary": {
      "resultCount": 2,
      "fieldCount": 3
  }
}

 

次回は、Sumo Logicにデータを送信し、ダッシュボードを作成し、可視化していきます!