paloaltoのconfigを見ていて

paloaltoというFWアプライアンス装置のconfigを見ていた。

paloaltoはブラウザで設定を表示、変更できるのだが、

configをエクスポートするとxml形式になる。

実機があれば、というか実機にアクセスできる権限があればブラウザで直接見ればよいのだが、わけあって実機にアクセスできないためxml形式のconfigファイルを見る必要があったのだ。

この手の装置のconfigをテキストでもらってテキストなりexcelなりで開くのはよくあることなのだが、paloaltoの場合少し苦労した。

xmlファイルというのは、htmlファイルと同じような感じで、<>で囲まれたタグに挟まれてデータが記述されている。

タグは何があるかわからず、階層化されている場合もある。

excelでxmlファイルを開くと一応解析のようなことをしてそれらしき表形式にしてくれるのだが、paloaltoのコンフィグファイルはまともな形にならなかった。

なので、xmlではなく単なるテキストファイルとして読み込んでみた。

<tag>data1</tag> 

のような形式でconfigの設定内容が並んでいる。

ポリシーの部分は以下のようになっている。


<rulebase>

 <security>

 (セキュリティルール)

 </security>

 <nat>

 (NATルール)

 </nat>

</rulebase>


そしてセキュリティルールとNATルールが数百行書かれているわけだが、

その各ルールを見ていくと、設定されている項目とされていない項目がある。

excelでうまく読み込めないので、自分で項目をそろえていった。

例えば<tag>, <to>, <from>, <source>, など。


特に困ったのがNATルールである。

paloaltoはセキュリティルールとNATルールが別になっている。

NATには送信元NAT、宛先NAT、static変換、inteface NATなど様々な方法が組み合わされるので、xmlファイルの項目のバラツキが大きい。

大体いくつかのパターンにはなるのだが、数百行あり順番も意味を持つため慎重に見ていかねばならない。

最初は同じタグの項目がexcelの同じ列になるようにそろえていったのだが、想定外のことが一つあった。

paloaltoのconfigファイルの項目は、一定の順序になっていないのだ。


例えば、

<tag><src><dst><to><from><source-translation><destination-translation>

などの項目があるのだが、送信元のみNATするなら<destination-transloation>はない。

<tag>というのは注釈のようなものだからある行とない行がある。


最初は項目がないところはずらしていけば揃えられると思っていたのだが、

行によって<source-translation>と<destination-translation>の順番が逆だったりする。


fortigateのconfigを見たこともあるのだが、fortigateはxml形式ではないが<>で項目が区切られており、設定により項目があったりなかったりはするのだがその出現順番は同じであった。

だが、paloaltoは一定でないのだ。


本当はpythonなどで読み込んでタグごとの項目をいったん変数に格納して決まった順番で並びなおして出力する、などをしたかったのだが、すべきなのだろうが、結構複雑になりそうなのでそれはしなかった。

そして地道にexcelでセルを移動して項目をそろえていった。


しばらくやっているうちに、気づいた。

そもそもxmlファイルというのはexcelのような表形式を想定しておらず、その項目がなんであるかはタグによって決定されるのであり、また、タグによらずに決定してはならないのである。


それは、今私がしているようにExcelの表形式にするには不便な仕様なのであるが、データを作成し記述することを考えた時に、項目の順番を意識せずに正しいタグさえつければ順番はどうでもかまわない、読み込むときにタグを指定すれば<src><dst><from><to>であっても<to><src><from><dst>であってもかまわないのだ。


私は若いころは固定長フィールドのファイルを使っていて、データの扱いに関する意識が古いところがある。最近はもう固定長フィールドなんかほとんど使わない。

しかし、ドキュメントはだいたいExcelで作られる。ほとんどがExcelである。

パソコンでExcelを使うことが「デジタル化」であるとか「IT」であるとかいうのは間違っている。

Excelの表形式のファイルを皆で共有して更新しあっているなんていうのは、紙に印刷したものにハンコを押すようなやり方とあまり変わらない。