LoginSignup
10

More than 5 years have passed since last update.

Excelの関数だけでPaloAltoのAPIをたたく

Last updated at Posted at 2016-12-09

■ はじめに

みなさん、ネットワークの構築や運用の自動化はどのようなものをお使いでしょうか。
Ansibleなどのツールを利用したり、NAPALMなどのライブラリでコードを書いて動かしていたりしていらっしゃるかと思います。
でも「この現場だとツールの導入やコード書くこと自体がハードル高くて・・」
という方もいらっしゃるのではないでしょうか。

そこで、ケースは限られてしまいますが、お手元のExcel(2013以上)で、かつ、関数だけを使ってPAN-OS(Paloalto)のAPIを叩く例をご紹介します。マクロ、VBAは使いません。

■ PAN-OS(Paloalto)のAPIと Excelの WEBSERVICE関数

PAN-OS(Paloalto)のAPIはHTTPでリクエストすると、XMLでレスポンスが返ってきます。
一方、Excelには、GETのHTTPリクエストをする WEBSERVICE 関数、
XMLをXPATHでフィルタするFILTERXML関数が2013から導入されています。
これらの組み合わせを利用します。

なお、認証キーの発行方法などの準備は過去に投稿した PAN-OS(Paloalto)のXML APIの叩き方
を参照してください。

WEBSERVICE関数の使い方

書式:WEBSERVICE(URL)

引数にURLを指定すると、GETでコンテンツを取得します。この関数自体はレスポンスはXMLでなくても構いません。

FILTERXML関数の使い方

書式:FILTERXML(XML, XPath)
元データとなるXMLと、フィルタいしたいXPathを指定します。

■ 使用例:Excelによるポリシーチェック

Excelで指定した条件のパケットが、設定してあるポリシーのどれにマッチするか、
またはマッチしないかを確認してみることにします。新しい通信要件が発生したときに「ポリシーの追加する必要あるんだっけ?」を簡単に確認するようなケースを想定しています。
コマンドでいうとtest security-policy-matchです。

関数の組み合わせ方は以下の通りです。

=FILTERXML(WEBSERVICE(リクエスト文字列),"//response/result")

リクエスト文字列の書式は以下の通りです。

https://Paloalto管理IP/api/?type=op&cmd=<test><security-policy-match><source>送信元IPアドレス</source><destination>宛先IPアドレス</destination><protocol>プロトコル番号(TCPなら6)</protocol><destination-port>ポート番号</destination-port></security-policy-match></test>&key=APIキー

※httpsの場合、証明書のエラーがあると正常に結果が取得できません。

リクエスト文字列の例

https://192.168.1.254/api/?type=op&cmd=<test><security-policy-match><source>192.168.0.101</source><destination>2.2.2.2</destination><protocol>6</protocol><destination-port>80</destination-port></security-policy-match></test>&key=xxxdummyxxx

そして、指定した条件にマッチしたルールがあれば以下のような結果が返ってきます。

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 [ appcustom25/tcp/any/443 appcustom25/tcp/any/80 appcustom25/tcp/any/8080 ];
        action allow;
        terminal yes;
}

あとは、Excelのほうで料理してあげれば、こんな使い方ができます。
image.png

■さいごに

  • Excelの関数だけでGETのリクエストができる
  • XMLをXPathでフィルタする関数がある

の2点を抑えておくと、特別な環境がなくてもちょっとした自動化ができるケースもあるのではないでしょうか?

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
10