Browser AccessでインラインDLP環境をMacbookとZPAで構成する
本記事では、インラインDLP環境のテストをZPAを使用してプライベートに構築する手順を説明します。外部Webサーバを利用せずに、ローカルのPythonアプリケーションを用いたフォーム上でファイルアップロード環境を簡易的に構築します。また、ZPAのBrowser Access機能を活用し、DLPポリシーを経由させる仕組みを作成します。さらに、App ConnectorにはDockerを活用してネットワーク接続性の確認も行います。
この環境を1台で構成するためにMacOSX(Macbook)を利用しました。
ゼットスケーラーの水本です。プロフェッショナルサービスのコンサルタントをしています
Zscaler Advent Calendar 2025の22日目の記事へようこそ。今回の記事では、Zscalerが提供するさまざまなカスタム機能を活用し、どのようにしてセキュリティを深化させ、業務効率を高めるかについて解説します。
Professional Service チームではコンサルタントを募集しています。興味のある方は水本宛までDMお待ちしてます
最終的には、通知メールやWorkflow Automation経由でインシデント履歴を確認し、Web Insightログを含めた結果をまとめます。MacBook1台で、標準的なツールと設定のみでも完結可能な構成となりました。
Browser AccessでインラインDLP環境をMacbookとZPAで構成する
App Connector(MacOSX)を使用して環境を構成し、インシデントをWorkflow Automationで確認する手順について説明します。
1. App Connector(MacOSX)で構成
ZPAのProvision Keyを取得し、App ConnectorをDockerで起動します。
2. App Connector(Docker内)から外部への接続性チェック
Docker環境内のApp Connectorから外部インターネットへの接続性を確認するコマンド:
[root@007ea26bb516 etc]# curl ifconfig.me
59.132.98.15
上記の例では、ifconfig.meへの接続が成功し、ローカル接続時の外部IPアドレス 59.132.98.15が返されてます。
3. Browser Access用のローカルWebサーバ起動
MacBook内にFlaskを活用したPythonアプリケーションのWebサーバを起動します:
% python app.py
* Serving Flask app 'app'
* Debug mode: on
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on http://127.0.0.1:5000
Press CTRL+C to quit
* Restarting with watchdog (fsevents)
* Debugger is active!
* Debugger PIN: 141-089-177
127.0.0.1 - - [22/Dec/2025 12:30:51] "GET / HTTP/1.1" 200 -
上記サーバは、ローカルIP http://127.0.0.1:5000を通じて動作します。Flaskのアプリケーションでは、デバッグ情報も出力されます。
4. App Connector(Docker内)からローカルサーバへの接続性チェック
App Connector(Docker)から、ローカルサーバへの接続を確認します:
[root@007ea26bb516 etc]# curl http://host.docker.internal:5000/
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>File Upload with Preview</title>
</head>
<body>
<h1>Upload File and Preview</h1>
<form id="uploadForm">
<label for="file">Choose a file (Excel, ZIP, Word, or Text):</label><br><br>
<input type="file" id="file" name="file" required><br><br>
<button type="submit">Upload</button>
</form>
(省略)
</body>
- 正しく接続されていれば、上記のようなHTMLコードが返ってきます。
5. Appセグメントの作成
ZPA管理コンソールで、次の設定を行います:
6. ZPAからBrowser AccessのFQDN確認
ZPA環境で、設定したFQDNを確認します。ここでは、host.docker.internalが期待するFQDNです。
7. ZCCクライアントからFQDNへの接続の確認
ZCCクライアントを利用し、以下のURLにアクセスします:
https://<App Segmentに設定したFQDN>/
- 接続確認を行い、期待通りに動作するかチェックします。
- 認証フォームにユーザ名、パスワードを入力してBrowser Accessのログイン認証を行います。
8. DLPルールの検証
認証後、以下の手順でインラインDLPのルール検証を行います:
-
DLPルールに合致するテスト用のファイル(例: EDMテスト用ファイル)を用意します。Workflow Automation用のIncident Receiverをマッチした場合の出力先として設定します。

-
用意したファイルを、
https://<App Segmentに設定したFQDN>/にあるアップロードフォームを使用してアップロードします。 -
ZIA管理コンソールで、Workflow Automationを通じてインシデント内容がログとして確認できることを確かめます。

これらの手順を通じて、Browser Accessで構成されたインラインDLP環境の動作チェックが完了します。上記はコンセプト的にしか示していませんので、何か問題が発生した場合は、Experience Centerや各管理画面と各ステップでの接続性や設定を再確認してください。
まとめ
本構成では、インラインDLPのテスト環境が構築可能であることを確認しました。ブラウザアクセスの構築にはCNAMEが不要である点もシンプル化の助けとなりました。
DLPの通知メールでは、アップロードされたファイルがポリシーに違反した旨を確認できます。

Workflow Automationでは、管理者向けのインシデント一覧が表示され、詳細を簡単に追跡することが可能です。
さらに、Web Insightログにより、アップロード動作を含むユーザーアクティビティの詳細を確認しました。

構成上、Dockerの活用とローカルPythonサーバでのフォーム設定により柔軟なテスト項目のカスタマイズも可能です。



