てくなべ (tekunabe)

ansible / network automation / 学習メモ

PaloAlto (PAN-OS) のAPI 経由でカスタムURLカテゴリを追加する

はじめに

PaloAlto (PAN-OS) には API 機能があります。どんな事ができるかはこのあたりのページを確認すると想像できます。

この記事では、API 経由でカスタムURLカテゴリの追加を試してみます。

f:id:akira6592:20200408221548p:plain:w300
画面で言うこれ

  • 動作確認環境
    • PAN-OS 9.1

準備

API KEY の取得

API でアクセスするためには、まず API KEY を取得する必要があります。

curl -k -X GET 'https://[firewall]/api/?type=keygen&user=<username>&password=<password>'

これのレスポスンスにある API KEY を、あとで X-PAN-KEY リクエストヘッダーに仕込みます。

詳細は公式サイトをご参照ください。

docs.paloaltonetworks.com

API の仕様確認

機器本体に API リファレンス機能があります。

カスタムURLカテゴリであれば、以下のURLでリファレンスを確認できます。

https://[firewall]/restapi-doc/#tag/objects-custom-url-categories

追加

example.com という名前のカスタムURLカテゴリを追加してみます。vsys は vsys1 です。

$ curl -k -X POST 'https://[firewall]/restapi/v9.1/Objects/CustomURLCategories?location=vsys&vsys=vsys1&name=example.com' \
-H 'X-PAN-KEY: <準備で取得した API KEY>' \
-H 'Content-Type: application/json' \
-d '{
    "entry": [
        {
            "@name": "example.com",
            "type": "URL List",
            "list": {
                "member": [
                    "http://www.example.com",
                    "http://example.com"
                ]
            }
        }
    ]
}'

確認

追加されたことを確認します。

画面から

f:id:akira6592:20200408221619p:plain
追加された

APIから

せっかくなので API からも確認します。確認は GET メソッドを利用します。(結果は整形しています)

$ curl -k -X GET 'https://[firewall]/restapi/v9.1/Objects/CustomURLCategories?location=vsys&vsys=vsys1' \
> -H 'X-PAN-KEY: <準備で取得した API KEY>'
{
  "@status": "success",
  "@code": "19",
  "result": {
    "@total-count": "1",
    "@count": "1",
    "entry": [
      {
        "@name": "example.com",
        "@location": "vsys",
        "@vsys": "vsys1",
        "type": "URL List",
        "list": {
          "member": [
            "http://www.example.com",
            "http://example.com"
          ]
        }
      }
    ]
  }
}

おわりに

API の仕様確認で紹介した、APIリファレンスを見ればお作法はなんとなく分かりそうでした。

また、一旦画面から手動で追加してからAPI から GET すると、画面のどの項目がどういうキーになるのか分かるので、調査の段階ではこのようなステップを踏むと良いかもしれません。