Cloudflare Zero Trust: thay thế VPN truyền thống, bảo mật truy cập nội bộ cho team nhỏ

VPN truyền thống hoạt động theo kiểu "vào được mạng nội bộ thì truy cập được tất cả". Zero Trust đảo ngược logic đó: "không tin bất kỳ ai, kể cả người trong mạng - mỗi lần truy cập đều phải verify identity". Cloudflare Zero Trust (phần của Cloudflare One) cung cấp đầy đủ stack này miễn phí cho team dưới 50 người: Access control, Tunnel, Gateway DNS filtering, và WARP device client. ---

Vấn đề với VPN truyền thống

Nhiều team vẫn đang dùng VPN để nhân viên remote truy cập hệ thống nội bộ. Mô hình này có vấn đề cơ bản:

1. All-or-nothing access. Một khi vào được VPN, user có thể reach toàn bộ mạng nội bộ - kể cả những resource họ không cần. Nếu account bị compromise, attacker có ngay foothold trong toàn bộ internal network.

2. Maintenance overhead. VPN server cần maintain, certificate cần renew, client cần update trên từng máy. Với team nhỏ không có dedicated DevOps, đây là gánh nặng thực sự.

3. UX kém. VPN chậm hơn truy cập trực tiếp (thêm một hop), nhiều VPN client gây conflict với các tool khác, và "VPN đang bị lỗi" là câu cửa miệng trong nhiều team.

4. Blind spot. VPN không có visibility vào device health - máy nhiễm virus vẫn kết nối được VPN nếu có credentials đúng.


Giải thích: Zero Trust là gì

Zero Trust không phải một sản phẩm cụ thể - đó là một triết lý bảo mật với nguyên tắc cốt lõi:

"Never trust, always verify" - không tin ai mặc định, kể cả traffic từ bên trong mạng nội bộ.

Thay vì kiểm soát ở perimeter (ai vào được mạng), Zero Trust kiểm soát ở từng resource (ai truy cập được service cụ thể nào, từ thiết bị nào, tại thời điểm nào).

VPN model:      [Internet] → [VPN gateway] → [Toàn bộ internal network]
                                                       ↑
                                              Nếu VPN pass → vào hết

Zero Trust:     [Internet] → [Cloudflare Edge] → [Access policy check]
                                                         ↓
                                              Identity? Device? Location?
                                                         ↓
                                              ✓ Pass → Service cụ thể
                                              ✗ Fail → Blocked

Cloudflare One: 4 thành phần chính

Cloudflare Zero Trust (tên sản phẩm: Cloudflare One) bao gồm:

Thành phần Chức năng
Access Identity-aware proxy - kiểm soát ai được vào service nào
Tunnel Outbound connector - expose service nội bộ không cần public IP
Gateway DNS/HTTP filtering - chặn malware, phishing, content không phù hợp
WARP Device client - route traffic qua Cloudflare, enforce device posture

Bài Cloudflare Tunnel đã cover phần Tunnel. Bài này tập trung vào Access - phần quan trọng nhất với team nhỏ.


Setup Cloudflare Access: bảo vệ service nội bộ

Bước 1: Vào Zero Trust dashboard

  • Vào dash.cloudflare.com → chọn account
  • Click Zero Trust ở sidebar
  • Lần đầu sẽ cần chọn team name (subdomain .cloudflareaccess.com) và plan - chọn Free (50 users)

Bước 2: Cấu hình Identity Provider

Trước khi tạo policy, cần có nguồn identity để verify user. Cloudflare Access hỗ trợ:

  • Google Workspace / Gmail - phổ biến nhất với team VN
  • Microsoft Azure AD / Entra ID - nếu dùng Microsoft 365
  • GitHub - tiện cho team developer
  • OTP qua email - đơn giản nhất, không cần provider ngoài

Vào Settings → Authentication → Add new. Chọn Google và làm theo wizard - cần tạo OAuth App trong Google Cloud Console, lấy Client ID và Client Secret.

Sau khi setup, test login: click Test - nếu hiện tài khoản Google của bạn là thành công.

Bước 3: Tạo Application (service cần bảo vệ)

Vào Access → Applications → Add an Application → Self-hosted.

Ví dụ: bảo vệ Grafana dashboard đang chạy trên monitoring.yourdomain.com:

Application name: Grafana Monitoring
Session duration: 24 hours
Application domain: monitoring.yourdomain.com

Bước 4: Tạo Access Policy

Trong application vừa tạo, thêm policy:

Policy cơ bản - chỉ cho phép email nội bộ:

Policy name: BKGlobal Team Only
Action: Allow

Include rule:
  Selector: Emails
  Value: user1@bkglobal.vn, user2@bkglobal.vn

  OR

  Selector: Email domain
  Value: bkglobal.vn  ← toàn bộ @bkglobal.vn đều được vào

Policy nâng cao - thêm điều kiện theo country:

Policy name: Vietnam Team Access
Action: Allow

Include rule:
  Selector: Email domain
  Value: bkglobal.vn

Require rule (tất cả phải pass):
  Selector: Country
  Value: Vietnam

Với policy này: user phải có email @bkglobal.vn VÀ đang ở Việt Nam mới được vào.


Luồng trải nghiệm của user

