
みなさまこんにちは!SB C&SでFortinet製品のプリセールスを担当している草野です。
近年、ネットワーク機器の運用は「GUIで手動設定する」スタイルから、「APIを活用して自動化・外部から制御する」スタイルへと大きくシフトしています。
FortiGateも例外ではなく、REST APIを利用することで、設定の取得・作成・変更・削除といった操作を外部から実行できます。
これらの操作は、自動化スクリプトや外部システムとの連携でも活用できます。
本記事では、APIの基本的な概念を整理したうえで、FortiGateのREST APIを実際に操作しながら、基本的な利用方法について解説します。
免責

APIとは?
では、そもそも API(Application Programming Interface)とは何でしょうか?
APIとは、ソフトウェアや機器の機能を外部から利用するための「窓口」です。
GUIを操作する代わりに、HTTPリクエストを通じて設定情報を取得したり、ポリシーを追加したりすることができます。
つまりAPIは、人がGUIで行っている操作を、プログラムから実行できる仕組みです。
なお、REST APIとは、HTTPの仕組み(GET・POST・PUT・DELETEなど)を利用してデータをやり取りするAPIのことです。
URLで「操作対象(リソース)」を表し、HTTPメソッドで「何をするか」を表現するのが特徴です。
FortiGateのAPIもこのREST形式で提供されています。
CRUDとは?
APIを理解するうえで重要な概念が「CRUD」です。
CRUDとは、データ操作の基本となる4つの操作の頭文字を取ったものです。
APIでは、これらの操作をHTTPメソッドと組み合わせて実行しており、FortiGateのREST APIもこの設計思想に基づいています。
では、実際にFortiGateをAPIで操作する手順を紹介します。
FortiGateでAPI管理アカウントを作成する
FortiGateのAPIを利用するには、まずAPIアクセス用のユーザ(およびトークン)を作成する必要があります。
まずシステム > 管理者 > 新規作成 > REST API管理者から管理アカウントを作成します。通常のアカウント作成と同様にユーザ名、管理者プロファイルを指定します。
アカウントを作成すると、APIトークンが生成されます。生成されたトークンは作成時にのみ表示されるため、必ず控えておきましょう。
APIリクエストを送信する際は、このトークンをHTTPヘッダに含めて認証を行います。
実際にCRUD操作をしてみる
それでは実際にFortiGateをAPIで操作してみましょう。
今回は操作にPostmanを使用します。Postmanは、APIリクエストをGUIで送信できるツールです。
コマンドを使わずにAPIの動作を確認できるため、学習や検証に適しています。
まずはじめにトークンの設定を行います。
AuthorizationヘッダにBearer TokenとしてFortiGateから取得したトークンを埋め込みます。
GETリクエスト
それでは、GETリクエストを実行してみます。
プルダウンからGETを選択し、ファイアウォールアドレスの一覧を取得するURLを指定します。
リクエスト実行後、レスポンスとしてアドレスの一覧情報が出力されます。
REST APIでは、一般的にレスポンスはJSONフォーマットに準拠した形式で出力されます。
JSONは項目(キー)と値(バリュー)の組み合わせで表現されるため、可読性の高い構造になっています。
{
"key1" : "value1",
"key2" : "value2",
"key3" : "value3"
}
POSTリクエスト
次にファイアウォールアドレスを作成してみます。新規作成する場合はPOSTメソッドを利用します。
以下は「192.168.2.1/32」というアドレスオブジェクトを生成する例となります。リクエストボディにJSON形式で設定情報を入力しています。
結果として、以下のレスポンスが返されました。HTTPステータスコードが200であることから、リクエストが正常に処理されたことが確認できます。
PUTリクエスト
次にデータ更新となります。データ更新にはPUTメソッドを利用します。
以下の例ではアドレスグループ「192.168.2.0/24」に、先ほど作成したアドレスオブジェクト「192.168.2.1/32」をメンバーとして登録する例となります。
※グループ名に / が入っているため、%2Fにエンコードしています。 
実行の結果が以下となります。リクエストが成功したことが確認できます。
念のため、GETリクエストにて対象アドレスグループの情報を取得してみます。
以下のとおり、メンバーとして「192.168.2.1/32」が登録されたことを確認できました。
DELETEリクエスト
最後にデータを削除するリクエストを実行してみます。削除するにはDELETEメソッドを使用します。
先ほど更新したアドレスグループ「192.168.2.0/24」を削除する例が以下となります。結果として、処理が成功していることも確認できます。
その他APIの利用方法について
これまで紹介してきたAPIでは、URLパスに「cmdb」を指定する方法を解説しました。「cmdb」を指定した場合、FortiGateの設定情報に対する取得や変更といった操作が可能です。
設定以外の情報を取得する場合は、別のパスを指定します。例えば、現在の稼働ステータスを確認するには「monitor」を使用します。以下は、FortiGateのwan1インタフェースの状態を取得する例です。
また、ログ情報を取得する場合は、URLパスに「log」を指定します。以下の例では、AntiVirusによる検知ログを取得しています。
最後に
REST APIを活用することで、FortiGateの設定変更や状態確認、ログ取得といった操作を効率的に自動化することが可能になります。
日々の運用負荷軽減や作業の標準化にもつながりますので、ぜひ実際の環境で活用してみてください。
なお、FortiGateのAPI利用は開発を伴う内容となるため、実装および検証は利用者の責任において実施いただく必要があります。
本記事は情報提供を目的としており、API仕様の詳細や開発者向け技術情報については、「Fortinet Developer Network」などの開発者向けプログラムをご活用ください。
最後までお読みいただき、ありがとうございました!
※本ブログの内容は投稿時点での情報となります。今後アップデートが重なるにつれ
正確性、最新性、完全性は保証できませんのでご了承ください。
他のおすすめ記事はこちら
著者紹介
SB C&S株式会社
技術本部 技術統括部 第3技術部 2課
草野 孝

