Berdasarkan database user saja belum cukup: cluster Atlas baru juga menolak semua koneksi dari jaringan mana pun. Gerbang kedua bernama IP access list — daftar alamat IP dan rentang CIDR yang diizinkan menghubungi cluster. Chapter ini membahas cara mengisi daftar itu, cara membaca notasi CIDR agar tidak salah membuka rentang, opsi konektivitas privat untuk produksi, dan seberapa cepat perubahan berlaku.
IP Access List #
Menu Network Access di sisi kiri project menampilkan seluruh entri akses. Tombol + Add IP Access List Entry membuka formulir dengan tiga pilihan:
- ADD CURRENT IP ADDRESS — mencatat alamat IP publik jaringan kita saat ini, pilihan tercepat untuk mesin pengembang.
- CUSTOM IP OR CIDR — memasukkan alamat tunggal atau rentang, misalnya
203.0.113.0/24untuk seluruh subnet kantor. - ALLOW ACCESS FROM ANYWHERE — sinonim dari
0.0.0.0/0, membuka cluster ke seluruh internet.
Entri bisa dibuat sementara dengan masa berlaku hingga tujuh hari — cocok untuk alamat IP rumah yang berubah-ubah. Seluruh entri berlaku untuk semua cluster dalam project, dan sebuah project dapat memuat hingga 200 entri. Menghapus entri tertua sebelum menambah yang baru adalah langkah kebersihan rutin agar daftar tetap mewakili kenyataan.
Alamat Kita dari Sisi Server #
IP access list bekerja dengan membandingkan alamat sumber paket TCP dengan daftar entri. Kita bisa melihat alamat sumber tersebut persis seperti yang dilihat server:
printjson(db.runCommand({ whatsmyuri: 1 }).you)Output yang Dihasilkan:
127.0.0.1:58240Perintah whatsmyuri mengembalikan alamat klien sebagaimana server menerimanya — pada koneksi lokal kita, alamat loopback 127.0.0.1 diikuti port acak (angka port akan berbeda di setiap koneksi, misalnya 58240 kali ini). Ketika koneksi ditolak Atlas dengan pesan not whitelisted, alamat yang dimaksud dalam pesan itu adalah bagian IP dari nilai serupa inilah.
Membaca Notasi CIDR #
Mengetik alamat IP satu per satu cepat menjadi tidak praktis. Notasi CIDR seperti 203.0.113.0/24 menyingkat “semua alamat yang 24 bit pertamanya sama dengan alamat ini”. Makna beberapa panjang prefiks yang umum:
| Entri | Rentang yang diizinkan | Kapan dipakai |
|---|---|---|
203.0.113.42 | Satu alamat saja | Mesin tunggal dengan IP statis |
203.0.113.0/24 | 256 alamat (203.0.113.0–203.0.113.255) | Satu subnet kantor |
10.0.0.0/16 | 65.536 alamat | Satu VPC besar |
0.0.0.0/0 | Semua alamat IPv4 | Hindari kecuali untuk latihan |
Agar tidak menebak-nebak, kita bisa menguji keanggotaan alamat dalam rentang CIDR dengan modul ipaddress Python:
"""Memeriksa apakah sebuah alamat IP termasuk ke dalam rentang CIDR."""
import ipaddress
def cek(ip: str, cidr: str) -> None:
jaringan = ipaddress.ip_network(cidr)
hasil = ipaddress.ip_address(ip) in jaringan
print(f"{ip:<15} di dalam {cidr:<18} -> {hasil}")
cek("203.0.113.42", "203.0.113.0/24")
cek("203.0.113.200", "203.0.113.128/25")
cek("198.51.100.10", "203.0.113.0/24")
cek("203.0.113.42", "0.0.0.0/0")Output yang Dihasilkan:
203.0.113.42 di dalam 203.0.113.0/24 -> True
203.0.113.200 di dalam 203.0.113.128/25 -> True
198.51.100.10 di dalam 203.0.113.0/24 -> False
203.0.113.42 di dalam 0.0.0.0/0 -> TrueMari kita telaah kode di atas:
ipaddress.ip_network(cidr)mengubah string CIDR menjadi objek jaringan yang tahu batas awal dan akhirnya.ipaddress.ip_address(ip) in jaringanmenguji keanggotaan satu alamat dalam jaringan tersebut.- Baris uji kedua membuktikan
/25lebih sempit daripada/24:203.0.113.200masuk203.0.113.128/25(rentang bawah) sekaligus203.0.113.0/24, sedangkan alamat dari blok dokumentasi198.51.100.xtidak. - Baris terakhir memperlihatkan mengapa
0.0.0.0/0berbahaya: semua alamat lolos tanpa kecuali.
Konektivitas Privat #
IP access list menyaring siapa yang boleh masuk, tetapi lalu lintas tetap melewati internet publik (tentu saja terenkripsi TLS). Untuk produksi, Atlas menyediakan dua jalur privat agar port database bahkan tidak tampak dari internet:
- Private endpoint — layanan AWS PrivateLink, Azure Private Link, atau Google Cloud Private Service Connect; cluster muncul sebagai antarmuka privat di dalam VPC kita, dan hanya resource dalam VPC itu yang bisa menghubunginya.
- VPC peering — menghubungkan jaringan VPC Atlas dengan VPC aplikasi secara langsung, cocok saat banyak layanan berbagi satu VPC.
Perubahan IP access list umumnya terasa dalam hitungan detik hingga beberapa menit untuk koneksi baru. Khusus penambahan atau penghapusan entri 0.0.0.0/0, Atlas menerapkan perubahan sekitar 15 menit dan dapat memicu rolling restart cluster — alasan lain untuk tidak bermain-main dengan entri tersebut.
Rangkuman #
- Entri akses dibuat lewat Network Access → + Add IP Access List Entry: alamat saat ini, CIDR kustom, atau entri sementara berlaku hingga tujuh hari; batas 200 entri per project.
whatsmyurimenampilkan alamat sumber sebagaimana dilihat server — alamat itulah yang diperiksa IP access list.- Notasi CIDR menentukan lebar rentang; uji keanggotaannya dengan
ipaddress.ip_network()daninsebelum menambahkan entri. 0.0.0.0/0membuka akses ke seluruh internet dan memicu email peringatan Atlas; gunakan hanya untuk latihan singkat.- Produksi memakai private endpoint atau VPC peering, dikombinasikan dengan security group yang membuka port 27017 hanya dari subnet aplikasi.