X

A blog about Oracle Technology Network Japan

  • December 22, 2020

Oracle Cloud InfrastructureのWeb Application FirewallログをLogging Analyticsに送信してセキュリティ情報を取得する方法とは

Guest Author

※本記事は、Nazih Bachir DJOUMIによる"How to send OCI WAF Logs to OCI Logging Analytics and get Security Insights"を翻訳したものです。


1.はじめに

Events Service、サーバーレス・ファンクション、Oracle Identity Cloud Serviceを使用して、Oracle Management Cloud Log Analytics Service経由でOracle Cloud Infrastructure Web Application Firewall(OCI WAF)のセキュリティ情報を取得する方法については、以前の記事でご紹介しました。

今回の記事では、Oracle Cloud Infrastructure(OCI)ネイティブの新サービスであるLogging Analyticsを使用して、OCI WAFのセキュリティ情報をもっとすばやく簡単に取得します。このネイティブとは、Oracle Cloud内に統合される機能として一から開発されたことを表しています。

以下の画像は、WAF Activity Overviewを表示したダッシュボードの例です。WAF Activity Overviewをインポートすることで、WAFログから幅広い有用な情報をすぐに確認できます。

この記事の最後に、さらに詳細にまでドリルダウンした別のWAFダッシュボードも紹介しています。これらのサンプル・ダッシュボードはすべて、この記事にリンクされているリソースに含まれています。

 

それでは、WAFログをOCI Object Storageバケットに転送する方法、転送されたログをバケットからLogging Analyticsサービスに取り込む方法、およびダッシュボードをLogging Analyticsサービスにインポートする方法について概要を見ていきます。

この記事では、OCIおよびREST APIについて理解できていることを前提に進めていきます。また、Oracle Cloudアカウントをすでにプロビジョニングして、OCI Logging Analyticsサービスをアクティブにし、前提条件のタスクをすべて完了して使用できる状態にあるという想定で説明します。  
WAFポリシーがターゲット・コンパートメントのMycompartmentに構成されていること、OCI Object Storageバケットがこのコンパートメント内に作成されていることも必要です。また、アカウント内の管理者権限があることも前提条件となります。

この記事ではセキュリティ上の理由から特定のユーザーを使用しますが、その統合用ユーザーの名前をapi.waf.log.userとしています。

始める前に、OCI、WAFポリシー、OCI Object Storageのそれぞれから、必要になる詳細情報を入手しましょう。

収集した詳細情報については後の手順で簡単に確認できるように、手順の番号とともにテキスト・エディタに保存しておいてください。

 

2.情報収集

2.1 OCIから

2.1.1.「Administration」→「Tenancy details」に移動し、テナンシーのOCIDをコピーしておきます。

 

2.1.2.「Administration」→「Tenancy」で、「Region Name」を確認します。
「Administration」→「Region Management」で、そのリージョンに対応するRegion Identifierを保存しておきます。


2.1.3.「Administration」→「Identity」→「Users」で、WAFログとOCIバケット間の統合に使用するための新規ユーザーとしてapi.waf.log.userを作成します。「API Public Key」を追加し、Fingerprintをコピーしておきます。
2.1.4.OCIDをコピーしておきます。
2.1.5.「Customer Secret Keys」をクリックし、新しい秘密鍵を生成します。この秘密鍵を安全な場所に保存します。
2.1.6.アクセス・キーをコピーしておきます。
2.1.7.「Administration」→「Identity」→「Groups」で、新しいグループとしてapigroupを作成し、先ほど作成したユーザーをこのグループに追加します。グループのOCIDをコピーしておきます。
2.1.8.グループ名をコピーしておきます。

 

2.2 WAFから

2.2.1.「Security」→「WAF Policies」に移動し、作成済みのポリシーをクリックします。ポリシーのOCIDをコピーしておきます。 
2.2.2.CNAME Targetをコピーしておきます。
2.2.3.ターゲット・アプリケーションのドメイン名をコピーしておきます。

 

2.3.Object Storageから

2.3.1.Object Storageに移動し、作成済みのバケットをクリックします。OCIDをコピーしておきます。
2.3.2.バケット名をコピーしておきます。
2.3.3.ネームスペースをコピーしておきます。
2.3.4.コンパートメントをクリックして、コンパートメントのOCIDをコピーしておきます。
2.3.5.コンパートメント名をコピーしておきます。

 

3.OCIバケットへのWAFログの転送

作成したOCIバケットにWAFログを転送するために、Oracle Supportを使用してSRを作成する必要があります。

 

3.1.IAMポリシーの設定

手順2.1.3で作成したユーザーには、バケットへの書込み権限が必要になります。そのために、このユーザーを含むグループに対して権限を付与する必要があります。

3.1.1.「Administration」→「Identity」→「Policy」に移動して、以下のポリシー文を作成します。

allow group <group_name_step_2.1.8> to manage object-family in compartment <compartment_name_step_2.5.5>

3.1.2.ポリシーのOCIDをコピーしておきます。

 

3.2.WAFログのストリーミングの有効化(SRが必要)

ポリシーの設定後、Oracle WAF PortalサポートでSRを発行し、以下の情報を提供します。

  • アプリケーションのドメイン名(手順2.4.3)、および該当する場合は他のドメイン名
  • アクセス・キー(手順2.1.6)
  • 秘密鍵(手順2.1.5)
  • WAFポリシーのOCID(手順2.4.1)
  • バケット名(手順2.5.2)
  • バケットのOCID(手順2.5.1)
  • ネームスペース(手順2.5.3)
  • テナンシーのOCID(手順2.1.1)
  • コンパートメントのOCID(手順2.5.4)
  • ポリシーのOCID(手順3.1.2)
  • リージョン識別子(手順2.1.2)
  • バケットのリージョン
  • アップロード接頭辞:"%{+YYYY}/%{+MM}/%{+dd}/%{[log_type]}"

