Mengelola beberapa server, lebih dari 90 saat ini dengan 3 devops via Ansible. Semua berfungsi dengan baik, namun ada masalah keamanan raksasa saat ini. Setiap devop menggunakan kunci ssh lokal mereka sendiri untuk mendapatkan akses langsung ke server. Setiap devop menggunakan laptop, dan setiap laptop berpotensi dapat dikompromikan sehingga membuka seluruh jaringan server prod hingga serangan.
Saya mencari solusi untuk mengelola akses secara terpusat, dan karenanya memblokir akses untuk setiap kunci yang diberikan. Tidak berbeda dengan bagaimana kunci ditambahkan ke bitbucket atau github.
Dari atas kepala saya, saya akan menganggap solusi akan menjadi terowongan dari satu mesin, gateway, ke server prod yang diinginkan ... sementara melewati gateway permintaan akan mengambil kunci baru dan digunakan untuk mendapatkan akses ke prod server. Hasilnya adalah kita dapat dengan cepat dan efisien membunuh akses untuk devop apa pun dalam hitungan detik hanya dengan menolak akses ke gateway.
Apakah ini logika yang bagus? Adakah yang melihat solusi di luar sana untuk mengatasi masalah ini?
sumber
Jawaban:
Itu terlalu rumit (memeriksa apakah kunci memiliki akses ke server prod tertentu). Gunakan server gateway sebagai host lompatan yang menerima setiap kunci yang valid (tetapi dapat dengan mudah menghapus akses untuk kunci tertentu yang menghapus akses ke semua server secara bergantian) dan kemudian menambahkan hanya kunci yang diizinkan untuk setiap server masing-masing. Setelah itu, pastikan Anda dapat mencapai port SSH dari setiap server hanya melalui host melompat.
Ini adalah pendekatan standar.
sumber
Insinyur tidak boleh menjalankan secara langsung dari laptop mereka, kecuali ini adalah lingkungan dev / test.
Sebaliknya, miliki server pusat yang menarik runbook dari git. Ini memungkinkan kontrol tambahan (empat mata, tinjauan kode).
Gabungkan ini dengan bastion atau host melompat untuk membatasi akses lebih lanjut.
sumber
Netflix mengimplementasikan pengaturan Anda dan merilis beberapa perangkat lunak gratis untuk membantu situasi itu.
Lihat video ini https://www.oreilly.com/learning/how-netflix-gives-all-its-engineers-ssh-access atau presentasi ini di https://speakerdeck.com/rlewis/how-netflix-gives- all-its-engineer-ssh-access-to-instance-running-in-production dengan titik inti:
Perangkat lunak mereka tersedia di sini: https://github.com/Netflix/bless
Beberapa hal yang menarik bahkan jika Anda tidak menerapkan seluruh solusi mereka:
sumber
SPS OneIdentity (ex-Balabit) adalah hal yang persis Anda butuhkan dalam skenario ini. Dengan alat ini Anda dapat mengelola identitas pengguna pada dasarnya mesin apa pun, melacak perilaku pengguna, memantau dan mengingatkan, dan mengindeks apa pun yang dilakukan pengguna untuk ditinjau nanti.
sumber
Saran saya adalah untuk melarang akses SSH dari mesin pengguna.
Sebaliknya Anda harus
Model pelaksanaan sampel,
ATAU
Jika Anda terbatas dengan sumber daya server, server Jenkins yang sama dapat meng-host Git (scm-manager) juga, meskipun ada risiko keamanan tambahan jika salah satu mesin pengembang terinfeksi. Anda mungkin dapat mengurangi ini dengan memutuskan koneksi server Jenkins dari internet, dan menyelesaikan dependensi yang dimungkinkan secara lokal.
sumber