Caption: Hero — App Connector VM in customer DMZ bridging to internal app segments; admin defines policy in cloud portal abstract. Setup flow technical illustration, 16:9.
TL;DR: Ini panduan praktis setup Zscaler Private Access (ZPA) di environment kantor: App Connector, App Segments, Access Policy, lalu Browser Access. Hasil akhirnya: karyawan hanya bisa buka aplikasi yang diizinkan, tanpa VPN ke seluruh jaringan. Belum kenal konsepnya? Baca dulu penjelasan ZPA.

> Ekspektasi: Ini bukan setup lima menit. Rencanakan beberapa jam sampai hari pertama, tergantung kerapian identitas dan jumlah aplikasi. Kamu butuh akses admin console dan koordinasi tim jaringan. Untuk fondasi Zero Trust, lihat juga artikel Zero Trust vs VPN.

> Keamanan policy: Mulai dari akses paling sempit ke aplikasi spesifik. Longgarkan belakangan kalau perlu, jangan sebaliknya. Siapkan VPN paralel sebagai cadangan sampai ZPA terbukti stabil; jangan cabut VPN lama sekaligus.


Checklist prerequisites ZPA - empat ikon berurutan: tenant/license, IdP (Azure/Okta), VM App Connector, pilot user group

Persiapan: Yang Perlu Kamu Siapkan

Sebelum mulai setup ZPA, pastikan kamu sudah punya:

Akun & Lisensi

RequirementDetail
Zscaler tenantZPA license aktif (hubungi KIN untuk trial)
Admin accessRole admin di ZPA Admin Portal
IdP integrationAzure AD, Okta, atau IdP lain sudah dikonfigurasi
SSL certificateUntuk Browser Access (optional)

Infrastruktur

App Connector butuh VM di network internal kamu. Spesifikasi tipikal:

  • OS: CentOS 7+, RHEL 7+, Ubuntu 18.04+, atau Amazon Linux 2
  • CPU: 4 vCPU minimum (8 recommended)
  • RAM: 4 GB minimum (8 GB recommended)
  • Disk: 128 GB
  • Network: 1 Gbps NIC
  • Internet: outbound HTTPS (port 443) ke Zscaler cloud
  • DNS: bisa resolve domain internal dan eksternal
  • Firewall: outbound 443 saja; tidak perlu buka inbound port

Checklist Pre-Setup

  • [ ] IdP sudah terintegrasi dan user groups tersinkronisasi
  • [ ] VM untuk App Connector sudah provisioned
  • [ ] Daftar aplikasi internal yang akan di-publish via ZPA
  • [ ] IP/FQDN dan port setiap aplikasi sudah diidentifikasi
  • [ ] DNS internal accessible dari App Connector VM
  • [ ] Firewall rules: allow outbound 443 dari App Connector ke internet

Step 1: Deploy App Connector

App Connector jalan di network internal kamu. Tugasnya bikin tunnel outbound ke Zscaler cloud, jadi firewall tidak perlu buka inbound port.

1.1 Buat App Connector Group

Kenapa group dulu? Supaya beberapa connector bisa di-failover dalam satu lokasi. Login ke ZPA Admin Portal, lalu buka Infrastructure → App Connector Groups → Add App Connector Group.

Isi setting penting:

  • Name: “DC-Jakarta-Group”
  • Description: “App Connectors di Data Center Jakarta”
  • Location: “Jakarta, Indonesia”
  • Latitude: -6.2088
  • Longitude: 106.8456
  • Upgrade Day: “Sunday”
  • Upgrade Time Window: “02:00 – 04:00”
  • Override Version Profile: No
  • DNS Servers: Use connector’s DNS (default)
Tip: Selalu deploy minimal 2 App Connector per group untuk high availability. Jika satu connector down, traffic otomatis failover ke connector lainnya.

1.2 Generate Provisioning Key

