LoginSignup
12
6

More than 5 years have passed since last update.

■ はじめに

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

こんな画面になります。
Image2.png

ここから、たとえばルーティングテーブルを確認したい場合は
「API > 操作コマンド > show > routing > route」
と辿って行くと、

https://{PA管理IPアドレス}/api/?type=op&cmd=<show><routing><route></route></routing></show>

というクエリを叩けばいいことが分かります。
Image3.png

実際には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 による レポート情報の取得
→日本語の資料。準備のkeyの発行やレポート情報の取得方法が書かれています。

APIリファレンス(ここではver6.1)
→情報の取得だけでなく設定する例も書かれていて、広く浅くの資料です。要チェックです。

アイディア次第でいろいろできそうではないでしょうか。
以上です。

12
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
6