Why not login to Qiita and try out its useful features?

We'll deliver articles that match you.

You can read useful information later.

4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ZscalerAdvent Calendar 2024

Day 1

Zscaler Internet Access の Internal API(仮称)を触ってみる(紹介編)

Last updated at Posted at 2024-11-30

1. はじめに

みなさん、こんにちわ。ゼットスケーラーの大谷です。カスタマーサクセスマネージャを担当しています。

この記事はZscaler Advent Calendar 2024向けの記事です。

この記事では Zscaler Intenet Access(ZIA)の Intenal API(仮称)について書いています。

2. Zscaler の公開 API について

Zscaler Internet Access(以下 ZIA)を始めとして、Zscaler では各サービスにおいて公開 API を提供しています。

Zscaler の主なサービスの API

3. Internal API(仮称)とは?

Internal API(仮称)とは簡単にいうとブラウザによる ZIA Admin Portal へのアクセスの動きをプログラムで擬似的に操作することができるインターフェースです。

これがなぜ可能かを説明するために、ブラウザでの ZIA Admin Portal へのアクセスとレスポンスがどのようになっているか見てみましょう。

例としてテナントに関する基本的な情報を提供するCompany Profileにアクセスしてみます。

Company Profile へのアクセス URL は https://admin.cloud name.net/zsapi/v1/orgInformationです。

image.png

そのレスポンスを見てみましょう。ZIA Admin Portal へのアクセスが一定の形式(JSON)で返ってきていることがわかります。

image.png

この仕組みを利用して、プログラムから Admin Portal へ擬似的にアクセスして、そのレスポンスを受け取ってからまた別の処理に、というような自動化が可能です。ブラウザでアクセスするよりも軽量に、かつ公開 API ではサポートされていない機能についても操作することが可能です。

5. 注意

  • Zscaler では一部の社内向けのツールでこの機能を利用していますが、社外向けには公式にサポートしていません。
  • 実際に「Internal API」という名称も存在しません。この場で便宜的に付けた仮称です。
  • APIリファレンスも存在しませんので、どのように動くのかという情報はありません。現状の動くままに利用する必要があります。
  • 将来的に突然利用できなくなることがあります。
  • 大量にアクセスしようとすると Zscaler のセキュリティ対策によってアクセスが制限されることがあります。

4. 実際にやってみる

実際にやってみましょう。先ほどの Company Profile を Python で取得します。まずはログイン認証が必要なのですが、ここでは省略します。次回以降で説明します。

import requests
import time
import json

# リクエストで送信するヘッダー(ブラウザでのアクセスと同じものを適当に設定)
headers = {
    'Accept': '*/*',
    'Accept-Language': 'ja',
    'Cache-Control': 'no-cache',
    'Connection': 'keep-alive',
    'Content-Type': 'application/json;charset=UTF-8',
    'Origin': 'https://admin.zscalerthree.net',
    'Pragma': 'no-cache',
    'Referer': 'https://admin.zscalerthree.net/',
    'Sec-Fetch-Dest': 'empty',
    'Sec-Fetch-Mode': 'cors',
    'Sec-Fetch-Site': 'same-origin',
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36',
    'sec-ch-ua': '"Chromium";v="128", "Not;A=Brand";v="24", "Google Chrome";v="128"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"macOS"'
}

このあとに Admin Portal へのログイン認証が必要なのですがここでは省略します。)

# Company Profile の URL
company_profile_url = "https://admin.zscalerthree.net/zsapi/v1/orgInformation"

# Company Profile にアクセス
company_profile_response = requests.get(company_profile_url, headers=headers, cookies=cookies)

# レスポンスを出力
print(company_profile_response.text)

スクリプトを実行するとブラウザでアクセスしてきたものと同じものが表示されます。

5. 最後に

次回は(時間があれば)もう少し詳しく書きたいと思います。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?