Tarik pembaruan, jangan mendorong
Ketika Anda mengukur, itu akan menjadi tidak mungkin untuk melakukan pembaruan push untuk semua produk Anda.
- Anda harus melacak setiap pelanggan, yang masing-masing mungkin memiliki konfigurasi firewall yang berbeda.
- Anda harus membuat koneksi masuk melalui firewall pelanggan, yang akan memerlukan penerusan porta atau mekanisme serupa lainnya. Ini adalah risiko keamanan bagi pelanggan Anda
Alih-alih, mintalah produk Anda 'menarik' pembaruan mereka secara berkala, dan kemudian Anda dapat menambahkan kapasitas sisi server saat Anda tumbuh.
Bagaimana?
Masalah ini sudah dipecahkan, seperti yang Anda sarankan. Inilah beberapa pendekatan yang bisa saya pikirkan.
- menggunakan apt : Gunakan sistem apt bawaan dengan PPA khusus dan daftar sumber. Bagaimana saya menyiapkan PPA?
- Con: Kecuali jika Anda menggunakan layanan hosting publik seperti launchpad, Menyiapkan sistem pengemasan PPA + Anda sendiri bukan untuk menjadi lemah hati.
- menggunakan ssh : Menghasilkan kunci publik SSH untuk setiap produk, dan kemudian menambahkan kunci perangkat itu ke server pembaruan Anda. Kemudian, cukup minta perangkat lunak
rsync
/ scp
file Anda
- Con: Harus melacak (dan mencadangkan!) Semua kunci publik untuk setiap produk yang Anda kirim.
- Pro : Lebih aman daripada unduhan mentah, karena satu-satunya perangkat yang dapat mengakses pembaruan adalah yang memiliki kunci publik yang diinstal.
unduhan mentah + cek tanda tangan :
- Posting file pembaruan yang ditandatangani di suatu tempat (Amazon S3, server FTP, dll)
- Produk Anda secara berkala memeriksa file pembaruan yang akan diubah, dan kemudian mengunduh / memverifikasi tanda tangan.
- Kontra : Bergantung pada bagaimana Anda menggunakan ini, file-file tersebut mungkin dapat diakses oleh umum (yang dapat membuat produk Anda lebih mudah untuk dibalik-balikkan rekayasa dan retas)
ansible : Ansible adalah alat yang hebat untuk mengelola konfigurasi sistem. Ini di ranah boneka / koki, tetapi tanpa agen (menggunakan python) dan dirancang untuk menjadi idempoten. Jika menggunakan perangkat lunak Anda akan membutuhkan skrip bash yang rumit, saya akan menggunakan alat seperti ini untuk membuatnya tidak terlalu rumit untuk melakukan pembaruan Anda.
Tentu saja, ada cara lain untuk melakukan ini .. Tapi itu membawa saya ke poin penting.
Tanda tangani / validasikan pembaruan Anda!
Tidak peduli apa yang Anda lakukan, itu penting bahwa Anda memiliki mekanisme untuk memastikan bahwa update Anda belum dirusak. Pengguna jahat dapat menyamar sebagai server pembaruan Anda di salah satu dari konfigurasi di atas. Jika Anda tidak memvalidasi pembaruan Anda, kotak Anda jauh lebih mudah untuk diretas dan masuk.
Cara yang baik untuk melakukannya adalah dengan menandatangani file pembaruan Anda. Anda harus memiliki sertifikat (atau membayar seseorang untuk melakukannya), tetapi Anda dapat menginstal sidik jari pada setiap perangkat Anda sebelum mengirimkannya sehingga mereka dapat menolak pembaruan yang telah dirusak.
Keamanan fisik
Tentu saja, jika seseorang memiliki akses fisik ke penyebaran pelanggan, mereka dapat dengan mudah mengambil alih server. Tapi setidaknya mereka tidak bisa menyerang penyebaran lain! Keamanan fisik kemungkinan merupakan tanggung jawab pelanggan Anda.
Jika Anda mau sejenak, bayangkan apa yang akan terjadi jika Anda menggunakan jaringan OpenVPN yang besar untuk pembaruan ... Mereka kemudian dapat menggunakan server yang dikompromikan untuk menyerang setiap instance pada VPN
Keamanan
Apa pun yang Anda lakukan, keamanan harus dibangun sejak awal. Jangan berhemat di sini - Anda akan menyesal pada akhirnya jika melakukannya.
Sepenuhnya mengamankan sistem pembaruan ini berada di luar jangkauan pos ini, dan saya sangat menyarankan untuk menyewa konsultan jika Anda atau seseorang di tim Anda tidak memiliki pengetahuan di bidang ini. Layak setiap sen.