Dua URL dapat terlihat identik dari peramban seorang peer dan berarti hal yang sangat berbeda bagi firewall. Yang satu menunjuk ke layanan yang mendengarkan di host itu sendiri. Yang lain menunjuk ke alamat host yang portnya dipublikasikan ke jaringan kontainer, tempat langkah terjemahan menyerahkan koneksi ke IP lain. Pada mesh peer-to-peer yang mengatur akses jaringan lokal dengan izin per peer, perbedaan itulah seluruh tinjauannya.

Izinnya tentang titik akhir host, terjemahannya tentang Docker, dan login-nya tentang aplikasi. Tiga keputusan, tiga tempat untuk dilihat.

Ikuti tujuan setelah publikasi

Ambil host Linux Docker yang mempublikasikan port 80 sebuah kontainer pada port 8080 host. Seorang peer terhubung ke alamat mesh host pada 8080, host menerima koneksi, dan terjemahan tujuan menulis ulangnya ke alamat jembatan kontainer, biasanya sesuatu seperti 172.17.0.2 pada port 80.

Saat sebuah aturan memeriksa aliran itu, tujuan yang menarik adalah kontainer, bukan host. Kebijakan yang hanya bernalar tentang «layanan di mesin ini» bernalar tentang objek yang salah. Permintaan mendarat di host, tetapi dikirimkan di tempat lain.

Itulah sebabnya dokumentasi mesh mencantumkan kontainer Docker di antara sumber daya yang diatur izin jaringan lokal di Linux. Izin itu bukan sinonim entri daftar izin VPN biasa, dan kedua kontrol tidak saling menggantikan. Yang satu memutuskan apakah seorang peer boleh menjangkau sumber daya lokal sama sekali; yang lain memutuskan tujuan mana yang dibawa rute terowongan.

Putuskan berapa banyak akses lokal yang diberikan sebuah izin

Memberi akses jaringan lokal kepada seorang peer bukan keputusan tentang satu kontainer. Itu dapat mengekspos layanan terpublikasi lain di host yang sama, dan dapat menjangkau lebih jauh tergantung bagaimana host meneruskan. Tinjau cakupan efektifnya sebelum menekan sakelar untuk satu dasbor.

Lalu lihat di mana Docker mempublikasikan port. Publikasi pada 0.0.0.0 membuat pendengar di setiap alamat host, yang dapat menambahkan entri LAN biasa di samping entri mesh. Jika persyaratannya hanya mesh, ikat publikasi ke alamat atau antarmuka tertentu yang Anda maksud, dan perlakukan pengikatan yang lebih luas sebagai temuan terpisah, bukan sebagai kemudahan.

Jaga kebijakan penerusan host dan autentikasi aplikasi itu sendiri cukup sempit untuk layanan. URL yang tampak privat bukan kontrol akses, dan kontainer yang memercayai setiap sumber di jaringan jembatannya tidak terlindungi oleh fakta bahwa peer mesh telah disetujui. Autentikasi aplikasi adalah keputusan ketiga, dan hanya itulah yang tahu siapa penggunanya. Izin tingkat host tidak dapat menyediakan pengetahuan itu.

Uji izinnya, bukan hanya URL-nya

Dari peer yang disetujui, buka layanan yang tepat dan pastikan layanan itu berfungsi. Lalu coba tujuan yang seharusnya tetap ditolak dan pastikan tidak berfungsi. Menguji hanya jalur bahagia memberi tahu Anda bahwa izin diberikan; itu tidak memberi tahu Anda bahwa batasnya ada di tempat yang Anda kira.

Bandingkan layanan asli host secara terpisah. Jika basis data mendengarkan di host dan dasbor berjalan di kontainer, keduanya mengikuti jalur berbeda melalui izin yang sama dan mungkin tidak diatur sama oleh kebijakan penerusan host. Catat mana yang mana sebelum menulis catatan tinjauan.

Jangan mengosongkan tabel Docker atau aturan klien mesh untuk «mengatur ulang» akses. Kedua produk memasang integrasi kebijakan mereka sendiri, dan menghapusnya menghasilkan host yang tampak berfungsi sambil melewati kontrol yang diminta Anda evaluasi. Jika sebuah aturan tampak salah, baca dan ubah aturan itu saja. Jika Anda tidak dapat menjelaskan apa yang dilakukan sebuah aturan, itulah temuannya, bukan alasan untuk menghapusnya.

Tulis temuan dalam istilah sistem itu sendiri

Yang penting adalah pembedaan yang benar-benar ditegakkan produk, bukan yang ada di templat tinjauan: izin menjangkau titik akhir host, izin menjangkau sumber daya privat yang dirutekan, dan izin menggunakan aplikasi. Mempublikasikan port membiarkan ketiga keputusan itu tepat di tempatnya, dan peninjau yang memperlakukannya sebagai satu akan menyetujui cakupan yang salah.

Nyatakan alamat host, port yang dipublikasikan, tujuan kontainer, dan izin peer dalam kalimat yang sama. Kalimat itu dapat diuji oleh orang lain, dan itulah yang menjadikannya temuan, bukan opini.

Artikel terkait