Mengakses Aplikasi Privat dari Internet Publik dengan Cloudflare Zero Trust Access di Docker Container

Dengan meningkatnya kebutuhan untuk mengakses aplikasi privat dari berbagai lokasi, solusi seperti Cloudflare Zero Trust Access (sebelumnya dikenal sebagai Cloudflare Tunnel) menjadi sangat penting. Cloudflare Zero Trust Access memungkinkan kita untuk mengekspos aplikasi yang berjalan di jaringan privat ke internet publik tanpa harus membuka port pada firewall. Artikel ini akan membahas langkah-langkah implementasi Cloudflare Zero Trust Access di Docker untuk mengakses aplikasi privat dari internet publik dengan cara yang aman dan efisien.

Apa itu Cloudflare Zero Trust Access?

Cloudflare Zero Trust Access adalah layanan yang disediakan oleh Cloudflare yang memungkinkan Anda untuk menghubungkan aplikasi lokal ke jaringan Cloudflare tanpa harus membuka port pada firewall Anda. Dengan menggunakan Cloudflare Zero Trust Access, Anda dapat mengekspos aplikasi web lokal Anda ke internet publik dengan keamanan tambahan yang disediakan oleh jaringan Cloudflare.

Prerequisite

Sebelum memulai, pastikan Anda telah memiliki:
1. Akun cloudflare.
2. Domain yang dikelola oleh Cloudflare.
3. Docker terinstal di server Anda

Langkah-langkah Implementasi

1. Siapkan Cloudflare Zero Trust Access

Silahkan login ke Cloudflare menggunakan akun yang sudah anda buat dan pastikan anda telah mendaftarkan FQDN dengan benar.

Pada Home Dashboard Cloudflare, navigasi ke Menu Zero Trust. Setelah anda navigasi maka page akan tampil seperti dibawah ini:

Hal pertama yang kita lakukan adalah membuat Application pada Cloudflare Zero Trust pada Menu Access. Tambahkanlah Aplikasi baru anda.

Tersedia beberapa pilihan jenis aplikasi yang anda gunakan. Dalam kasus saya, jenis aplikasi yang saya inginkan adalah Self Hosted.

Isilah Application name sesuai keinginan anda, sebagai contoh saya membuat “homepage” dan pada bagian Application domain buatlah juga subdomain sesuai keinginan anda. perlu anda perhatikan ada warning yang muncul ketika saya menambahkan subdomain. Kita perlu membuat DNS record untuk subdomain nya nanti.

Sebelumnya saya juga telah membuat Identity Providers untuk akses di aplikasi nanti. Dalam hal ini saya menggunakan Github dan Google sebagai providers, saya tidak akan membahas tentang providers dalam artikel ini. Dalam kasus anda biarkan default saja, lalu pilih next.

Langkah selanjutnya kita membuat policy Allow agar aplikasi yang kita buat dapat di akses dari Public Internet. Isi policy name dengan Action Allow dan kita juga harus membuat policy rule, setidaknya rule include.

Terdapat banyak pilihan rules yang dapat anda gunakan, explore lah rules tersebut lebih lanjut agar aplikasi yang anda buat menjadi semakin secure. Dalam kasus saya, karena saya telah membuat Identity provider sebelumnya. Maka policy rule seperti ini:

Setelah membuat Policy rules dan next. Sekarang kita konfigurasi CORS Settings. Cross-Origin Resource Sharing (CORS) adalah mekanisme keamanan web yang memungkinkan browser untuk melakukan permintaan sumber daya ke domain yang berbeda dari domain asal halaman yang sedang diakses. Hal ini sering digunakan untuk mengizinkan aplikasi web mengakses sumber daya dari server yang berbeda dari tempat aplikasi web tersebut di-host. Sebagai contoh saya membatasi HTTP method hanya menggunakan GET. Anda bisa membuat CORS Settings custom yang lebih dari saya 🙂

Pada parameter Cookie settings, saya mengaktifkan HTTP Only untuk mencegah client mengakses cookie dari aplikasi saya.

Setelah semua pengaturan applikasi selesai. tambahkan aplikasi dengan klik add application.

Oke bagus!
kita telah berhasil menambahkan aplikasi pada zero Trust. Langkah selanjut adalah yang paling penting agar aplikasi yang sudah kita tambahkan bisa di akses dari Public Internet. Yaitu Network Tunnel dan pilih Cloudflared, lalu next.

Isilah tunnel name sesuai keinginan anda. Save tunnel, maka anda bisa memilih lingkungan installasi tunnel connector.

Banyak lingkungan yang bisa anda pilih, misalnya windows. Tetapi dalam contoh ini saya menggunakan Docker sebagai lingkungan untuk instalasi Tunnel connector.
Setelah memilih connector yang akan digunakan, kita akan mendapatkan langkah-langkah installasi beserta token connector nya yang telah disediakan oleh Cloudflare. Simpan lah token anda ditempat yang paling aman untuk kita gunakan nanti.

Setelah next, kita sekarang berada di bagian Route Traffic. Disini kita perlu mengisi public hostname atau subdomain yang sama seperti sebelumnya ditahap tambah aplikasi. Bagian yang paling penting adalah Service, pada bagian ini kita perlu mengisi URL aplikasi privat. Dalam contoh saya menggunakan http://homepage-srv-prod-1.dopnetindo.com sebagai domain di lingkungan privat saya.

Lalu kliklah add tunnel. perhatikan bahwa status tunnel cloudflare yang telah kita buat INACTIVE.

2. Installasi Cloudflare Tunnel Connector di Docker

    Dalam artikel ini saya menggunakan Portainer Stack untuk melakukan deploy container cloudflared connector dengan mudah. Untuk mengetahui lebih lanjut tentang Portainer akan saya bahas di artikel yang berbeda.

    Saya akan membuat Docker-compose file pada Portainer. Berikut script YAML yang telah saya siapkan.

    Setelah docker-compose siap. selanjut kita tinggal deploy saja stack nya agar cloudflared tunnel connector container kita running dan terhubung ke cloudflare zero trust.

    setelah container kita running sekarang perhatikan pada status cloudflared tunnel menjadi HEALTHY yang berarti tunnel berhasil terhubung.

    Saatnya Mencoba Akses Aplikasi Anda melalui Public Internet!

    akses aplikasi anda menggunakan FQDN yang telah anda buat. Jangan lupa untuk membuat DNS Record agar FQDN nya kita aktif dan dapat diakses. Biasanya DNS Record akan terbuat secara otomatis saat kita membuat Network Tunnel.

    Saat saya mencoba akes FQDN dengan URL homepage.dopnetindo.net maka tampil verifikasi identity provider yang telah saya aktifkan pada saat menambahkan aplikasi.

    Setelah melakukan verifikasi Identity Provider menggunakan Google. Akhirnya saya bisa mengakes aplikasi privat dari Public Internet. Well done!

    Selamat mencoba!

    Leave a Comment

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

    Scroll to Top