皆さま、こんにちは!y.takanashiです。
今回はWAFのエッジ・ポリシーのログをオブジェクト・ストレージのバケットに配信する方法についてご紹介します。
目次
エッジ・ポリシーとは?
エッジ・ポリシーとはWAF(Web Application Firewall)の一種で、DNSのCNAMEレコードにアクセスポイントを提供することにより、不正アクセスからアプリケーションを保護することができます。
エッジ・ポリシーはアクセス等のログを記録することができますが、デフォルトでは7日間のみ保持されます。
長期間ログを保持する場合や、アクセスログを分析する必要がある場合には、オブジェクト・ストレージのバケットにログを配信する仕組みを構築する必要があります。
そこで本記事では、エッジ・ポリシーで取得したログをオブジェクト・ストレージのバケットに配信する方法についてご紹介します。
エッジ・ポリシーの詳細については以下の資料をご覧ください。
Speaker Deck - 「WAFエッジポリシー設定手順書」
必要な各情報の取得
WAFログの配信を有効にするために、以下の情報をOracleサポートに共有し、実装作業を依頼します。
- ネーム・スペース
- テナンシのOCID
- リージョン識別子
- コンパートメントのOCID
- アクセス・キー
- 顧客秘密キー
- IAMポリシーのOCID
- バケット名
- バケットのOCID
- バケットのリージョン
- WAFポリシーのOCID
- エッジ・ポリシーのプライマリ・ドメイン
それでは各種情報の取得方法についてご紹介します。
ネーム・スペース、テナンシのOCIDの取得
最初にネーム・スペースと、テナンシのOCIDの取得方法についてご紹介します。
OCIコンソール画面右上の人型アイコンから「テナンシ」を選択します。
テナンシの詳細画面から、テナンシのOCIDとオブジェクト・ストレージ・ネームスペースをそれぞれ取得しておきます。
リージョン識別子の取得
OCIコンソール画面の「リージョンの管理」を選択します。
任意のリージョン(ここでは東京リージョン)からリージョン識別子を取得することができます。
コンパートメントのOCIDの取得
コンパートメントは、エッジ・ポリシーが配置されているものを使用します。
OCIDの取得方法は、OCIコンソール画面左上のハンバーガーアイコンから「アイデンティティとセキュリティ」→「コンパートメント」を選択します。
以下の赤枠からコンパートメントのOCIDを取得することができます。
ユーザー情報について
ここでは、WAFログの配信用に新しいユーザーとして「api.waf.log.user」を作成し、そのユーザーから必要な情報であるアクセスキーと秘密キーを取得します。
アクセス・キーの取得
ユーザー詳細画面から「APIキー」→「APIキーの追加」を選択します。
既にアクセス・キーを保持している場合は「公開キー・ファイルの選択」もしくは「公開キーの貼付け」からアクセス・キーを追加します。
保持していない場合は「APIキー・ペアの生成」からアクセス・キーを作成しましょう。
APIキーのフィンガー・プリントはOracleサポートに依頼する際に必要な情報として使用しますので、以下の赤枠の値をコピーしておきましょう。
顧客秘密キーの取得
ユーザー詳細画面から「顧客秘密キー」→「秘密キーの生成」を選択します。
任意の名前(ここでは「customer-secret-key」)を入力後、「秘密キーの生成」を選択します。
生成後、トークンが発行されますのでこちらをコピーしておきます。
以上でアクセス・キーと秘密キーの取得は完了となります。
IAMポリシーの作成
オブジェクト・ストレージを管理するためには以下のステートメントを含むIAMポリシーが必要となります。
Allow group <アクセス・キーと顧客秘密キーを作成したユーザーがいるグループ> to manage object-family in compartment <WAFポリシーが存在するコンパートメント>
ポリシーの作成後、OCIDをコピーしておきます。
バケット情報の取得について
バケットの作成
IAMポリシーの作成後、WAFログ配信用のバケットの作成と設定を行います。
OCIコンソール画面左上のハンバーガーアイコンから「ストレージ」→「バケット」を選択します。
「バケットの作成」から、バケット名(ここでは「Bucket_cloudii.jp」)を入力し、「作成」を選択します。
※サポートされているのは標準バケットのみで、アーカイブ・ストレージ層はサポートされていないためご注意ください。
作成後、バケット名とOCID、バケットを作成したリージョンの識別子をそれぞれコピーしておきましょう。
以上でバケットの作成・設定は完了となります。
WAFの各情報の取得
OCIDの取得
WAFのOCIDはポリシー詳細から取得することができます。
プライマリ・ドメインの取得
またエッジ・ポリシーのプライマリ・ドメインですが、以下の赤枠から取得できます。
アプリケーションのドメインは事前にDNSのゾーンに、CNAMEとして登録する必要があります。
ここではOCIのDNSサービスを例にして、登録方法をご紹介します。
OCIコンソール左上のハンバーガー画面から「ネットワーキング」→DNS管理内の「ゾーン」を選択します。
「レコードの管理」から以下の項目を入力、「レコードの追加」を選択します。
- 名前:任意(ここでは「dev.cloudii.jp」)
- タイプ:CNAME
- TTL:任意(ここでは3,600秒)
- ターゲット:CNAMEターゲットに記載されているドメイン
「変更の公開の確認」を選択後、DNSのゾーンが更新されます。
以上で、全ての情報の取得は完了となります。
バケットへのWAFログの配信の詳細については、以下の資料をご覧ください。
WAFログのアップロード
取得をした情報を元に、OracleサポートにWAFログの配信依頼を行います。
依頼内容としてはシンプルに、本文に各情報を記述するだけで対応できます。
以下が記述例です。
※「アップロード接頭辞」の入力は任意です。
依頼した数日後に実装され、完了後は以下のように、指定したバケットにWAFログがアップロードされるようになります。
上記のように、WAFログは日付と種類に基づいてフォルダに分類され、特定のログを容易に取得することができます。
ただし、WAFログのファイル名が分かりにくく、名前変更できない点が課題です。
以上で、全ての設定は完了となります。
まとめ
最後にWAFログをバケットに配信する方法についてまとめます。
- 以下の情報を事前に取得する必要がある
- ネーム・スペース
- テナンシのOCID
- リージョン識別子
- コンパートメントのOCID
- アクセス・キー
- 顧客秘密キー
- IAMポリシーのOCID
- バケット名
- バケットのOCID
- バケットのリージョン
- WAFポリシーのOCID
- エッジ・ポリシーのプライマリ・ドメイン
- 上記の情報を元にOracleサポートに依頼後、数日程度で実装完了
- 日付と種類別にフォルダが作成されてファイルがアップロードされるが、ファイルの名前変更は行えない
トラフィック量を考慮して、エッジ・ポリシーのログは7日間のみ保存されます。
しかし、オブジェクト・ストレージのバケットを使用することで、ログを永続的に保存することができます。
さらに、マネージドで日付や種類毎でフォルダを分けて、その中にログファイルを格納することで、これまでのログへのアクセスも容易に行うことができます。
以上となります。
この記事を通じて読者の皆様の問題解決の一助となれば幸いです。
最後まで読んで頂き、ありがとうございましたm(_ _)m