AWS Parameter Store vs Variabel Lingkungan

Pada artikel ini saya akan melihat apakah dan kapan AWS Parameter Store harus digunakan untuk mengganti variabel lingkungan dalam infrastruktur AWS. Saya tidak akan melihat apa masing-masing atau bagaimana mengaturnya dengan cara yang mendalam tetapi perbandingan antara keduanya.

Kasus untuk variabel lingkungan

Mudah diatur

Cukup mudah untuk mendapatkan pengaturan dengan variabel lingkungan. Node, misalnya, memiliki modul dotenv yang dapat diinstal melalui npm dengan satu perintah:

npm instal dotenv

Kita perlu memastikan bahwa dotenv memiliki titik masuk di suatu tempat dalam skrip kita, biasanya melalui pernyataan yang diperlukan -

memerlukan ('dotenv'). config ()

Dari sini, yang perlu kita lakukan adalah menambahkan variabel lingkungan kita ke file .env yang ditempatkan di folder root proyek.

Anda dapat menemukan informasi lebih lanjut tentang modul dotenv di sini:

Perlu dicatat bahwa Parameter Store pada awalnya tidak berbagi aspek yang sama dalam kemudahan pengaturan - jika Anda belum pernah bekerja dengan Parameter Store sebelumnya, proses pengaturan tampaknya cukup melelahkan dengan beberapa hal yang perlu dipertimbangkan:

  • Anda memerlukan akses ke akun AWS
  • Anda perlu tahu cara menavigasi dashboard AWS - khususnya bagian SSM.
  • Parameter sensitif / aman harus dienkripsi dengan KMS - yang dengan sendirinya memerlukan beberapa pengaturan tambahan (https://aws.amazon.com/kms/)
  • Bergantung pada kebutuhan Anda, Anda mungkin memerlukan pengetahuan konfigurasi layanan AWS lainnya seperti pesanan IAM dan SSM agar Parameter Store berfungsi dengan benar.
  • Semua parameter di-host di cloud yang memerlukan akses program IAM, yang berarti koneksi yang tidak terputus diperlukan (perlu dicatat bahwa pengaturan lokal yang dipesan lebih dahulu dapat dibuat dengan variabel lokal yang dapat digunakan sebagai pengganti variabel Parameter Store tergantung pada situasi— I sebenarnya akan mendorong pendekatan semacam ini).

Mudah diperbarui selama pengembangan, penerapan, dan pengujian

Variabel lingkungan dapat dengan mudah diperbarui melalui file .env dan modul dotenv yang disebutkan di atas. Variasi dari file ini juga dapat dibuat dan digunakan untuk disesuaikan dengan setiap lingkungan yang relevan. Mengimpor variabel lingkungan kami dalam skenario pengujian bekerja dengan cara yang sama (mengimpor env vars dari file dotenv yang relevan).

Untuk menyebarkan ke server pementasan atau produksi, semua yang akan kita lakukan adalah menggunakan versi alternatif dari file .env. Ini dapat dengan mudah dilakukan dengan mengabaikan file .env yang ada di sistem kontrol versi Anda secara lokal (biasanya git) dan membuat salinan baru pada setiap instance stage / server.

Variabel lingkungan juga terintegrasi dengan baik dengan Continuous Integration systems (CI). Circle CI, misalnya, memiliki bagian khusus untuk mengelola variabel lingkungan di mana mereka dapat ditambahkan pada tingkat pembangunan proyek dan diperbarui di satu tempat ketika siap untuk ditempatkan -

Dari perspektif Toko Parameter, ini adalah bahasa / kerangka kerja agnostik, artinya semua pengaturan harus dilakukan secara manual menggunakan AWS SDK dengan akses terprogram ke layanan Parameter Store, atau dengan cara yang sama melalui penyedia pihak ketiga (seperti modul npm) . Sementara AWS dan layanannya adalah tolok ukur untuk standar keamanan dalam domain komputasi awan, modul khusus yang mungkin ingin Anda kembangkan atau manfaatkan mungkin memiliki kerentanan keamanan karena kedengkian atau pengawasan - mengingat bahwa ada modul yang diterima industri untuk hal ini yang dikelola dan didukung oleh entitas tepercaya seperti AWS sendiri.

Dari perspektif penerapan / pengujian, Parameter Store juga dilengkapi dengan serangkaian tantangan yang unik, seolah-olah ada pendekatan yang disarankan, bagaimana dan kapan Anda memilih untuk berinteraksi dengan Parameter Store sepenuhnya terserah Anda.

Variabel Lingkungan bebas untuk digunakan

Meskipun AWS Parameter Store tidak termasuk biaya tambahan (https://aws.amazon.com/systems-manager/pricing), struktur penetapan harga Amazon untuk layanan terkait seperti KMS (https://aws.amazon.com/kms/pricing ) akan mulai mengeluarkan biaya tambahan berdasarkan penggunaan. Di sisi lain, menggunakan variabel lingkungan adalah gratis.

Jadi mengapa mengganti variabel lingkungan? : kasus untuk Toko Parameter

Hingga saat ini solusi variabel lingkungan vanila tampaknya merayap Parameter Store dalam perlombaan untuk dominasi di panggung / arena variabel aman. Sementara Parameter Store tampaknya menciptakan lebih banyak tantangan daripada yang dipecahkan pada saat ini, ada beberapa hal, bagaimanapun, Parameter Store tidak diragukan melakukan lebih baik daripada variabel lingkungan:

Variabel Toko Parameter dapat dibagi di beberapa proyek

Pengaturan terbaik yang saya temukan untuk berbagi variabel lingkungan di seluruh proyek adalah dengan menggunakan proses penyebaran otomatis yang mengambil variabel lingkungan dari file yang terdapat dalam entitas bersama, seperti ember S3 yang dihubungkan ke konfigurasi proyek sesuai kebutuhan (biasanya dilakukan melalui skrip yang dijalankan dari layanan CI). Dari pengalaman sebelumnya, ini adalah opsi yang paling layak secara semantik (beri tahu saya jika Anda memiliki pengalaman dengan opsi yang lebih baik). Sayangnya ini adalah latihan yang membosankan pada awalnya dan pada akhirnya bukan sesuatu yang ingin Anda pertahankan secara manual dalam jangka panjang, terutama karena kesalahan atau kekeliruan yang terjadi saat menyiapkan atau mempertahankannya dapat menyebabkan masalah.

Segala sesuatu yang dapat kita serahkan ke layanan AWS untuk diotomatisasi, kita harus dan di sinilah Parameter Store bersinar. Berbagi kunci KMS dan variabel Parameter Store di seluruh proyek keluar dari kotak.

Saya ingin mengambil langkah mundur dan melihat AWS dari perspektif holistik. Amazon telah melakukan pekerjaan yang hebat dalam mengelola setiap aspek komputasi awan, dan memiliki banyak tim pengembang yang didedikasikan untuk layanan spesifik yang Anda dan saya tidak akan pernah bisa tiru. Ini pada akhirnya berarti bahwa setelah Anda membeli ke dalam 'pengalaman' Amazon, Anda harus menggunakan semua layanan yang dirancang untuk bekerja bersama di bawah panji infrastruktur cloud AWS. Meskipun memiliki masalah (seperti Anda dan saya sekarang benar-benar terkunci ke AWS sebagai penyedia layanan), pada akhirnya lebih mudah untuk melepas semua yang Anda bisa kepada mereka, karena itu adalah satu hal yang kurang perlu Anda khawatirkan - bahkan jika itu biayanya sedikit ekstra.

Parameter Store dapat menggunakan kontrol akses

Memiliki kontrol khusus terhadap akses pengguna menjadikan layanan IAM sebagai salah satu atribut AWS terbesar, terutama dalam hal berurusan dengan informasi yang berpotensi sensitif seperti kunci API atau kata sandi. Konsep mengendalikan akses ke variabel lingkungan dalam pengertian vanilla (mis. Menggunakan pendekatan dotenv) bukan pilihan (kecuali Anda bersedia mengembangkan solusi Anda sendiri yang dipesan sebelumnya - atau pindah ke luar bidang 'praktik terbaik').

Nilai-nilai Parameter Store mudah diperbarui

Untuk memperbarui nilai apa pun di Parameter Store Anda, yang Anda butuhkan adalah akses yang sesuai ke dasbor AWS Anda (atau CLI), artinya bahkan anggota tim non-teknis dapat memperbarui nilai dengan sedikit pengalaman dasbor AWS.

Pada sisi variabel lingkungan dari argumen memperbarui variabel lingkungan menjadi bermasalah karena biasanya hanya anggota tim yang terampil yang memiliki akses ke izin pembaruan server yang akan dapat mengakses dan memperbarui ini. Selain itu ini membuka proyek Anda ke lapisan kerentanan, karena masuk ke server dan memperbarui file proyek inti dengan cepat (bahkan pada pengaturan otomatis) dapat menyebabkan masalah.

KMS dapat mengenkripsi nilai-nilai Parameter Store dengan mudah

Meskipun pengaturan awal mengenkripsi nilai di Parameter Store mungkin tampak agak menakutkan, setelah Anda terbiasa, itu cukup sederhana dan masuk akal - bahkan dari sudut pandang non teknis. Ini juga merupakan lapisan keamanan yang hebat yang ditambahkan, out-of-the-box.

Dimungkinkan untuk menggunakan enkripsi untuk variabel lingkungan yang Anda mungkin tidak ingin menyimpannya dalam teks biasa, tetapi ini bisa sulit untuk diatur dan dipelihara secara manual.

Variabel Toko Parameter dapat diatur

Parameter Produksi dan Pementasan dikelola di satu tempat saat menggunakan Toko Parameter, yang mencakup parameter penyortiran dan pemfilteran dan bahkan menambahkan deskripsi untuk memperjelas tujuannya.

Dari perspektif variabel lingkungan, Anda tidak akan keluar dari organisasi variabel out-of-the-box. Memiliki beberapa variabel lingkungan mungkin cukup mudah untuk dikelola, tetapi ini menjadi bermasalah ketika ada terlalu banyak variabel untuk dikelola secara manual. Dimungkinkan untuk mengatur variabel lingkungan ke dalam file dan folder yang berbeda, tetapi sebenarnya tidak ada solusi out-of-the-box yang layak untuk ini yang sepertinya tidak mempersulit hal-hal yang tidak perlu.

Pada akhirnya, keputusan mengenai mana dari dua solusi yang digunakan harus ditentukan oleh kompleksitas dan ruang lingkup proyek, dengan mempertimbangkan faktor-faktor yang disebutkan di atas.

Kesimpulan

Ada faktor-faktor lain yang perlu dipertimbangkan ketika memilih apakah akan menggunakan Parameter Store atau variabel lingkungan untuk mengelola tahap / parameter aman Anda, tetapi mudah-mudahan dalam artikel ini kami telah membahas yang penting.

Jika Anda memiliki faktor lain yang menurut Anda layak dipertimbangkan, saya ingin mendengar pendapat Anda.