クラウド型WAFのImperva Incapsula APIの使い方 #incapsula
こんにちは、コカコーラ好きのカジです。
今回は、WAF(Web Application Firewall)のImperva IncapsulaがAPIを用意しているので、APIによる操作を行う方法をご紹介します。
Imperva Incapsula(インパーバ インカプスラ)はクラウド型WAFです。Incapsulaって何?という方は、ここを参照ください。
APIで何ができそうか?
ドキュメントをざっくり見た限り、Web GUIで行なっていたIncapsulaの操作がほぼ行えそうです。
Documentの参照方法
Imperva IncapsulaのAPIは非公開のようです。以下の流れで確認ください。 Web GUIでログイン後、Documentをクリックします。
API Referenceをクリックします。
API Reference(マニュアル)が参照可能です。
APIキーの取得
前提条件
APIキーを使うためには、IncapsulaのEnterpriseプランで契約している必要があります。
Incapsulaのログインし、「Account」>「API Settings」の「New API Key」をクリックして発行します。
ファイルをダウンロードするわけではなく、IDとキーがそのままブラウザのポップアップで表示されますので、コピー&ペーストで控えておきます。
キーは再び参照できないため見逃した場合は、再発行します。 こちらでキーの破棄もできるようです。
Accont IDの確認
API操作時に、パラメータとして、「Accont ID」が必要となりますが、入手先が不明で試行錯誤し、以下で確認できました。 「Account」>「Account Users」(API Settingsのすぐ上)でCSVのアイコンをクリックします。
アカウント情報をcsv出力するとUser名の前に「Account ID」が記載されているため、控えておきます。
これで準備が整いました。
API基本操作
- GETもSETも全て、HTTPSのエンドポイントへPOSTして操作
- パラメータはRequest BodyにHTMLのフォームで記載して、&でつなげる。「param1=value1¶m2=value2」
- レスポンスはJSONで帰ってくる。
操作について
私はPOSTMANを利用して実施しました。詳細はこちらになります。
[ツール] Postmanを利用したAPIの試験 [機能の紹介]
[ツール] PostamanでAPI疎通試験 [試験を実行]
curlとjqが慣れているようであれば、そちらでも可能です。
POSTMANでの準備作業
Incapsula APIへPOSTする際に必要なapi-id、api-key、accont_idを「Manage Environments」に登録しておきます。
「site id」については下で説明しています。
APIを利用したサイトIDの取得
Incapsulaの設定変更をする場合は、保護対象のFQDN毎の設定となります。Incapsula内で「site id」を持っており、保護対象FQDNと「site id」が関連付けされております。 そのため「site id」を取得します。
あとは「Manage Environments」に登録したところは変数にして以下のようにすると取得できます。 ドキュメントを見ると、site idを取得する「List Site」はAPIにて「/api/prov/v1/sites/list」で取得可能です。以下のようになります。
https://my.incapsula.com/api/prov/v1/sites/list?api_key={{api_key}}&api_id={{api_id}}&account_id={{account_id}}
POSTMANで実施すると以下の画面になり、「site_id」が確認できます。
余談ですが、実行したものをPOSTMANでは、別な言語shellやjava、Pythonなどのコードで表記してくれます。私のようにコードが書けない人間にとっては非常に嬉しい機能です。 CURLでの表示結果例は以下になります。
まとめ
POSTMAN便利ですね。APIが使用し設定値を確認できましたので、Incapsula APIからキャッシュ削除を行うところを次回実施してみたいと思います。どなたかのお役に立てれば光栄です。
こむろさんにはPOSTMANの使用方法をレクチャー頂きました。ありがとうございました。