Di portal: Infrastructure → Provisioning Keys → Add Provisioning Key.

  • Name: “DC-Jakarta-Key-2026”
  • App Connector Group: “DC-Jakarta-Group”
  • Max Usage: 10 (jumlah connector yang bisa pakai key ini)
  • Expiry: 365 days

Simpan provisioning key. Kamu butuh string ini saat install App Connector di VM.

1.3 Install App Connector di Linux VM

# Step 1: Download installer
# Login ke ZPA Admin Portal → Infrastructure → App Connectors
# Download installer sesuai OS

# Step 2: Transfer installer ke VM
scp zpa-connector-installer.sh admin@10.0.1.100:~/

# Step 3: SSH ke VM
ssh admin@10.0.1.100

# Step 4: Jalankan installer
sudo bash zpa-connector-installer.sh

# Step 5: Masukkan provisioning key saat diminta
# Provisioning Key: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

# Step 6: Verify connector status
sudo systemctl status zpa-connector

Output yang diharapkan:

● zpa-connector.service - Zscaler Private Access Connector
   Loaded: loaded (/etc/systemd/system/zpa-connector.service; enabled)
   Active: active (running) since Mon 2026-06-23 10:00:00 WIB
   Main PID: 12345 (zpa-connector)
   CGroup: /system.slice/zpa-connector.service
           └─12345 /opt/zscaler/bin/zpa-connector

1.4 Deploy Connector Kedua (HA)

Ulangi langkah 1.3 di VM kedua untuk high availability:

# VM kedua dengan IP berbeda
ssh admin@10.0.1.101
sudo bash zpa-connector-installer.sh
# Gunakan provisioning key yang SAMA

1.5 Verifikasi di Admin Portal

Di portal, pastikan dua connector masuk group yang sama dan statusnya Healthy (bukan Pending):

Kalau salah satu masih Pending, cek dulu konektivitas outbound:

# Check outbound connectivity
curl -v https://connector.zscaler.net:443

# Check DNS resolution
nslookup connector.zscaler.net

# Check logs
tail -f /var/log/zscaler/zpa-connector.log

# Common issues:
# 1. Firewall blocking outbound 443
# 2. DNS tidak bisa resolve zscaler.net
# 3. Provisioning key expired atau sudah max usage
# 4. Proxy di network yang interfere

App Segments concept - satu user group terhubung ke tiga kotak app (ERP, Git, RDP) masing-masing dengan FQDN/port chip;

Step 2: Definisikan App Segments

App Segment = representasi aplikasi internal yang kamu publish lewat ZPA. Di sini kamu tentukan domain/IP, port, dan protocol.

2.1 Buat Server Group

Server Group mengikat App Connector Group ke aplikasi. Buat dulu sebelum App Segment lewat Infrastructure → Server Groups → Add Server Group:

  • Name: “SG-DC-Jakarta”
  • Description: “Server group untuk apps di DC Jakarta”
  • App Connector Group: “DC-Jakarta-Group”
  • Dynamic Discovery: Enabled
  • Servers: (diisi saat buat App Segment)

2.2 Contoh App Segment: Internal Web App

Path UI: Applications → App Segments → Add App Segment.

Dasar:

  • Name: “ERP Web Portal”
  • Description: “SAP Fiori web interface”
  • Domain/URL: erp.company.internal
  • TCP Ports: 443
  • Server Group: “SG-DC-Jakarta”
  • Health Reporting: Continuous

Lanjutan (opsional):

  • ICMP Access Type: None
  • Bypass Type: Never
  • Double Encryption: Disabled
  • IP Anchored: No
  • Inspect Traffic: Yes (kalau mau integrasi inspeksi lewat ZIA)

2.3 Contoh App Segment: SSH

Path UI sama: Applications → App Segments → Add App Segment.

  • Name: “Linux Servers SSH”
  • Domain/URL: *.servers.company.internal
  • TCP Ports: 22
  • Server Group: “SG-DC-Jakarta”
  • Health Reporting: On Access

