Idenya adalah untuk meletakkan semua data sensitif kami [...]
Arti "semua" dalam kalimat ini harus dianalisis dengan sangat hati-hati sebelum mengimplementasikan solusi yang Anda rencanakan.
Vault yang dimungkinkan adalah alat yang sangat berguna, tetapi harus digunakan hanya untuk menyimpan rahasia yang:
- Diperlukan khusus untuk penyebaran yang mungkin
- Mudah membuat tidak berguna bagi pemilik yang seharusnya tidak menyadarinya, tetapi yang mungkin secara tidak sah "mengingat" mereka (biasanya karyawan yang tidak naik pesawat)
Poin kedua sangat penting.
Banyak orang, dan kemungkinan seluruh tim DevOps, akan memiliki akses ke kata sandi brankas yang dimungkinkan dan karenanya semua rahasia.
Oleh karena itu, untuk semua rahasia yang disimpan dalam lemari besi, suatu kondisi harus berlaku di mana seseorang atau mesin dengan akses tidak sah ke mereka harus tidak mampu memanfaatkannya jika diinginkan.
Secara konkret, jika Anda menggunakan yang memungkinkan untuk menggunakan basis data dan penggunanya, Anda dapat menyimpan kata sandi di brankas, tetapi Anda harus sangat berhati-hati (dan kemungkinan besar mempertimbangkan solusi lain) jika layanan itu akan tersedia dari Internet dan tanpa perlu otentikasi VPN apa pun!
Pengguna (DevOps) yang terpapar rahasia, harus tidak mampu menggunakan kata sandi "ingat" jika satu penghalang keamanan dikenakan pada mereka (misalnya, akses VPN dibatalkan). Selain itu, akses ke repositori kode sumber (tempat penyimpanan vault) juga harus dicabut sebelum kata sandi diubah.
Dalam kondisi ini, anault vault adalah alat yang sangat berguna.
Mencoba menyimpan rahasia yang dapat digunakan oleh siapa pun atau mesin di Internet dalam brankas akan menjadi kesalahan (misalnya, kredensial pengguna VPN).
Apakah ada opsi lain, yang merupakan cara terbaik (dan aman) untuk menyimpan kata sandi yang dimungkinkan
Dalam kondisi dari paragraf sebelumnya, saya pikir praktik yang baik adalah:
- Simpan kata sandi vault dalam brankas eksternal yang aman (sesuatu seperti Vault dari HashiCorp atau SaaS apa pun untuk manajemen kredensial)
- Izinkan akses ke item vault eksternal ke DevOps (mereka akan memerlukan kata sandi untuk pengujian) dan sistem CI / CD atau pengontrol yang memungkinkan
Simpan konvensi untuk menggunakan rahasia ! Anda tidak akan dapat meninjau perubahan pada rahasia dan Anda tidak akan dapat menerima variabel yang mungkin dalam file rahasia! Jadi berhati-hatilah sejak awal. Konvensi yang baik adalah memberi nama semua variabel yang disimpan dalam brankas yang dimungkinkan dengan secret_
awalan. Ketika Anda akan melihat sesuatu seperti:
postgres.yml:
postgres_password: "{{ secret_postgres_password }}"
Anda akan tahu bahwa nilainya disimpan dalam brankas yang dimungkinkan.