Claude Desktop で Zscaler の MCP サーバーを試す
はじめに
先日、Zscaler 社が、Claude Desktop と Zscaler との統合を試験的に発表しました。この統合では、Claude Desktop に Zscaler の MCP サーバーを追加することで、ユーザーが自然言語を利用して Zscaler のリソースを操作することが可能になります。今回はこの機能を試してみたいと思います。
Model Context Protocol(MCP)とは
Model Context Protocol(MCP)とは、Anthropic 社が発表した、LLM を外部データソースおよびツールと接続するための新しい標準規格です。Anthoropic のページでは MCP について以下の通り説明されています。MCP については、Anthropic 社の発表後から各所で話題になっているので、耳にする機会も多いかと思います。
MCPは、アプリケーションがLLMにコンテキストを提供する方法を標準化するオープンプロトコルです。MCPはAIアプリケーション用のUSB-Cポートのようなものと考えてください。USB-Cがデバイスをさまざまな周辺機器やアクセサリーに接続するための標準化された方法を提供するように、MCPはAIモデルを異なるデータソースやツールに接続するための標準化された方法を提供します。
MCPの概念や技術的な詳細については、以下のZenn記事が参考になると思います。
必要になるもの
- Python 3.8 以上
- Claude Desktop アプリケーション
- Claude Pro プラン
- freeプランでも一部機能しますが、リソースの制限があるため、
今回の構成ではClaudeのProプランを利用しています。
- freeプランでも一部機能しますが、リソースの制限があるため、
- APIアクセスが可能なZscaler Internet Access(ZIA)アカウント
- 必要なPythonパッケージ
- zscaler-sdk-python
- fastmcp
- GithubにあるZIAツールのPythonファイル
構成
今回の構成においては、次の流れで処理が行われます。
- ユーザーはMCPホスト(Claude Desktop)にZscalerに関するプロンプトを投げます
- MCPクライアントはZscaler関連のクエリを認識し、MCPサーバーに渡します
- MCPサーバーは、Zscaler SDKを利用してZscaler APIと通信します
- Zscaler APIはリクエストを処理し、結果をMCPサーバーに返します
- MCPサーバーは応答をフォーマットし、MCPクライアントにレスポンスを送します
- MCPクライアントはユーザーに結果を表示します
連携設定
- Claude for Desktopをインストールします。
https://claude.ai/download - 必要なPythonパッケージをインストールします。
pip install zscaler-sdk-python
pip install fastmcp
-
ツール用のディレクトリを任意の場所に作成します。
(例:~/Claude/tools/zia_api_tool/) -
Githubから以下のファイルを先ほど作成したディレクトリにコピーします。
- zscaler_server.py
- zscaler_sdk.py
- example_usage.py
- 次のディレクトリに
claude_desktop_config.json
を作成します。
- macOS:~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"zscaler-zia-tool": {
"command": "C:\\Path\\To\\Python\\python.exe",
"args": ["C:\\Path\\To\\zscaler_server.py"],
"working_directory": "C:\\Path\\To\\Directory\\"
}
}
}
-
claude_desktop_config.json
のパスは環境に合わせて変更します。 -
設定ファイルを追加したら、Claude Desktopを再起動します。
-
Claude Desktopを起動した状態で
Ctrl + ,
のショートカットを実行すると利用可能なツールの一覧が表示されるので、zscaler-zia-tool
が追加されていることを確認します。
動作確認
新規チャットから次のプロンプトを試してみます。LLMはClaude Sonnet 4を利用しました。
Zscaler ZIAツールを使用して、どのようなリソースの操作が可能ですか?
プロンプト実行時にツールの利用許可を求められるので、許可します。
次の通り、このツールで利用可能な操作が回答されました。
回答の全文は長いので展開して確認してください。
回答
利用可能なリソース
- 管理者ユーザー(admin_users)
管理者ユーザーの一覧表示、取得、追加、更新、削除
例:「全ての管理者ユーザーをリスト表示」「特定の管理者ユーザーを取得」
- URLカテゴリ(url_categories)
コンテンツフィルタリング用のURLカテゴリの管理
例:「全てのURLカテゴリをリスト表示」「カスタムカテゴリの作成」
- ロケーション(locations)
物理的または論理的なロケーションの管理
例:「全てのロケーションをリスト表示」「新しいロケーションの作成」
- ファイアウォールフィルタリングルール(firewall_filtering_rules)
ファイアウォールルールの管理
例:「全てのファイアウォールルールをリスト表示」「新しいルールの作成」
- URLフィルタリングルール(url_filtering_rules)
URLフィルタリングルールの管理
例:「全てのURLフィルタリングルールをリスト表示」「ルールの更新」
利用可能な操作
各リソースに対して以下の操作が可能です:
LIST: 全ての項目を一覧表示
GET: 特定のIDの項目を取得
ADD: 新しい項目を追加
UPDATE: 既存の項目を更新
DELETE: 項目を削除
認証要件
ユーザー名(username)
パスワード(password)
APIキー(api_key)
クラウド(cloud)- オプション、デフォルトは「zscloud」
使用方法
自然言語でクエリを入力することで、適切なAPIメソッドが自動的に選択されます。例えば:
「全ての管理者ユーザーを表示して」
「新しいURLカテゴリを作成して」
「特定のファイアウォールルールを更新して」
必要に応じて、ページネーション機能も利用できます(page_size、pageパラメータ)。
何か具体的な操作を実行したい場合は、認証情報と合わせて具体的なリクエストをお知らせください。
続いて、管理者ユーザーをリストアップしてみます。ここでは次の認証情報の提供が必要です。
- ZIAのユーザー名
- ZIAユーザーのパスワード
- APIの認証に利用するCloud Service API Key
- ZIAクラウド名
ZIAクラウド名はデフォルトでzscloud
が利用されます。zscloud
以外のZIAクラウド名が利用されている場合は、明示的に指定が必要です(私の環境ではzscalerthree
を指定しています)。
zscaler-zia-toolを使用して、すべてのZIA管理者をリストアップしてください。
認証情報:
username: 12345678@example.com
password: 12345678
api_key: 12345678abcde
cloud: zscalerthree
回答
Zscaler ZIA 管理者ユーザー一覧
概要
- 総ユーザー数: 37名
- Super Admin: 32名
- ZIA_read-only: 3名
- RoleTest: 1名
- その他: 1名
詳細リスト
Super Admin(管理者権限)
ID | ログイン名 | ユーザー名 | メールアドレス | パスワードログイン |
---|---|---|---|---|
ID-*** | login-*** | User-*** | @.*** | 無効 |
ID-*** | login-*** | User-*** | @.*** | 無効 |
ID-*** | login-*** | User-*** | @.*** | 無効 |
ID-*** | login-*** | User-*** | @.*** | 無効 |
ID-*** | login-*** | User-*** | @.*** | 無効 |
ID-*** | login-*** | User-*** | @.*** | 無効 |
ID-*** | login-*** | User-*** | @.*** | 無効 |
ID-*** | login-*** | User-*** | @.*** | 有効 |
ID-*** | login-*** | User-*** | @.*** | 無効 |
ID-*** | login-*** | User-*** | @.*** | 無効 |
ID-*** | login-*** | User-*** | @.*** | 無効 |
ID-*** | login-*** | User-*** | @.*** | 有効 |
ID-*** | login-*** | User-*** | @.*** | 無効 |
ID-*** | login-*** | User-*** | @.*** | 無効 |
ID-*** | login-*** | User-*** | @.*** | 有効 |
ID-*** | login-*** | User-*** | @.*** | 無効 |
ID-*** | login-*** | User-*** | @.*** | 無効 |
ID-*** | login-*** | User-*** | @.*** | 無効 |
ID-*** | login-*** | User-*** | @.*** | 無効 |
ID-*** | login-*** | User-*** | @.*** | 無効 |
ID-*** | login-*** | User-*** | @.*** | 無効 |
ID-*** | login-*** | User-*** | @.*** | 無効 |
ID-*** | login-*** | User-*** | @.*** | 無効 |
ID-*** | login-*** | User-*** | @.*** | 無効 |
ID-*** | login-*** | User-*** | @.*** | 無効 |
ID-*** | login-*** | User-*** | @.*** | 無効 |
ID-*** | login-*** | User-*** | @.*** | 無効 |
読み取り専用ユーザー(ZIA_read-only)
ID | ログイン名 | ユーザー名 | メールアドレス |
---|---|---|---|
ID-*** | login-*** | User-*** | @.*** |
ID-*** | login-*** | User-*** | @.*** |
ID-*** | login-*** | User-*** | @.*** |
その他のロール
ID | ログイン名 | ユーザー名 | ロール |
---|---|---|---|
ID-*** | login-*** | User-*** | RoleTest-*** |
注意事項
- パスワードログイン有効: わずか3名のユーザーのみがパスワードログインを許可されています
- 無効化ユーザー: 現在、無効化されているユーザーはいません
- 管理スコープ: 全ユーザーが組織レベルのスコープを持っています
- 2要素認証: Executive Mobile Appは全ユーザーで無効になっています
セキュリティ推奨事項
- パスワードログインが有効なユーザーの定期的な見直し
- 不要なSuper Admin権限の見直し
- 読み取り専用ユーザーの適切な権限分離
- 定期的なアクセス権監査の実施
Zscaler Admin Portal上で確認すると、総ユーザー数は31名で、うち、Super Adminは27名、読み取り専用ユーザーは3名、その他のカスタムロールのユーザーは1名となっていたので、Claudeが回答したユーザーリストは全量を網羅しているようです。ただし、回答の「概要」欄に記載されている「総ユーザー数」と「Super Admin」の集計値は実際のユーザー数とは異なっていました。何度か同様の操作を試したところ、そのたびに集計値が異なる結果となりました。Claudeに限らずLLMでは単純な数のカウントが誤っているケースがあるので、この点は注意する必要がありそうです。
概要
- 総ユーザー数: 37名 #(実際は31名)
- Super Admin: 32名 #(実際は27名)
今回利用しているZscaler環境では、閲覧のみを許可したいユーザーにZIA_read-only
のロールを付与しています。今度は、このZIA_read-only
ロールを持つ読み取り専用ユーザーのみを抽出したいと思います。
ZIA管理者のうち、ZIA_read-onlyの権限を持つユーザーをリストアップしてください。
回答
ZIA_read-only権限ユーザー一覧
概要
ZIA管理者のうち、ZIA_read-only権限を持つユーザーは 3名 です。
詳細リスト
ID | ログイン名 | ユーザー名 | メールアドレス | 状態 | パスワードログイン |
---|---|---|---|---|---|
********* | ***@. | ****** | @* | アクティブ | 無効 |
********* | ***@. | ****** | @* | アクティブ | 無効 |
********* | ***@. | ****** | @* | アクティブ | 無効 |
ロール詳細情報
ZIA_read-only権限の特徴
- ロールID: 11111
- 管理ランク: 7
- ロールタイプ: ORG_ADMIN
- 管理スコープ: ORGANIZATION(組織レベル)
権限制限
- 読み取り専用: データの参照のみ可能
- 設定変更: 不可
- ユーザー管理: 不可
- ポリシー編集: 不可
セキュリティ設定
- パスワードログイン: 全員無効(SSO/SAMLによる認証)
- アカウント状態: 全員アクティブ
- 2要素認証: Executive Mobile App無効
- 監査者権限: なし
用途・目的
この権限レベルは以下の用途に適しています:
- レポート閲覧専用ユーザー
- 監査・コンプライアンス担当者
- 分析専用アカウント
- 外部ベンダーや一時的なアクセス権が必要なユーザー
Zscaler Admin Portal上で確認しても3名になっていたので、適切に抽出が出来ているようです。
続いて、ZIA管理者に関するセキュリティの懸念と推奨事項も聞いてみます。
ZIA管理者に関するセキュリティ上の推奨事項は何ですか?
回答
ZIA管理者セキュリティ推奨事項
🚨 緊急対応が必要な事項
1. 過剰なSuper Admin権限の見直し
現状: 37名中32名(86%)がSuper Admin権限
リスク: 権限の過剰付与、内部脅威のリスク増大
推奨対応:
- 各ユーザーの実際の業務内容を精査
- 必要最小限の権限に変更(最小権限の原則)
- Super Admin権限は2-3名の主要管理者のみに制限
2. パスワード認証の管理強化
現状: 3名のユーザーがパスワードログイン有効
- User A
- User B
- User C
推奨対応:
- パスワードログインが本当に必要か再評価
- 可能であればSSO/SAML認証に移行
- パスワードログイン継続する場合は強力なパスワードポリシーを適用
🔒 基本的なセキュリティ対策
3. 多要素認証(MFA)の強制実装
現状: Executive Mobile App(MFA)が全ユーザーで無効
推奨対応:
- 全管理者アカウントでMFAを有効化
- 特にSuper Admin権限保持者は必須
- 認証アプリまたはハードウェアトークンの使用
4. ロールベースアクセス制御(RBAC)の最適化
現在のロール構成:
- Super Admin: 32名(過多)
- ZIA_read-only: 3名
- カスタムロール: 1名
推奨ロール設計:
- Super Admin: 2-3名(最高権限管理者)
- Security Admin: 5-7名(セキュリティポリシー管理)
- Network Admin: 3-5名(ネットワーク設定管理)
- Report Viewer: 10-15名(レポート閲覧のみ)
- Read-Only: 残りのユーザー
📊 継続的な監視と管理
5. アクセス権の定期監査
実施頻度: 四半期ごと
監査項目:
- 各ユーザーの最終ログイン日時確認
- 業務内容と権限レベルの整合性確認
- 退職者・異動者のアカウント削除確認
- 不要なアカウントの特定
6. ログ監視とアラート設定
監視対象:
- 管理者ログイン(成功/失敗)
- 権限変更操作
- 重要設定の変更
- 異常なアクセスパターン
7. アカウントライフサイクル管理
新規アカウント作成時:
- 業務承認プロセスの確立
- 最小権限での初期設定
- オンボーディング教育の実施
アカウント削除時:
- 退職・異動時の即座な無効化
- アクセス権の完全な削除確認
🛡️ 高度なセキュリティ対策
8. ゼロトラストアーキテクチャの実装
- 管理者アクセスの継続的な検証
- デバイス認証の実装
- ネットワークセグメンテーション
9. 特権アクセス管理(PAM)の導入
- Just-In-Time(JIT)アクセス
- 一時的な権限昇格
- セッション録画と監視
10. セキュリティ意識向上
定期的な教育プログラム:
- フィッシング対策訓練
- セキュリティベストプラクティス研修
- インシデント対応手順の確認
📋 即座に実行可能なアクション
優先度:高(1週間以内)
- Super Admin権限保持者の業務内容確認
- パスワードログイン有効ユーザーの必要性確認
- 長期間未使用アカウントの特定
優先度:中(1ヶ月以内)
- 適切なロール階層の設計と実装
- MFA有効化計画の策定
- 監査ログ設定の確認と強化
優先度:低(3ヶ月以内)
- 包括的なセキュリティポリシー文書化
- インシデント対応計画の策定
- 外部セキュリティ監査の実施
📈 KPI(重要業績評価指標)
セキュリティ成熟度の測定指標:
- Super Admin権限保持者数:目標 ≤ 5名
- MFA有効化率:目標 100%
- パスワード認証使用率:目標 ≤ 5%
- 四半期アクセス権監査実施率:目標 100%
- セキュリティインシデント件数:目標 0件/月
⚠️ 重要な注意事項
- 変更時のバックアップ: 権限変更前に現在の設定をバックアップ
- 段階的な実装: 一度に大きな変更を行わず、段階的に実施
- 緊急時アクセス: 緊急時用の高権限アカウントを別途確保
- 文書化: 全ての変更を記録し、承認プロセスを経る
- テスト環境: 可能であれば本番環境前にテスト環境で検証
(ここでもユーザー数の集計値は誤っていますが)実際の設定値を踏まえたセキュリティの推奨事項の提案を受けることができました。
まとめ
Claude DesktopのMCPサーバを利用してZscalerのリソースを自然言語で取得することができました。今回は、リソースの取得のみを試しましたが、今後は、リソースの作成・削除などの操作や、より複雑なクエリを実行できるか調査を進めていきたいと思います。