2.4 Contoh App Segment: Database

  • Name: “PostgreSQL Database”
  • Domain/URL: db-primary.company.internal
  • TCP Ports: 5432
  • Server Group: “SG-DC-Jakarta”
  • Health Reporting: Continuous

2.5 Contoh App Segment: Wildcard Domain

Untuk semua subdomain sekaligus (praktis, tapi kurang granular untuk policy):

  • Name: “All Internal Web Apps”
  • Domain/URL: *.company.internal
  • TCP Ports: 80, 443
  • Server Group: “SG-DC-Jakarta”
  • Health Reporting: Continuous

Untuk app kritis, lebih aman buat satu App Segment per aplikasi, bukan mengandalkan wildcard saja.

Tabel Ringkasan App Segments

App SegmentDomain/IPPortProtocolPriority
ERP Web Portalerp.company.internal443TCPHigh
Linux Servers SSH*.servers.company.internal22TCPMedium
PostgreSQL DBdb-primary.company.internal5432TCPHigh
File Sharefileserver.company.internal445TCPMedium
Intranet Portalintranet.company.internal443TCPLow
Jenkins CI/CDjenkins.company.internal8080TCPMedium

Step 3: Konfigurasi Access Policy

Access Policy menentukan siapa boleh akses apa, dengan kondisi apa. Ini inti Zero Trust: default deny, explicit allow.

3.1 Pahami struktur policy

Contoh urutan rule (dari atas ke bawah):

  1. Finance → ERP saja (device compliant) → ALLOW
  2. IT Admin → akses lebih luas (MFA) → ALLOW
  3. Semua karyawan → Intranet → ALLOW
  4. Default: semua lain → DENY

3.2 Buat Access Policy Rules

Rule: Finance Team → ERP

Kenapa rule ini di atas? Karena paling spesifik. Di portal isi:

  • Rule Name: “Finance – ERP Access”
  • Rule Order: 1
  • Action: Allow
  • Criteria – Identity:

– User Groups: “Finance Team” (dari IdP) – SAML Attributes: department=finance

  • Criteria – Application:

– App Segments: “ERP Web Portal”

  • Criteria – Conditions:

– Device Posture Profile: “Corporate Device – Compliant” – Device Trust Level: High – Country: Indonesia (geo-restriction)

  • Advanced:

– Re-authentication Interval: 12 hours

Rule: DevOps Team → CI/CD & Servers

  • Rule Name: “DevOps – Infrastructure Access”
  • Rule Order: 2
  • Action: Allow
  • Criteria – Identity:

– User Groups: “DevOps Team”

  • Criteria – Application:

– App Segments: “Linux Servers SSH” – App Segments: “Jenkins CI/CD” – App Segments: “PostgreSQL Database”

  • Criteria – Conditions:

– Device Posture Profile: “Corporate Device – Compliant” – Client Connector Version: >= 4.0

  • Advanced:

– Re-authentication Interval: 8 hours

Rule: All Employees → Intranet

  • Rule Name: “All Staff – Intranet Access”
  • Rule Order: 10
  • Action: Allow
  • Criteria – Identity:

– User Groups: “All Employees”

  • Criteria – Application:

– App Segments: “Intranet Portal”

  • Criteria – Conditions:

– (none; boleh dari device apa saja)

3.3 Device Posture Profile

Agar policy bisa cek kondisi device, buat profile di Policies → Device Posture → Add Posture Profile. Contoh nama: Corporate Device - Compliant.

  • OS: Windows 10+, macOS 12+
  • Disk Encryption: Required (BitLocker/FileVault)
  • Firewall: Enabled
  • Antivirus: Running (SentinelOne recommended)
  • Domain Joined: Yes (optional)
  • Client Certificate: Present
  • Minimum Client Connector Version: 4.0

> Catatan: Device posture bisa digabung dengan SentinelOne. KIN bisa bantu integrasinya supaya ZPA hanya mengizinkan device yang endpoint-nya sudah jelas sehat.


