■ はじめに
Paloalto Networks社のFWは、HTTP(S)経由のAPIに対応しています。
レスポンスはXMLで返ってきます。簡単な例でAPIを叩いてみます。
■ 準備
リクエストには毎回認証用のパラメータであるkeyを付加する必要があります。
そのkeyを発行するために、まず以下のリクエストを出してレスポンスを確認します。
GETで投げられるので履歴に残らないようにご注意下さい。(後述しますがPOSTも可能です)
https://PA管理IPアドレス/api/?type=keygen&user=管理者ユーザ名&password=パスワード
そうすると、XML形式のレスポンスが返ってきて、そこにkeyが含まれているので、
この値を控えておきます。パスワードを変更しない限りkeyも変更されません。
(以下例のkeyは適当です)
<response status=“success”>
<result>
<key>93rfgdAGAa%fagwFGFADgfAgfadeDDYNa27Ab%aKLpPga=</key>
</result>
</response>
■ APIを叩いてみる例
それでは実際に簡単な例として、ポリシー一覧を取得してみます。
クエリは以下の形式です。
https://PA管理IPアドレス/api/?type=op&cmd=<show><running><security-policy></security-policy></running></show>&key=発行したkey
結果例です。
<response cmd="status" status="success">
<result>
rule1 {
from trust;
source [ 192.168.0.101 192.168.0.102 192.168.0.103 ];
source-region none;
to untrust;
destination any;
destination-region none;
user any;
category any;
application/service any/any/any/any;
action allow;
terminal yes;
}
rule2 {
from trust;
source any;
source-region none;
to untrust;
destination any;
destination-region none;
user any;
category any;
application/service any/any/any/any;
action deny;
terminal no;
}
dynamic url: no
pol objs matched
</result>
</response>
■ 便利なAPIブラウザ
「他にAPIでどんなことできるかな?どう叩けばよいかな?」というときは
機器に入っているAPIブラウザが便利です。以下のURLで確認できます。
https://{PA管理IPアドレス}/php/rest/browse.php
ここから、たとえばルーティングテーブルを確認したい場合は
「API > 操作コマンド > show > routing > route」
と辿って行くと、
https://{PA管理IPアドレス}/api/?type=op&cmd=<show><routing><route></route></routing></show>
実際にはkeyも付加してあげて試してみると、こんな感じになります。
<response status="success">
<result>
<flags>
flags: A:active, ?:loose, C:connect, H:host, S:static, ~:internal, R:rip, O:ospf, B:bgp, Oi:ospf intra-area, Oo:ospf inter-area, O1:ospf ext-type-1, O2:ospf ext-type-2
</flags>
<entry>
<virtual-router>default</virtual-router>
<destination>0.0.0.0/0</destination>
<nexthop>192.168.0.1</nexthop>
<metric>10</metric>
<flags>A S</flags>
<age/>
<interface>ethernet1/4</interface>
</entry>
<entry>
<virtual-router>default</virtual-router>
<destination>192.168.0.0/24</destination>
<nexthop>192.168.0.10</nexthop>
<metric>0</metric>
<flags>A C</flags>
<age/>
<interface>ethernet1/4</interface>
</entry>
<entry>
<virtual-router>default</virtual-router>
<destination>192.168.0.10/32</destination>
<nexthop>0.0.0.0</nexthop>
<metric>0</metric>
<flags>A H</flags>
<age/>
<interface/>
</entry>
</result>
</response>
■ 補足
今回は簡便さを優先してGETにしていますが、POSTも可能です。
また、情報の取得だけでなく、設定等も可能です。
■ 参考資料
[PAN‐OS REST API による レポート情報の取得]
(https://live.paloaltonetworks.com/twzvq79624/attachments/twzvq79624/Management-TKB/860/1/PANOS-API-Report.pdf])
→日本語の資料。準備のkeyの発行やレポート情報の取得方法が書かれています。
APIリファレンス(ここではver6.1)
→情報の取得だけでなく設定する例も書かれていて、広く浅くの資料です。要チェックです。
アイディア次第でいろいろできそうではないでしょうか。
以上です。