FortigateのREST APIのリファレンスのまとめ
FortigateでREST APIを実装しようとしているが、参考資料がなく困っている人へ。自分もそうであったため、復習を兼ねて自分でまとめておく。
インターネットで調べても調べても、FortigateのAPIに関する情報がなかったので困ったが、何とかあるサイトからリファレンスにたどり着いた。以下そのサイトのリンクを張っておく。
FortiGateをREST APIで管理する
https://blog.aimless.jp/archives/2017-04-01-manageing-fortigate-by-rest-api/
リファレンスもここにアップロードしておく。二つあるが、後者は私が英語のリファレンスをDeepLに入れてすべて翻訳してもらった日本語版。
FortiOS REST API version5.2.3
TFOS_JSON_REST_API_523.pdf
日本語版
FOS_JSON_REST_API_523 ja.pdf
その他調べる中で参考になったサイトのURLも貼っておく。
技術的なヒント: REST API を使用して FortiGate にアクセスする
https://community.fortinet.com/t5/FortiGate/Technical-Tip-Use-REST-API-Access-FortiGate/ta-p/196540
FortiGateの設計/設定ガイド
https://www.viva-fortigate.com/archives/57586442.html
FortiGateをREST APIを用いて監視しよう (前編)
https://www.secuavail.com/kb/nw-device/fortigate/fortigate-rest-api_firstpart/
APIの使用
https://docs.fortinet.com/document/fortigate/7.2.4/administration-guide/940602/using-apis
話を戻すと、リファレンスがあれば何とか実装は出来そう。とはいえ、PDFの技術書を71ページ読むことは大変だと思う(もちろん、最終的には必要)。まして、英語は読みにくく、DeepLといえども不自然な翻訳や画面上が文字で重なって読みにくい場合もある。
なので、ここに大まかな内容だけまとめておく。
※このリファレンスはFortiOSバージョン5.2.3でサポートされるREST APIの情報になるが、それ以外参考になるドキュメントやデータシート、リファレンスがないのでこれを使用する。また、私が検証したバージョン6以上のFortigateはこのリファレンスの通りに情報が取得できたので、とりあえずは信用できるのではないかと思う。
サポートされているREST API 2つの機能
Fortigateでは2種類のREST APIがサポートされている。
- CMDB API
・検索
・作成
・修正
・オブジェクトの削除
・構成 - Monitor API
・ダイナミック・データをモニターする
・リフレッシュ
・統計リセット
・FGT(Fortigate)の再起動
以上がそれぞれのAPIで出来ること。以下、簡単にまとめると、
cmdbAPIは、FortiOSの設定を行うためのAPI
monitorAPIは、FortiGateから情報を取得するためのAPI
したがって、
cmdb APIはFortiOSデバイスの設定の変更や更新など管理するために使用され、
monitor APIはシステムの監視や健全性のチェックに使用される。
CMDB API
cmdb apiのurlは、「https://192.168.1.99/api/v2/cmdb」
例として以下のURL形式を持つとき、
https://192.168.1.99/api/v2/cmdb/firewall/policy/1
画像の通り以下のように分解できる
https://192.168.1.99/api/v2/cmdb/→URL
firewall→path
policy→name
mkey→1
Monitor API
例として以下のURL形式を持つとき、
https://192.168.1.99/api/v2/cmdb/firewall/local-in
cmdb api と同じように分解できる
https://192.168.1.99/api/v2/monitor/→URL
firewall→path
local-in→name
おまけ
- ほかの参考サイトにあるように、もちろん、restAPI なのでHTTPメソッドを使用している。なので、curl コマンドでもcmd から実行もできる。
- cmdbapiですべてのHTTPメソッドは使えるが、monitorapiではGET,POSTしか使用できないのでそれも確認してほしい。
- 基本的なことしかまとめてないので、またレスポンスコードやコレクション、リソースは自分で確認してほしい。