Sau khi setup Access, đây là những gì user thấy khi vào monitoring.yourdomain.com:

  1. Cloudflare Access chặn → hiện màn hình login "Sign in with Google"
  2. User click → redirect sang Google OAuth
  3. Google verify → trả token về Cloudflare
  4. Cloudflare check policy → email có trong allowed list không?
  5. Pass → cookie session được tạo → user vào được service
  6. Fail → "You don't have access" - blocked

Session mặc định 24 giờ. Sau đó cần login lại.


Code minh họa: Service Token cho CI/CD

Đôi khi bạn cần pipeline tự động (GitHub Actions, Jenkins) truy cập service được bảo vệ bởi Access mà không cần browser login. Dùng Service Token.

Tạo service token: Access → Service Auth → Service Tokens → Create Service Token.

Dùng trong GitHub Actions:

# .github/workflows/deploy.yml
- name: Health check internal API
  env:
    CF_ACCESS_CLIENT_ID: ${{ secrets.CF_ACCESS_CLIENT_ID }}
    CF_ACCESS_CLIENT_SECRET: ${{ secrets.CF_ACCESS_CLIENT_SECRET }}
  run: |
    curl -H "CF-Access-Client-Id: $CF_ACCESS_CLIENT_ID" \
         -H "CF-Access-Client-Secret: $CF_ACCESS_CLIENT_SECRET" \
         https://api.yourdomain.com/health

Trong Access policy, thêm rule cho service token:

Include rule:
  Selector: Service Token
  Value: [chọn token vừa tạo]

Gateway: DNS filtering cho team

Bên cạnh Access, Cloudflare Gateway là một tính năng hay cho team: filter DNS ở cấp độ network, chặn malware, phishing, và các domain nguy hiểm trước khi chúng load.

Setup nhanh với WARP client:

  1. Settings → WARP Client → Device enrollment → tạo enrollment policy (chỉ cho phép email @bkglobal.vn enroll)
  2. Nhân viên download Cloudflare WARP → login bằng email công ty → thiết bị tự đăng ký vào team
  3. Gateway → DNS → Policies → tạo policy chặn categories: Malware, Phishing, Cryptomining

Từ đây, tất cả DNS query từ máy nhân viên đều đi qua Cloudflare Gateway trước - malware domain bị chặn ở cấp DNS, không bao giờ resolve được.


So sánh: Cloudflare Zero Trust vs VPN truyền thống

Tiêu chí VPN truyền thống Cloudflare Zero Trust
Truy cập All-or-nothing Per-application, per-policy
Identity Credentials (username/pass) OAuth, SSO, MFA
Device health Không check Device posture check
Visibility Thấp Log đầy đủ mọi access attempt
Maintain Server cần update, cert renew Managed by Cloudflare
Giá (team < 50) Tốn phí VPN server Miễn phí
UX Chậm, hay lỗi client Nhanh hơn, chỉ cần browser
Self-hosted Cần server Không cần

Giới hạn free plan cần biết

Feature Free (50 users)
Số users 50
Access applications Không giới hạn
Gateway policies Không giới hạn
Audit logs 24 giờ
Service tokens Không giới hạn
Device posture Cơ bản

Với team startup hoặc SME dưới 50 người, free plan là đủ cho hầu hết use case.


Best practices từ thực tế

1. Bắt đầu với Access, không cần WARP ngay. Access (bảo vệ từng app) là giá trị rõ ràng nhất, setup nhanh nhất. WARP và Gateway là layer thêm - làm sau khi đã quen.

2. Dùng email domain, không dùng email cụ thể. Email domain: bkglobal.vn dễ maintain hơn list email thủ công - nhân viên mới tự động được vào, nhân viên cũ chỉ cần revoke Google account.

3. Luôn có bypass cho emergency. Tạo một service token cho ops team để bypass Access khi cần debug khẩn cấp - đừng để bị lock out khỏi chính hệ thống của mình.

4. Audit logs là bạn. Vào Access → Overview → xem ai đã truy cập gì, từ đâu, lúc mấy giờ. Khi có incident, đây là nguồn đầu tiên cần xem.

5. Kết hợp Tunnel + Access. Đây là combo mạnh nhất: Tunnel expose service nội bộ không cần public IP, Access kiểm soát ai được vào. Service nội bộ của bạn sẽ vừa accessible vừa secure.


Kết

Cloudflare Zero Trust không phải "enterprise-only" - free plan cho 50 users là đủ để team nhỏ có một hệ thống access control theo chuẩn enterprise. Không cần maintain VPN server, không cần public IP, không cần SSL certificate riêng. Identity-aware access thay thế hoàn toàn mô hình VPN all-or-nothing truyền thống.

Series Cloudflare của chúng tôi đã cover:

  1. Cài đặt Cloudflare cho nhiều domain - onboarding và automation
  2. Redirect nhiều domain về một domain chính - Redirect Rules
  3. Cloudflare Tunnel - expose service nội bộ
  4. Cloudflare Zero Trust (bài này) - bảo mật truy cập

Bước tiếp theo nếu bạn muốn đào sâu hơn: Cloudflare WorkersR2 Storage - compute và storage ở edge, không cần server truyền thống.


Tham khảo


BKGlobal Tech Team

Blog Công nghệ

Xem tất cả