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/24 untuk 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:

js
printjson(db.runCommand({ whatsmyuri: 1 }).you)

Output yang Dihasilkan:

text
127.0.0.1:58240

Perintah 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:

EntriRentang yang diizinkanKapan dipakai
203.0.113.42Satu alamat sajaMesin tunggal dengan IP statis
203.0.113.0/24256 alamat (203.0.113.0–203.0.113.255)Satu subnet kantor
10.0.0.0/1665.536 alamatSatu VPC besar
0.0.0.0/0Semua alamat IPv4Hindari kecuali untuk latihan

Agar tidak menebak-nebak, kita bisa menguji keanggotaan alamat dalam rentang CIDR dengan modul ipaddress Python:

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:

text
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          -> True

Mari kita telaah kode di atas:

  1. ipaddress.ip_network(cidr) mengubah string CIDR menjadi objek jaringan yang tahu batas awal dan akhirnya.
  2. ipaddress.ip_address(ip) in jaringan menguji keanggotaan satu alamat dalam jaringan tersebut.
  3. Baris uji kedua membuktikan /25 lebih sempit daripada /24: 203.0.113.200 masuk 203.0.113.128/25 (rentang bawah) sekaligus 203.0.113.0/24, sedangkan alamat dari blok dokumentasi 198.51.100.x tidak.
  4. Baris terakhir memperlihatkan mengapa 0.0.0.0/0 berbahaya: 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.
  • whatsmyuri menampilkan alamat sumber sebagaimana dilihat server — alamat itulah yang diperiksa IP access list.
  • Notasi CIDR menentukan lebar rentang; uji keanggotaannya dengan ipaddress.ip_network() dan in sebelum menambahkan entri.
  • 0.0.0.0/0 membuka 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.