Zscaler
概要
Zscalerは、クラウドネイティブなセキュリティプラットフォームで、ゼロトラストアーキテクチャに基づいたセキュアなインターネットアクセスとアプリケーションアクセスを提供します。従来のVPNやファイアウォールに代わる次世代のセキュリティソリューションとして広く採用されています。
主要なサービス
Zscaler Internet Access (ZIA)
企業のインターネットトラフィックをクラウド経由で保護するサービスです。
主な機能:
- Secure Web Gateway (SWG): URLフィルタリング、アンチマルウェア、データ漏洩防止
- Firewall as a Service: クラウドベースのファイアウォール機能
- Sandbox: 未知の脅威を隔離環境で分析
- SSL/TLS検査: 暗号化されたトラフィックの検査
- DLP (Data Loss Prevention): 機密データの外部流出を防止
Zscaler Private Access (ZPA)
企業内アプリケーションへのゼロトラストアクセスを提供するサービスです。
主な機能:
- アプリケーションセグメンテーション: アプリケーション単位でアクセス制御
- VPNレス接続: ネットワーク全体を公開せず、必要なアプリケーションのみにアクセス
- ユーザー・デバイス認証: コンテキストベースのアクセス制御
- マイクロセグメンテーション: ラテラルムーブメントの防止
Zscaler Digital Experience (ZDX)
エンドユーザーのデジタル体験を監視・最適化するサービスです。
主な機能:
- パフォーマンスモニタリング
- トラブルシューティング
- ユーザー体験の可視化
ゼロトラストアーキテクチャ
Zscalerはゼロトラストセキュリティモデルを採用しており、以下の原則に基づいています:
- Never Trust, Always Verify: すべてのアクセスを検証
- Least Privilege Access: 必要最小限のアクセス権限のみを付与
- Micro-Segmentation: アプリケーション単位での分離
- Continuous Monitoring: 継続的な監視と分析
アーキテクチャの特徴
クラウドネイティブ
- グローバルに分散されたデータセンター
- 自動スケーリング
- 高可用性と冗長性
プロキシベースのアーキテクチャ
ユーザー → Zscalerクラウド → インターネット/アプリケーション
(検査・ポリシー適用)
エージェントベースの展開
- Zscaler Client Connector: デバイスにインストールするクライアント
- Cloud Connector: オンプレミスネットワークとの接続
- App Connector: プライベートアプリケーションへのアクセス提供
導入のメリット
セキュリティの向上
- すべてのトラフィックを検査
- ゼロデイ攻撃からの保護
- データ漏洩防止
コスト削減
- ハードウェアアプライアンスが不要
- 運用管理の簡素化
- 帯域幅の最適化
ユーザー体験の向上
- 低レイテンシ
- 場所に依存しない接続
- シームレスなアクセス
リモートワークの支援
- VPNレスアクセス
- どこからでも安全な接続
- デバイス種類に依存しない
実装例
ZIAポリシー設定の例
# URLフィルタリングポリシー
url_filtering_policy:
name: "Block Malicious Sites"
action: "BLOCK"
categories:
- "Malware"
- "Phishing"
- "Command and Control"
users: "All Users"
ZPAアクセスポリシーの例
# アプリケーションセグメント
app_segment:
name: "Internal CRM"
domain_names:
- "crm.internal.company.com"
tcp_ports:
- "443"
health_check_type: "DEFAULT"
# アクセスポリシー
access_policy:
name: "CRM Access Policy"
action: "ALLOW"
conditions:
- user_group: "Sales Team"
- device_posture: "Compliant"
- location: "Any"
セキュリティのベストプラクティス
1. ポリシー設計
- 最小権限の原則: 必要最小限のアクセス権限を付与
- グループベースの管理: ユーザーグループ単位でポリシーを管理
- 段階的な展開: 小規模グループから始めて徐々に拡大
2. SSL/TLS検査
- 重要なトラフィックは必ず検査
- 医療・金融など規制対象のトラフィックは除外を検討
- 証明書の適切な管理
3. ログとモニタリング
- セキュリティイベントの定期的なレビュー
- SIEMとの統合
- アラート設定の最適化
4. ユーザートレーニング
- ポリシー変更時の事前通知
- セキュリティ意識の向上
- サポート体制の整備
他のソリューションとの比較
| 機能 | Zscaler | 従来のVPN | ファイアウォール |
|---|---|---|---|
| ゼロトラスト | ✓ | ✗ | ✗ |
| クラウドネイティブ | ✓ | ✗ | △ |
| SSL検査 | ✓ | △ | △ |
| グローバルスケール | ✓ | ✗ | ✗ |
| ユーザー体験 | 優 | 中 | 中 |
| 導入コスト | 低 | 中 | 高 |
統合と連携
Zscalerは多くのセキュリティツールやプラットフォームと統合可能です:
- IDプロバイダー: Azure AD, Okta, Ping Identity
- SIEM: Splunk, Microsoft Sentinel, QRadar
- EDR/XDR: CrowdStrike, Microsoft Defender
- CASB: Microsoft Cloud App Security
- クラウドプロバイダー: AWS, Azure, GCP
開発者体験を損なわないためのベストプラクティス
Zscalerの導入は開発者のワークフローに影響を与える可能性があります。以下のベストプラクティスにより、セキュリティと開発者体験の両立を実現できます。
1. SSL/TLS検査の除外設定
開発ツールやサービスでSSL/TLS検査が問題を引き起こす場合があります。以下のドメインを検査対象から除外することを検討してください。
開発ツール関連
# SSL検査除外リスト(例)
ssl_inspection_bypass:
# パッケージマネージャー
- "*.npmjs.org"
- "*.pypi.org"
- "*.nuget.org"
- "*.maven.org"
- "registry.npmjs.org"
- "registry.yarnpkg.com"
# コンテナレジストリ
- "*.docker.io"
- "*.docker.com"
- "gcr.io"
- "*.azurecr.io"
- "*.amazonaws.com"
# Git関連
- "*.github.com"
- "api.github.com"
- "raw.githubusercontent.com"
- "*.gitlab.com"
- "*.bitbucket.org"
# クラウドプロバイダーAPI
- "*.azure.com"
- "*.microsoft.com"
- "*.aws.amazon.com"
- "*.googleapis.com"
# 開発者向けサービス
- "*.stackoverflow.com"
- "*.visualstudio.com"
- "*.vscode-cdn.net"
- "marketplace.visualstudio.com"
2. PAC(Proxy Auto-Config)ファイルの活用
開発環境では、特定のトラフィックをZscaler経由せずに直接接続できるよう設定します。
// PAC ファイルの例
function FindProxyForURL(url, host) {
// ローカル開発環境は直接接続
if (isPlainHostName(host) ||
shExpMatch(host, "*.local") ||
isInNet(host, "127.0.0.0", "255.0.0.0") ||
isInNet(host, "10.0.0.0", "255.0.0.0") ||
isInNet(host, "172.16.0.0", "255.240.0.0") ||
isInNet(host, "192.168.0.0", "255.255.0.0")) {
return "DIRECT";
}
// 開発ツールのドメインは直接接続
if (shExpMatch(host, "localhost") ||
shExpMatch(host, "*.docker.internal") ||
shExpMatch(host, "*.azurewebsites.net") ||
shExpMatch(host, "*.azurestaticapps.net")) {
return "DIRECT";
}
// その他はZscaler経由
return "PROXY zscaler-proxy.company.com:80";
}
3. 証明書の管理
Zscalerの中間CA証明書を開発環境に適切にインストールします。
Windows環境
# Zscaler証明書のインストール
certutil -addstore -enterprise -f "Root" ZscalerRootCA.crt
# Node.js環境変数の設定
[System.Environment]::SetEnvironmentVariable("NODE_EXTRA_CA_CERTS", "C:\Certificates\ZscalerRootCA.crt", "User")
macOS/Linux環境
# システムの証明書ストアに追加
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ZscalerRootCA.crt
# Node.js環境変数の設定
export NODE_EXTRA_CA_CERTS=/path/to/ZscalerRootCA.crt
echo 'export NODE_EXTRA_CA_CERTS=/path/to/ZscalerRootCA.crt' >> ~/.bashrc
Python環境
# pip設定
pip config set global.cert /path/to/ZscalerRootCA.crt
# requests ライブラリ
export REQUESTS_CA_BUNDLE=/path/to/ZscalerRootCA.crt
4. ローカル開発環境の構成
Docker Desktop設定
// Docker Desktop の daemon.json
{
"registry-mirrors": [],
"insecure-registries": ["localhost:5000"],
"debug": false,
"experimental": false,
"proxies": {
"http-proxy": "http://zscaler-proxy:80",
"https-proxy": "http://zscaler-proxy:80",
"no-proxy": "localhost,127.0.0.1,.local,.internal"
}
}
VS Code設定
// settings.json
{
"http.proxy": "http://zscaler-proxy:80",
"http.proxyStrictSSL": false,
"http.proxySupport": "on",
"http.noProxy": [
"localhost",
"127.0.0.1",
"*.local",
"*.internal"
]
}
5. CI/CDパイプラインの考慮事項
GitHub Actions
# .github/workflows/build.yml
name: Build
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
# Zscaler証明書のインストール
- name: Setup Zscaler CA
run: |
echo "${{ secrets.ZSCALER_CA_CERT }}" | base64 -d > /usr/local/share/ca-certificates/zscaler.crt
sudo update-ca-certificates
export NODE_EXTRA_CA_CERTS=/usr/local/share/ca-certificates/zscaler.crt
- name: Install dependencies
run: npm ci
Azure DevOps
# azure-pipelines.yml
steps:
- task: Bash@3
displayName: 'Setup Zscaler Certificate'
inputs:
targetType: 'inline'
script: |
echo "$(ZSCALER_CA_CERT)" | base64 -d > zscaler.crt
export NODE_EXTRA_CA_CERTS=$(pwd)/zscaler.crt
echo "##vso[task.setvariable variable=NODE_EXTRA_CA_CERTS]$(pwd)/zscaler.crt"
- task: Npm@1
displayName: 'npm install'
inputs:
command: 'install'
6. トラブルシューティングガイド
よくある問題と解決策
| 問題 | 原因 | 解決策 |
|---|---|---|
| npm install が失敗する | SSL検査によるSSL証明書エラー | NODE_EXTRA_CA_CERTSを設定、またはnpm config set strict-ssl false(非推奨) |
| Docker pull が遅い | Zscaler経由でイメージをダウンロード | Docker Hubドメインを検査対象から除外 |
| Git clone が失敗する | SSL証明書の検証エラー | Git設定で証明書パスを指定: git config --global http.sslCAInfo /path/to/cert.crt |
| API開発時の接続エラー | ローカルAPIサーバーがプロキシ経由 | localhostをno-proxyリストに追加 |
| Kubernetes接続エラー | kubectl がプロキシを経由 | NO_PROXY環境変数を設定 |
デバッグコマンド
# プロキシ設定の確認
echo $HTTP_PROXY
echo $HTTPS_PROXY
echo $NO_PROXY
# 証明書チェーンの確認
openssl s_client -connect registry.npmjs.org:443 -showcerts
# Node.jsでの証明書確認
node -e "console.log(require('https').globalAgent.options)"
# Curlでの接続テスト
curl -v --proxy http://zscaler-proxy:80 https://api.github.com
7. 開発者向けドキュメントの整備
組織内で以下のドキュメントを準備し、開発者がスムーズにZscaler環境で作業できるようにします:
- セットアップガイド: 証明書インストール手順
- トラブルシューティングFAQ: よくある問題と解決策
- 除外リスト: SSL検査対象外のドメイン一覧
- サポート連絡先: 問題発生時の問い合わせ先
8. パフォーマンス最適化
# Zscalerクライアント設定の最適化
client_connector_config:
# ローカルキャッシュの有効化
enable_cache: true
cache_size_mb: 500
# スプリットトンネリング
split_tunnel:
enabled: true
exclude_domains:
- "*.local"
- "*.internal.company.com"
- "localhost"
# 帯域幅制御
bandwidth_control:
limit_mbps: 0 # 無制限
priority: "high" # 開発者トラフィックを優先
9. セキュリティと生産性のバランス
推奨アプローチ:
- 段階的な展開: 開発者グループから始め、フィードバックを収集
- 柔軟なポリシー: 開発環境用の専用ポリシーを作成
- 定期的なレビュー: 除外リストやポリシーを四半期ごとに見直し
- 開発者の声を聞く: フィードバックチャネルを設置
- 継続的な改善: パフォーマンスメトリクスをモニタリング
まとめ
Zscalerは、現代のゼロトラストセキュリティアーキテクチャを実現するための包括的なクラウドセキュリティプラットフォームです。リモートワークの普及やクラウド移行の加速に伴い、従来の境界防御型セキュリティモデルからの脱却を支援し、より安全で効率的なネットワークアクセスを提供します。