Step 4: Setup Browser Access

Browser Access memungkinkan user mengakses internal web apps langsung dari browser tanpa perlu install Zscaler Client Connector. Cocok untuk:

  • BYOD / unmanaged devices
  • Third-party contractors
  • Temporary access needs

4.1 Enable Browser Access di App Segment

Edit App Segment ERP lewat Applications → App Segments → Edit “ERP Web Portal”, lalu:

  • Enable Browser Access: Yes
  • External URL: https://erp-portal.company.com (URL yang dibuka user dari internet)
  • Certificate: upload SSL untuk erp-portal.company.com
  • Trust Untrusted Certificate: No

4.2 DNS Configuration

Buat DNS record yang mengarahkan external URL ke Zscaler:

# DNS Record yang perlu dibuat
# ───────────────────────────────────
# Type: CNAME
# Name: erp-portal.company.com
# Value: <tenant-id>.zpa-app.net
# TTL: 300

# Verifikasi DNS resolution
nslookup erp-portal.company.com
# Expected: resolve ke *.zpa-app.net

# Atau menggunakan dig
dig erp-portal.company.com CNAME

4.3 SSL Certificate

# Option 1: Gunakan certificate dari public CA
# Upload .crt dan .key file di ZPA Admin Portal

# Option 2: Gunakan Let's Encrypt (free)
sudo certbot certonly \
  --manual \
  --preferred-challenges dns \
  -d erp-portal.company.com

# Upload certificate files:
# - Certificate: /etc/letsencrypt/live/erp-portal.company.com/fullchain.pem
# - Private Key: /etc/letsencrypt/live/erp-portal.company.com/privkey.pem

4.4 Test Browser Access

1. Buka browser (Chrome/Firefox/Edge)
2. Navigate ke https://erp-portal.company.com
3. Zscaler login page akan muncul
4. Login dengan credentials IdP (SSO)
5. Setelah authenticated, redirect ke aplikasi internal
6. Verify: Aplikasi ERP bisa diakses tanpa Client Connector

Browser Access vs Client Connector

AspekBrowser AccessClient Connector
Install agentTidak perluPerlu install
ProtocolHTTP/HTTPS onlyTCP/UDP (semua protocol)
Device postureTerbatasFull posture check
Use caseBYOD, contractorManaged corporate device
Security levelMediumHigh
User experienceSimple (browser)Seamless (app-level)
RDP/SSHTidak supportSupport penuh

Step 5: Uji Coba & Validasi

5.1 Checklist uji end-to-end

Jangan langsung cabut VPN. Uji dulu skenario ini:

  1. Client Connector → app: install Client Connector, login user uji, buka erp.company.internal → harus bisa.
  2. Policy enforcement: login user di luar Finance Team, coba ERP → harus ditolak.
  3. Device posture: matikan BitLocker di device uji, coba ERP yang butuh compliant → ditolak; nyalakan lagi → boleh.
  4. Browser Access: tanpa Client Connector, buka URL eksternal ERP → SSO lalu masuk app.
  5. HA: matikan Connector #1, akses app tetap jalan lewat Connector #2.

5.2 Monitoring & troubleshooting

Di portal: Monitor → Diagnostics. Cek App Connector Health, User Activity, dan Policy Troubleshooting.

Kalau ada masalah umum:

# Issue 1: User tidak bisa connect
# Check: Client Connector status di device
# Check: User ada di group yang benar di IdP
# Check: App Segment domain/port benar

# Issue 2: Latency tinggi
# Check: App Connector performance (CPU/RAM)
# Check: Network path dari connector ke app server
# Check: Zscaler DC yang digunakan (harusnya terdekat)

# Issue 3: Browser Access tidak load
# Check: DNS CNAME record benar
# Check: SSL certificate valid dan tidak expired
# Check: External URL match dengan certificate CN/SAN

