はじめに
Fortigateを使うことがありました。
そこでAPIを用いて自動でプログラムを作る必要があったのですが非常に大変だったので今回はその時に使ったfortigate-apiの使い方の備忘録です。
Fortigateで苦労する人を減らしたいw
ので少しでも参考になればと思います。
fortigate-api
fortigate-apiとは
fortigate-api
は、Fortinet社のFortiGate製品(ファイアウォール、セキュリティデバイスなど)をPythonプログラムから操作するためのAPIライブラリです。
このライブラリを使用すると、FortiGateデバイスの設定や状態を迅速かつプログラム的に管理することができます。基本はCLIと思いますが、自動化させる場合はAPIを使うのが有効です。
fortigate-apiのインストール
まず、fortigate-api
をPython環境にインストールします。
以下のコマンドでインストールできます。
pip install fortigate-api
サンプルプログラム
fortigate-api
は多くの事が出来ます。
すべてを書くのは土台無理なので今回は基本で汎用性が高い3つに絞って紹介します
get()
まずはget()を使ったサンプルプログラムです
このサンプルでは、FortiGateデバイスに接続し、基本的な情報を取得します。
from fortigate_api import FortiGate
# FortiGateデバイスに接続
fgt = FortiGate(ip="192.168.1.1", vdom="root", username="admin", password="password")
# 基本的な情報を取得
system_status = fgt.get("system/status")
# 出力
print(system_status)
上記のコードはサンプルなので、実際のFortiGateデバイスに適用する前に適切なIPアドレス、vdom(Virtual Domain)、ユーザー名、パスワードを適宜変更してください。
post()
post()メソッドを利用した例です。
put()は新しいアドレスオブジェクトをFortiGateデバイスに追加します。
from fortigate_api import FortiGate
# FortiGateデバイスに接続
fgt = FortiGate(ip="192.168.1.1", vdom="root", username="admin", password="password")
# 新しいアドレスオブジェクトを追加
payload = {
"name": "New_Address",
"subnet": "192.168.100.1 255.255.255.0",
"type": "ipmask",
}
response = fgt.post("firewall/address", json=payload)
# 出力
print(response)
上記のコードもサンプルなので、実際のFortiGateデバイスに適用する前に適切なIPアドレス、vdom(Virtual Domain)、ユーザー名、パスワードを適宜変更してください。
put()
put()メソッドの使用例です
put()は既存のアドレスオブジェクトを更新します。
from fortigate_api import FortiGate
# FortiGateデバイスに接続
fgt = FortiGate(ip="192.168.1.1", vdom="root", username="admin", password="password")
# アドレスオブジェクトを更新
payload = {
"subnet": "192.168.101.1 255.255.255.0",
}
response = fgt.put("firewall/address/New_Address", json=payload)
# 出力
print(response)
fortigate-apiのTips
エラーハンドリング
API呼び出しで何か問題が発生した場合、エラーハンドリングを適切に行いましょう。
try:
system_status = fgt.get("system/status")
except Exception as e:
print(f"Error occurred: {e}")
疎通確認
FortiGateデバイスとの疎通を確認するためには、.ping()
メソッドが利用できます。
if fgt.ping():
print("Successfully connected.")
else:
print("Connection failed.")
ログ出力
デバッグのためにfortigate_api
のログ出力を活用することができます。
バージョン確認
使用するFortiGateデバイスとfortigate-api
ライブラリのバージョンが互換性があるか確認してください。
セキュリティ
APIキー、ユーザー名、パスワードなどのセキュリティに関わる情報は、環境変数や秘密管理サービスを使用して安全に管理してください。
その他詳細については公式ドキュメントやGitHubリポジトリを参照してください。
さいごに
今回はFortigateにfortigate-apiを使った簡単な方法についてでした。
Fortigateは情報が少ないので情報を探すのになかなか苦労します。
簡単なサンプルプログラムではありますが参考にしていただければと思います。
この記事がお役に立ったのなら嬉しいです。
最後までお読みいただきありがとうございます。