■ はじめに
みなさん、ネットワークの構築や運用の自動化はどのようなものをお使いでしょうか。
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のほうで料理してあげれば、こんな使い方ができます。
■さいごに
- Excelの関数だけでGETのリクエストができる
- XMLをXPathでフィルタする関数がある
の2点を抑えておくと、特別な環境がなくてもちょっとした自動化ができるケースもあるのではないでしょうか?