こんにちは。Catoエンジニアの中山です。
今回はAPIやTerraform等のツールを使い、CatoをCMA(Cato Management Application)を使わずに運用する方法を紹介したいと思います。
普段Catoを運用する際は、Catoの管理UIであるCMAをご利用かと思いますが、運用を続ける中で「一括で設定を変更したい」「設定の変更履歴を管理したい」といった、CMAだけでは少し手が届かない場面に直面することもあるのではないでしょうか。
CMA単体では難しいことでも、実はCato APIや外部ツールを組み合わせることで実現可能な場合があります。「APIを叩く」と聞くと、SASEやネットワーク以外のスキルが必要で難しそうに感じるかもしれません。しかし、AIが普及した現在、AIの力を借りればプログラムからAPIを叩くハードルは格段に下がっています。
プログラミングに馴染みがない方も、運用の効率化を目指してぜひ最後まで見ていってください。
ツールの紹介
まずは、どのようなツールがCato運用に使えるかを紹介します。
Terraform
Terraformは、インフラの構成をコード(HCLという言語)で定義し、作成・管理できる「Infrastructure as Code (IaC)」を代表するツールです。GCPやAWSなどのパブリッククラウド界隈では標準的に使われているツールですが、実はCatoも公式にTerraformプロバイダーを提供しています。
Terraformの大きな特徴は、「状態(State)」を管理できる点にあります。現在のCatoの設定がどうなっているかを「tfstate」というファイルで保持するため、コードを修正して実行するだけで、実際の環境をあるべき姿へと自動で同期してくれます。これにより、設定のバックアップや、複数拠点への同一ポリシーの展開、Gitを使った変更履歴の管理などが非常に容易になります。

