Cloudflare Zero Trust
Access Control
Triển khai website tĩnh trên Cloudflare Pages và bảo vệ bằng Cloudflare Access — xác thực danh tính qua Google / GitHub trước khi cho phép truy cập.
Triển khai website tĩnh với Cloudflare Pages
Website tĩnh được triển khai trực tiếp từ GitHub repository lên Cloudflare Pages. Mọi thay đổi được push lên nhánh main sẽ tự động build và deploy.
Cloudflare Pages
Host website tĩnh, tự động deploy từ GitHub, CDN toàn cầu.
GitHub Repository
Lưu trữ source code. Mỗi commit tới main kích hoạt build mới.
HTTPS / TLS 1.3
Chứng chỉ SSL tự động, mã hóa toàn bộ kết nối, đánh giá Grade A.
Cấu hình triển khai
Repository: github.com/duykhangne/web-demo
Branch: main
Build command: (none — static HTML)
Output directory: /
Domain: web-demo-cloudflare.pages.dev
SSL Mode: Full (strict)
HSTS: enabled — max-age 31536000
Mô hình kiểm soát truy cập Zero Trust
Cloudflare Access đứng trước website — mọi request đều bị chặn và kiểm tra danh tính trước khi được phép chạm đến nội dung. Đây là nguyên tắc cốt lõi của mô hình Zero Trust.
Google / GitHub
Policy / Email
Vai trò của Cloudflare Access trong mô hình
| Thành phần | Chức năng | Vị trí trong luồng |
|---|---|---|
| Người dùng | Gửi HTTP/HTTPS request từ trình duyệt | Điểm khởi đầu |
| Cloudflare Edge | Nhận request, chặn trước khi đến server | Trung gian — Lớp 1 |
| Authentication | Yêu cầu đăng nhập Google / GitHub. Xác minh danh tính qua OAuth 2.0 | Lớp kiểm soát — Bước 1 |
| Authorization / Policy | Kiểm tra email, nhóm, thiết bị theo policy đã cấu hình | Lớp kiểm soát — Bước 2 |
| Điểm quyết định | Tổng hợp kết quả: Cho phép hoặc Từ chối | Access Gate |
| Cloudflare Pages | Phục vụ nội dung tĩnh — chỉ khi vượt qua kiểm tra | Backend — được bảo vệ |
Nguyên lý Zero Trust
Mô hình Zero Trust không tin tưởng bất kỳ request nào theo mặc định — kể cả từ mạng nội bộ. Mỗi lần truy cập đều phải xác minh danh tính và kiểm tra quyền trước khi cấp phép. Cloudflare Access thực hiện điều này ở lớp edge — hoàn toàn trong suốt với website tĩnh, không cần thay đổi code.
Hành vi xác thực qua Cloudflare Access
Nhóm thực hiện kiểm thử ba trường hợp theo yêu cầu, ghi nhận kết quả quan sát thực tế từ trình duyệt.
Chưa xác thực
Mở URL trong trình duyệt ẩn danh (Incognito). Không có session hay cookie hợp lệ.
Kết quả quan sát: Cloudflare Access chặn request ngay lập tức, hiển thị trang đăng nhập (Access Login Page) với lựa chọn Google / GitHub. Người dùng không thấy bất kỳ nội dung nào của website.
HTTP 302 → /cdn-cgi/access/loginXác thực sai / không đủ quyền
Đăng nhập thành công qua Google/GitHub nhưng email không nằm trong danh sách được phép của policy.
Kết quả quan sát: Cloudflare Access xác thực danh tính thành công (biết đây là ai) nhưng policy từ chối vì email không khớp. Hiển thị trang lỗi "Access Denied" — website vẫn hoàn toàn ẩn.
Access Denied — Policy không khớpXác thực đúng / đủ quyền
Đăng nhập bằng tài khoản Google/GitHub có email nằm trong policy được phép.
Kết quả quan sát: Cloudflare Access cấp JWT token, tự động chuyển hướng về URL gốc. Nội dung website hiển thị bình thường. Cookie CF_Authorization được ghi vào trình duyệt.
Bảng tổng hợp kết quả kiểm thử
| Tình huống | Bước thất bại tại | HTTP Response | Người dùng thấy |
|---|---|---|---|
| Chưa xác thực | Authentication (chưa đăng nhập) | 302 Redirect | Trang đăng nhập Cloudflare Access |
| Xác thực sai email | Authorization (policy không khớp) | 403 Forbidden | Trang "Access Denied" |
| Xác thực đúng | Không có — vượt qua tất cả | 200 OK | Nội dung website đầy đủ |
Kết quả kiểm thử SSL / Bảo mật — Grade A
Kiểm tra tại SSL Labs (ssllabs.com/ssltest/) với các cấu hình Cloudflare sau:
TLS Version: 1.2 / 1.3 # TLS 1.0 và 1.1 đã tắt
Always Use HTTPS: Enabled
HSTS: max-age=31536000; includeSubDomains
HTTP/2: Enabled
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Grade: A