ユーザーのOCIバケットにログが表示されるようになるまで、実装に数日かかります。

実装の完了後、以下のようにWAFから到着したログがユーザーのOCIバケットに表示されるようになります。

 

4.OCIポリシーの作成

次に、Logging Analyticsサービスおよびダッシュボードの管理に必要となるすべてのポリシーを作成していきます。
ここでは手順を簡略化するために、先ほど作成したapigroupグループのメンバーであるapi.waf.log.userユーザーに対してポリシーを付与することにします。  
「Identity」→「Policies」で、Logging Analyticsサービスの管理に必要となる以下の文を含む新しいポリシーを作成します。

allow service loganalytics to READ loganalytics-features-family in tenancy

Allow group apigroup to manage all-resources IN TENANCY where any {request.permission='LOG_ANALYTICS_OBJECT_COLLECTION_RULE_CREATE',request.permission='LOG_ANALYTICS_LOG_GROUP_UPLOAD_LOGS',request.permission='LOG_ANALYTICS_ENTITY_UPLOAD_LOGS',request.permission='LOG_ANALYTICS_SOURCE_READ',request.permission='BUCKET_UPDATE',request.permission='LOG_ANALYTICS_OBJECT_COLLECTION_RULE_DELETE'}

allow service loganalytics to read buckets in tenancy

allow service loganalytics to read objects in tenancy

allow service loganalytics to manage cloudevents-rules in tenancy

allow service loganalytics to inspect compartments in tenancy

allow service loganalytics to use tag-namespaces in tenancy where all {target.tag-namespace.name = /oracle-tags/}

また、ダッシュボードの管理に必要となる以下の文も作成します。

Allow group apigroup to manage management-dashboard-family in tenancy

 

5.OCI LOGGING ANALYTICSサービスの準備

ここでは2つの手順を実行します。まず、ブログ・リソースのリンク先からログ・ソースとパーサーをインポートして、次に、OCI Logging Analyticsログ・グループを作成します。
ソースとパーサーをOCI Logging Analyticsサービスにインポートするには、このサービスに移動し、「Administration」をクリックして、Actionパネルの「Import Configuration Content」をクリックします。

 

ブログ・リソースからダウンロードしたログ・ソースのZIPファイルをドラッグ・アンド・ドロップして、「Import」をクリックします。

 

ログ・ソースとパーサーがインポートされたら、ログ・グループを作成しましょう。
そのために、「Log Groups」をクリックして、グループの作成先となるコンパートメントを選択します。関係性を分かりやすくするために、WAFポリシーとOCIバケットの作成先コンパートメントと同じものを使用できます。次に、「Create Log Group」をクリックします。名前と説明を入力し、「Create」をクリックします。OCIDが次の手順で必要になるため、コピーしておきます。

 

6.OCI OBJECT STORAGEからのログの収集

ここでは、WAFログを含むオブジェクト・ストレージからログを継続的に収集します。

ログの収集を有効にするには、ObjectCollectionRuleリソースを作成する必要があります。ObjectCollectionRuleリソースを作成するには、手順4で作成したIAMポリシーが必要になります。

この実行には、CLIoci-curl、またはお好みのREST APIツールを使用できます。

以下の例ではCLIを使用します。

oci-cli environementを設定し、以下のコマンドについて、ルール名を設定し、compartmentId、osNamespace、osBucketName、namespace-nameの値を変更した上で実行します。

oci log-analytics object-collection-rule create --name rule_idcs --compartment-id XXX --os-namespace XXX --os-bucket-name XXX --log-group-id XXX --log-source-name IDCS --namespace-name XXX --collection-type HISTORIC_LIVE --poll-since BEGINNING

logSourceNameの値は手順5でインポートしたものですので、そのままにしてください。

また、この例のCollectionTypeとpollSinceの値は、まずすべての履歴データを収集し、その後は新しいログを継続的に収集するという設定になっています。

他のオプションについては、こちらのリファレンスを参照してください。
この時点で、OCI Logging Analyticsに移動すると、以下のようなWAFログを確認できます。

 

7.ダッシュボードのインポート

ここでは、ダッシュボードをOCI Logging Analyticsサービスにインポートします。

ブログ・リソースからダッシュボードのJSONファイルをダウンロードします。

このファイルを編集して、すべてのEDITCOMPARTMENTの部分を、ダッシュボードのインポート先となるコンパートメント・ターゲットのOCIDに書き換えます。

このコンパートメント・ターゲットはMycompartmentまたはMycompartmentの親コンパートメントとなります。

これで、ダッシュボードをインポートできるようになりました。

以下のoci-cliコマンドを実行します。

oci management-dashboard dashboard import --dashboards /path/to/dashboard.json

Logging Analyticsサービスに5つの新しいダッシュボードが表示され、使用できるようになっているはずです。

 

Overviewダッシュボードのほか、以下のように他のセキュリティ情報を利用する詳細なダッシュボードも表示できます。

このブログの内容が皆さまのお役に立てば幸いです。最後に、Oracle Cloud Infrastructureを使い始めるための次のステップについて以下にご紹介します。

  • Oracle Cloud Infrastructureアカウントをお持ちでない場合は、Free Tierをお試しください。

 

8.参考資料

Be the first to comment

Comments ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.