Python (API)
APIを叩くことができれば、プログラミング言語は何でもよいのですが、ちょっとしたプログラムだと最近はやはりPythonが主流かと思います。またAPI以外でもCatoに関連してコードを書けると良い場面があるので、Catoを扱う上でもPythonを使えると良いかと思いますl。
APIを叩くことができれば、プログラミング言語は何でもよいのですが、環境構築のしやすさや情報の多さから、やはり最近はPythonが主流です。API連携以外にも、ログの加工やレポートの自動生成など、Catoを扱う上でPythonが書けると重宝する場面は多々あります。
CatoのAPIは、GraphQLという形式を採用しています。 一般的なREST APIとは異なり、GraphQLは「一つのエンドポイントに対して、必要なデータだけを指定して取得・操作する」のが特徴です。Catoの広大な設定項目の中から、自分が今欲しい情報(例えば特定のサイトのステータスだけ、など)をピンポイントで取得できるため、非常に効率的な通信が可能です。
最近では、ChatGPTやなどのAIでCatoのGraphQL APIを使った○○をするコードをPythonで書いてやCatoのAsk AIで△△するAPIのコードを書いてとお願いすると、ベースとなるコードを即座に生成してくれるので、初心者の方でも始めやすくなっています。
MCPサーバー
CMAの右上に「Ask AI」という非常に優秀なAIアシスタントが実装されていますが、あのようなAIの利便性を、自分の好きなAI環境で利用できる仕組みが登場しています。それがMCP(Model Context Protocol)です。
MCPは、AIモデル(LLM)と外部ツールを接続するための共通規格です。Catoが公開している「MCPサーバー」にお使いのAIを接続することで、例えば日頃お使いのClaudeやChatGPTといったAIエージェントに対して、「Catoのサイト一覧をリストアップして」「今の接続状況を調べて」といった指示を出すことができるようになります。
CMAにログインすることなく、チャットインターフェースから対話形式でCatoの状態を把握したり、複数の運用ツールと組み合わせて高度な自動化を実現したりと、次世代の運用スタイルが可能になります。
おすすめの使い方
Catoの運用で使えるツールを3つほど紹介しましたが、今回はAPI含めたPythonのおすすめの使い方を紹介したいと思います。
1.Events APIによる詳細な集計・分析
Catoの「Events」画面では豊富なフィルターが用意されており、特定のログを探すのはCMAからでも簡単です。しかし、「データの集計」という観点では、CMAだけだと少し物足りない場面があります。
例えば、CMAの「Top Distributions」では、特定のイベントの上位(Top 10など)までは確認できますが、それ以下の全容や詳細な推移までは追いきれません。
ここでEvents APIの出番です。APIを使えば、フィルターした生のログデータをお手元に取得できるため、ExcelやBIツールを使って自由自在に集計が可能です。
- 活用例:PoPの切り替え調査 Change PoPのEvnetsを取得し、サイトごとの「Change PoP」イベントを集計することで、「いつ・どの拠点で・どれくらいPoPの切り替えが発生していたか」を可視化することができます。
- 活用例:セキュリティ・コンプライアンス調査 CMAの項目には「TLS」や「Client Class」といった詳細なデータもあります。「TLS 1.2未満の古い通信が社内でどの程度残っているか」をAPIで抽出して集計すれば、セキュリティリスクの早期発見にも繋がります。
2.APIによる複数サイトの一括作成
これは新規導入時などに非常に重宝する手法です。CatoのAPIを使えば、拠点の作成や設定を一括で行うことができます。
拠点の作成自体はCMA上でも直感的に行えますが、例えば10拠点、20拠点とまとめて作成する場合、IPアドレスやサブネットマスクを一つひとつ手入力していくのは、なかなかの苦行ですし、何より「入力ミス(ヒューマンエラー)」の不安がつきまといます。
これをAPIで自動化すれば、あらかじめ以下のような形でExcelで整理しておいた設定リストから値を読み取り、そのままCatoに流し込むことが可能です。
| Site名 | CIDR | LAN IPアドレス | Socket | ・・・ |
| A Branch | 10.0.100.0/24 | 10.0.100.254 | X1500 | ・・・ |
| AWS | 10.10.100.0/24 | 10.10.100.4 | vSocket | ・・・ |
Excelで構成案を管理しつつ、それがそのまま設定に反映される。この正確性とスピード感は、API運用ならではのメリットです。
3.Excelからモバイルユーザのプロビジョニング
最後は、直近のアップデートで可能になった「SCIM連携」の仕様変更を活かしたテクニックです。以前から要望の多かった「複数ユーザーをまとめてプロビジョニングしたい」というニーズを、Pythonを使って実現します。
近年のCatoのアップデートにより、以下のことが可能になりました。
- SCIM Custom APIによって、特定のIdP(Azure ADやOktaなど)に限らず、独自の仕組みからSCIM連携が可能になった
- SCIMで連携されたユーザーを、CMA上から直接削除できるようになった
つまり、「SCIMの規格に則ったユーザー情報」をPythonプログラムから送ってあげれば、どんな環境からでもユーザー作成ができるようになったということです。
今回はブログの執筆にあたり、実際に「ExcelのユーザーリストからPythonでSCIM連携を行いユーザーを作成する」検証を行いました。
【検証の流れ】
- 仕様の確認: Cato公式のSCIM API仕様を確認します。
- AIの活用: ここでAIの出番です。上記ページの仕様をAIに読み込ませて、「この仕様に則って、Excelからユーザー情報を取得し、SCIM連携するPythonプログラムを書いて」と私は依頼しました。
- 実行: SCIM連携に必要な「Base URL」と「Token」をセットして実行。
結果、↓の画像の通りExcelの情報を元に驚くほどスムーズにユーザーを作成することができました。AIに依頼するだけでこれを実現することができたので、IdPとの連携が難しい環境や、一時的な大量ユーザー作成が必要な場面で非常に強力な武器になるのかなと思ってます!!
#検証後にCatoのAPIを改めて確認したところ、嬉しいことに”SCIM連携なし”でCato APIからモバイルユーザを作成することができるようになってました。。
随時追加はCato APIで、Excelでユーザを管理したいとかであれば上記の方法を使い分けていただければと思います。
まとめ
今回はCMA以外からCatoを操作する方法について、紹介させていただきました。
CMAは非常に使いやすいUIですが、APIやTerraform、そしてAIを使いこなすことで、定型作業の自動化やヒューマンエラーの削減など、運用の質をさらに高めることができます。
APIなどの話を聞くとITに詳しい人しか触れないんじゃないか?と思われがちですが、昨今のAIを活用することでプログラムに詳しくない人でも触れるような時代になったようです。私も恩恵を受けている人のひとりです。
このブログを読み終えた方が、「APIでログを取得してみる」などの小さな一歩を踏み出していただけていると幸いです。

