FortigateのAPIドキュメントはなぜか非公開であるため、
基本的には自分でAPIの内容を検証していく必要があります。
今回はその調査法の1つである、GUI操作とRestAPIを紐づける方法を書いていきます。
GUI上の操作
GUIとバックエンドのやり取りはRestAPIを使用して行われています。
つまりAPIリクエストから取得した情報がGUI上に反映され、
追加・削除などフロント(GUI上)で行われた変更はAPIリクエストによりバックエンド送られます。
デベロッパーツール
APIの通信の情報はブラウザのデベロッパーツール(Ctrl + Shift + i)で確認することが出来ます。
Fortigateへログイン後、デベロッパーツールを立ち上げてNetworkタブを開いてみます。
左上の赤丸のボタンを押すことでパケットのキャプチャーを行えます。
usageやusb-logといった項目がありますが、これらが実際に行われたAPIリクエストになります。
APIリクエストの中身
Headers, Response などのタブがあり、これらからリクエストの内容を確認出来ます。
usageリクエストについては画像から以下のことが分かります。
・リクエストURL: https://192.168.0.1/api/v2/monitor/system/resource/usage
・リクエストメソッド:GET
・ステータスコード:200(成功)
Preview, Responseタブからレスポンスのデータを確認できます。
ちなみにusageリクエストではCPUやメモリなどのリソース関連の情報を取得しています。
ログイン後のステータスダッシュボードでは常にリソース情報が更新されているのですが、
そのたびにusageリスエストで情報を取得および更新しています。
使用例
例として管理者の作成(POST)、修正(PUT)、削除(DELETE)を行ってみます。
管理者の追加
GUI上でtestという名前の管理者を追加してみます。
追加ということでGETではなくPOSTリクエストになりました。
また、GETリクエストには無かったPayloadタブが出てきました。
ここで追加する情報をJSON形式で記載します。
管理者の変更
GUI上で管理者の名前をtestからnew_testへ変更します。
今度はメソッドがPUTになりました。
またリクエストURLに/testが追加され、testユーザーに対し修正を行うように定めています。
POSTと同じように修正する内容はPayloadタブに記載されています。
管理者の削除
GUI上で管理者new_testを削除します。
メソッドがDELETEになり、PUTと同じようにURLに削除対象new_testが定義されています。
DELETEにはPayloadないため、タブは表示されていません。
まとめ
いかがでしょうか?
FortigateのGUI操作とRestAPIの紐づけるにはデベロッパーツールが便利です。
ぜひ本記事をAPIを使用した自動化ツール開発などに役立てて頂ければ幸いです。