# Issue 4: Intermittent disconnection
# Check: App Connector logs
tail -f /var/log/zscaler/zpa-connector.log | grep ERROR
# Check: Network stability antara connector dan Zscaler
ping -c 100 connector.zscaler.net

Praktik Deployment ZPA

Naming Convention

App Connector Groups: ACG-<Location>-<Environment>
  Example: ACG-Jakarta-Prod, ACG-Surabaya-DR

App Connectors: AC-<Location>-<Number>
  Example: AC-JKT-01, AC-JKT-02

App Segments: AS-<AppName>-<Protocol>
  Example: AS-ERP-HTTPS, AS-FileShare-SMB

Server Groups: SG-<Location>-<Environment>
  Example: SG-Jakarta-Prod, SG-Surabaya-DR

Access Policies: POL-<Group>-<Access Level>
  Example: POL-Finance-ERP, POL-DevOps-Infra

Urutan rollout yang masuk akal

Jangan kerjakan semua sekaligus. Pola umum:

  1. Fondasi (minggu 1 – 2): deploy minimal 2 App Connector per site, pastikan Healthy, siapkan monitoring.
  2. Publish aplikasi (minggu 2 – 3): buat App Segments. Mulai dari app berisiko rendah (intranet), baru app kritis. Uji tiap segment.
  3. Policy (minggu 3 – 4): tulis Access Policy + device posture. Uji enforcement (user yang boleh vs yang tidak).
  4. User rollout (minggu 4 – 6): mulai dari tim IT, lalu satu departemen, baru lebih luas. VPN dimatikan bertahap setelah stabil.

Angka minggu di atas perkiraan. Kantor dengan identitas berantakan biasanya lebih lama.


FAQ

Berapa jumlah App Connector yang ideal?

Minimal 2 per site untuk high availability. Untuk environment dengan banyak user (500+), pertimbangkan 4 connector: 2 active, 2 standby. Setiap App Connector bisa handle sekitar 2.000 – 5.000 concurrent sessions, tergantung spesifikasi VM dan jenis traffic.

Apakah App Connector butuh public IP?

Tidak. App Connector hanya perlu outbound connectivity ke internet (port 443). Tidak perlu inbound port apapun. Ini yang membuat ZPA lebih aman dari VPN: tidak ada attack surface dari internet ke network internal kamu.

Bisa tidak pakai ZPA tanpa install Client Connector di device user?

Bisa, tapi terbatas. Gunakan fitur Browser Access untuk akses web-based apps (HTTP/HTTPS) tanpa Client Connector. Untuk akses non-web (SSH, RDP, database), kamu tetap butuh Client Connector. Untuk deployment penuh di device kantor, tetap install Client Connector.

Bagaimana handle user yang pindah lokasi (roaming)?

ZPA otomatis handle roaming. Saat user pindah dari kantor Jakarta ke Surabaya (atau dari kantor ke rumah), Client Connector otomatis reconnect ke Zscaler DC terdekat. Tidak perlu reconfigurasi apapun. Ini salah satu keunggulan utama ZPA dibanding VPN tradisional.


Kesimpulan

Setup ZPA butuh perencanaan, tapi hasilnya akses aplikasi yang lebih aman, lebih mudah diaudit, dan biasanya lebih nyaman dipakai daripada VPN tradisional. Intinya: 2 connector per site, segment per aplikasi (bukan per jaringan), policy default deny, uji dulu sebelum cabut VPN.


Butuh Bantuan Setup ZPA?

Tim teknis PT Karya Informasi Nusantara (KIN) sudah berpengalaman deploy ZPA di berbagai organisasi di Indonesia. Kami bisa membantu dari planning, deployment, policy, sampai user training.

📞 Telepon: (021) 48674152 📧 Email: sales@informasinusantara.co.id 🌐 Hubungi Kami: Formulir Kontak 📋 Layanan Kami: Lihat Semua Services

Leave a Reply

Your email address will not be published. Required fields are marked *