初心者のためのF5 XC:API活用の実例で学ぶ
F5 Distributed Cloud Services(以下、F5 XC)は、エッジとマルチクラウド環境でアプリケーションを展開、接続、保護、運用するためのプラットフォームです。今回は、APIを通じてF5 XCの管理コンソールではできないことを実例として紹介いたします。
はじめに
F5 XCの設定や運用時の操作などは、「管理コンソール」と呼ばれるWebUIを使います。F5 XC自体はSaaSソリューションのため、管理コンソールも当然、F5が提供するテナントURLにアクセスしてWebUIを使用します。この管理コンソールは視覚的にも綺麗で、機能も豊富なため、それなりに使えるのですが、 こんな機能があるばもっと便利になるのに!という点がありました。
そこで、F5 XCのAPIを使って、情報収集・精査したところ、作業効率を上げることができたため、その実例を紹介します。
- 今回紹介する実例
1. "support ID"でセキュリティイベントログとアクセスイベントログを横断して検索
2. 攻撃検知シグネチャのランキングリストの作成
F5 XCとは
F5 XCとは、マルチクラウド、ハイブリッドクラウド環境においてネットワーク接続、セキュリティ対策、アプリケーション配信を効率的におこなうことができるSaaS製品です。
以下のURLにて、製品自体の紹介をしています。ブログでも紹介しています。
F5 XCをAPIで操作する
API(Application Programming Interface)は、異なるソフトウェア間で情報を交換するための仕組みです。APIについては、以下のブログでも説明していますので参考にしてください。
F5 XCをAPIで操作するメリット
APIで F5 XC の機能をプログラム的に制御し、自動化することが可能です。以下に主なメリットを挙げます。
- 自動化:APIによる自動化で時間と工数の節約が可能
- 一貫性:操作の一貫性を保ち、ミスの軽減が可能
- 柔軟性:プログラム言語を問わず、F5 XCを操作ができるため、柔軟なシステム構築が可能
APIを使用したF5 XCの操作方法
APIを使ったHTTPリクエスト送信の主な流れです。
- APIキーの準備:F5 XCの管理コンソール(WebUI)から取得します
- APIドキュメントの確認:APIドキュメントを参考に必要とする情報のURLや設定内容を確認します
- リクエストを送信:APIキーを使ってF5 XCに対してHTTPリクエストを送信します
- レスポンスの確認:F5 XCからのレスポンスを元に必要な情報をまとめます
APIドキュメントは英語ですが丁寧に書かれてます。
- メーカー公式サイト:F5 Distributed Cloud Services API
HTTPリクエストの例
プログラムでHTTPリクエストを送信する前に、馴染のcurlコマンドでAPIのHTTPリクエストを送信してみましょう。
- コマンド例:curlコマンド
curl https://<tenant>.console.ves.volterra.io/api/web/namespaces \ -H "Authorization: APIToken <token value>"
- 実行結果例:JSON形式のアウトプット
{ "items": [ { "tenant": "my-tenant-name-laggccvg", "namespace": "", "name": "default", "uid": "4xxxxxx2-6xxf-4xxc-bxxxxxxxxxxxxxxx8", "description": "", "disabled": false, "labels": { }, "annotations": { }, "owner_view": null, "metadata": null, "system_metadata": null, "get_spec": null, "status_set": [ ] }, { "tenant": "my-tenant-name-laggccvg", "namespace": "", "name": "naga1-namespace", "uid": "fxxxxxx4-4xx4-4xxf-bxx9-dxxxxxxxxxx0", "description": "", "disabled": false, "labels": { }, "annotations": { }, "owner_view": null, "metadata": null, "system_metadata": null, "get_spec": null, "status_set": [ ] }, ], "errors": [ ] }
APIを使った実例
今回紹介する実例は以下です。
- WAF機能で攻撃リクエストをブロックした際のブロック画面に表示される "support ID" を元に、セキュリティイベントログとアクセスイベントログの2つのログを横断的に検索し、HTTP Load Balancers・検知した日時時刻・検知理由などを表示させる。
- WAF機能で攻撃リクエスト情報としてダッシュボードが備わっている。そのダッシュボードに表示されている検知したシグネチャやバイオレーションのランキングリストと件数を表示させる。
実例1. "support ID"でセキュリティイベントログとアクセスイベントログを横断して検索
なぜ、これが必要になったか:
F5 XC経由でWebサイトにアクセスし、以下のようなブロック画面が表示された場合、support ID を サイト管理者に伝え、対応を仰ぐことになります。この support ID は、F5 XCの管理コンソール上では req_id という項目になっており、この req_id をログから探し出し、詳細情報を入手することで、なぜこのWebサイトへのアクセスがブロックされたのかを確認します。
サイト管理者、すなわち、F5 XCの運用管理者は、管理コンソール上で 連絡を受けた support ID(F5 XC内では req_id という項目)に該当する通信をログから探します。対象となるログは 2種類あり、セキュリティイベントログ と アクセスイベントログ です。
- セキュリティイベントログ: F5 XCのWAF機能を有効にしている場合、WAF機能により攻撃と見なされ検知した通信ログなど。ログ保管期間は30日間。
- アクセスイベントログ:F5 XC経由の全ての通信ログ。ログ保管期間は1週間。
ここで、手間が発生してしまいます。これらセキュリティイベントログとアクセスイベントログを確認する画面が異なるため、似たような操作を複数回実施することになります。具体的には、アクセスパスが Web App & API Protection > Overview > Security 以降、セキュリティイベントログは Security Analytics の画面で検索し、同じく、アクセスイベントログは Requests の画面で検索します。
また、HTTP Load Balancer が複数ある場合は、そのそれぞれの HTTP Load Balancer毎に同じ操作を実施し、検索に工数が掛かってしまいます。
API操作でできること:
req_id の情報だけで セキュリティイベントログとアクセスイベントログを検索します。保存期間最大と同じセキュリティイベントログが30日間、アクセスイベントログが同、1週間を対象に検索します。どのログで検索ヒットし、該当のドメイン(FQDN)や検知した時間などを表示します。実際にはF5 XCの管理コンソールで検索し表示される情報と同じ情報をファイルに書き込んでいるため、管理コンソールにアクセスせずとも、必要な情報を得ることができます。
セキュリティイベントログには記録されておらず、アクセスイベントログにログが記録されていることがわかります。また、どのドメインでの情報でいつの日付かなども分かることができます。
実例2. 攻撃検知シグネチャのランキングリストの作成
なぜ、これが必要になったか:
WAF機能で攻撃リクエスト情報をダッシュボードを使って、網羅的に現状を把握することができます。例えば、検知したシグネチャの検知数の多いTop5リストや同じく検知したバイオレーションの検知数の多いTop5リストをこのダッシュボードから見ることができます。Top5以外のリストでも、リストを1つ1つ「表示除外」に設定すれば、次にランキングされているリストが順に表示されます。しかし、表示対象期間を長めに設定した場合、かつ、多数の検知シグネチャがリストアップされている場合、管理コンソールの少ない操作でそれらの情報の多くを把握することが難しいです。
API操作でできること:
攻撃リクエストのログはセキュリティイベントログと言います。APIを使って、対象期間中のセキュリティイベントログを取得します。取得したセキュリティイベントログから、シグネチャID毎の検知数を数え、Top5という縛り無く、検知数のランキングを表示することができます。
これで、該当のドメインに対して、シグネチャベースの攻撃などの対象の期間内の件数を把握し、攻撃の傾向を把握することで次の対策を練ることができるようになります。
まとめ
本ブログでは、F5 XCのAPIを活用する2つの実例を紹介しました。
1つ目は、WAFの検知ログの検索を高速化する方法です。従来の管理コンソールを使う代わりにAPIを活用することで、ログの検索処理を大幅に高速化できます。
2つ目は、WAFの検知ログからトレンド情報を抽出し、次のアクションを検討するための情報収集です。APIを使えば、ログデータから必要な情報を効率的に取り出すことができます。
このように、APIを活用することで、管理コンソールに頼らずに素早く正確なデータ処理が可能になります。紹介した2つの例以外にも、APIには多くの活用シーンがあります。APIドキュメントを参考に、みなさまも是非APIの活用によるシステム運用の効率化を検討してみてください。