Magazin de parametri AWS și variabile de mediu

În acest articol, mă voi uita dacă și când ar trebui utilizat AWS Parameter Store pentru a înlocui variabilele de mediu din infrastructura AWS. Nu voi privi care sunt fiecare dintre acestea sau cum să le configurezi într-un mod aprofundat, ci mai degrabă o comparație între cele două.

Un caz pentru variabilele de mediu

Ușor de configurat

Este destul de simplu să obțineți configurarea cu variabile de mediu. Nodul, de exemplu, are un modul dotenv care poate fi instalat prin npm cu o singură comandă:

npm instala dotenv

Trebuie să ne asigurăm că dotenv are un punct de intrare undeva în scriptul nostru, de obicei printr-o declarație de cerere -

nevoie ( 'dotenv'). config ()

De aici, tot ce trebuie să facem este să adăugăm variabilele noastre de mediu într-un fișier .env plasat în folderul rădăcină al proiectului.

Puteți găsi mai multe informații despre modulul dotenv aici:

Trebuie menționat că Magazinul de parametri nu împărtășește inițial aceleași aspecte în ușurință de configurare - dacă nu ați lucrat niciodată cu Parameter Store înainte, procesul de configurare poate părea destul de laborios cu câteva lucruri de luat în considerare:

  • Aveți nevoie de acces la un cont AWS
  • Trebuie să știți cum să navigați pe tabloul de bord AWS - în special în secțiunea SSM.
  • Parametrii sensibili / securizați trebuie criptați cu KMS - care în sine necesită o configurație suplimentară (https://aws.amazon.com/kms/)
  • În funcție de nevoile dvs., este posibil să aveți nevoie de cunoștințe de configurare a altor servicii AWS, cum ar fi IAM și SSM, pentru ca magazinul de parametri să funcționeze corect.
  • Toți parametrii sunt găzduiți pe cloud care necesită acces programatic IAM, ceea ce înseamnă că este necesară o conexiune neîntreruptă (trebuie menționat că setările locale pot fi create cu variabile locale care pot fi utilizate în locul variabilelor Magazin de parametri în funcție de situație - I ar încuraja de fapt acest tip de abordare).

Ușor de actualizat în timpul dezvoltării, desfășurării și testării

Variabilele de mediu pot fi ușor actualizate prin fișierul .env menționat și modulul dotenv. Variante ale acestui fișier pot fi, de asemenea, create și utilizate pentru a se potrivi cu fiecare mediu relevant. Importarea variabilelor noastre de mediu într-un scenariu de testare funcționează în același mod (importarea trimiterilor din fișierul dotenv relevant).

Pentru implementarea pe un server de înregistrare sau de producție, tot ce am face este să folosim o versiune alternativă a fișierului .env. Acest lucru se poate face cu ușurință ignorând fișierul .env existent în sistemul dvs. de control al versiunii local (de obicei git) și crearea unei noi copii pe fiecare etapă / instanță a serverului.

Variabilele de mediu se integrează de asemenea frumos cu sistemele de integrare continuă (CI). Circle CI, de exemplu, are o secțiune dedicată pentru gestionarea variabilelor de mediu, unde pot fi adăugate la un nivel de construire a proiectului și actualizate într-un singur loc când sunt gata pentru implementare -

Din perspectiva unui magazin de parametri, este agnostic limbaj / cadru, ceea ce înseamnă că orice configurare va trebui să fie făcută manual folosind un SDK AWS cu acces programatic la serviciul Magazin de parametri, sau în mod similar printr-un furnizor terță parte (cum ar fi un modul npm) . Deși AWS și serviciile sale reprezintă etalonul pentru standardele de securitate în domeniul cloud computing, modulele personalizate pe care s-ar putea să doriți să le dezvoltați sau să le utilizeze pot avea vulnerabilități de securitate din cauza răutății sau supravegherii - având în vedere că există module acceptate pentru industrie pentru aceasta. întreținute și aprobate de entități de încredere, cum ar fi AWS în sine.

Din perspectiva implementării / testării, Magazinul de parametri vine, de asemenea, cu un set unic de provocări, deși există abordări sugerate, cum și când alegeți să interacționați cu Magazinul de parametri depinde în totalitate de dvs..

Variabilele de mediu sunt libere de utilizat

Deși AWS Parameter Store nu include taxe suplimentare (https://aws.amazon.com/systems-manager/pricing), structura prețurilor Amazon pentru serviciile conexe, cum ar fi KMS (https://aws.amazon.com/kms/pricing ) va începe să suporte costuri suplimentare pe baza utilizării. Pe de altă parte, utilizarea variabilelor de mediu este gratuită.

Deci de ce să înlocuim variabilele de mediu? : un caz pentru magazinul de parametri

Până în acest moment, soluția de variabilă a mediului de vanilie pare să tundă Magazinul de parametri în cursa pentru dominarea pe arena variabilă scenă / sigură. În timp ce Magazinul de parametri pare să creeze mai multe provocări decât rezolvă în acest moment, există totuși câteva lucruri, care, în mod indiscutabil, Magazinul de parametri face mai bine decât variabilele de mediu:

Variabilele magazinului de parametri pot fi partajate în mai multe proiecte

Cea mai bună configurație pe care am găsit-o pentru partajarea variabilelor de mediu în cadrul proiectelor este utilizarea unui proces de implementare automatizat care preia variabile de mediu dintr-un fișier conținut într-o entitate partajată, cum ar fi o găleată S3 care se conectează la configurația proiectului după cum este necesar (de obicei, se face printr-un script care este rulat dintr-un serviciu CI). Din experiența anterioară, aceasta este cea mai viabilă opțiune semantică (vă rugăm să anunțați dacă aveți experiență cu alte opțiuni mai bune). Acesta este, din păcate, un exercițiu obositor inițial și, în cele din urmă, nu este un lucru pe care ți-ai dori să-l întreții manual pe termen lung, ceea ce se datorează mai ales faptului că eventualele greșeli sau supravegheri de-a lungul drumului atunci când îl configurați sau îl mențineți ar putea duce la probleme.

Tot ceea ce putem transmite unui serviciu AWS pentru a le automatiza, ar trebui să fie și de aici strălucește magazinul de parametri. Partajarea cheilor KMS și a variabilelor Magazin de parametri în cadrul proiectelor este de neconceput.

Vreau să fac pas înapoi și să privesc AWS dintr-o perspectivă holistică. Amazon a făcut o treabă excelentă în gestionarea fiecărui aspect al cloud computing-ului și are o multitudine de echipe de dezvoltare dedicate unor servicii specifice pe care tu și eu nu le vom putea reda niciodată. În cele din urmă, înseamnă că, după ce ați cumpărat în „experiența” Amazon, ar trebui să folosiți toate serviciile concepute pentru a lucra împreună sub bannerul infrastructurii cloud AWS. Deși are problemele sale (cum ar fi tu și cu mine, acum suntem complet blocați în AWS ca furnizor de servicii), în cele din urmă este mai ușor să descarci tot ce poți pentru ei, deoarece este un lucru mai puțin care trebuie să îți faci griji - chiar dacă costă puțin în plus.

Magazinul de parametri poate utiliza controlul accesului

Deținerea unui control specific asupra accesului utilizatorului face ca serviciul IAM să fie unul dintre cele mai mari atribute ale AWS, în special atunci când vine vorba de tratarea informațiilor potențial sensibile, cum ar fi tastele API sau parolele. Conceptul de control al accesului la variabilele de mediu în sensul vaniliei (de exemplu, folosind abordarea dotenv) nu este doar o opțiune (cu excepția cazului în care sunteți dispus să dezvoltați propria soluție personalizată - sau să vă mutați în afara domeniului „cele mai bune practici”).

Valorile magazinului de parametri sunt ușor actualizate

Pentru a actualiza toate valorile din Magazinul dvs. de parametri, tot ce aveți nevoie este accesul adecvat la tabloul de bord AWS (sau CLI), ceea ce înseamnă că chiar și membrii echipei care nu sunt tehnice pot actualiza valorile cu o experiență de bord AWS.

Pe partea variabilă de mediu a argumentului, actualizarea variabilelor de mediu devine problematică, deoarece, de regulă, doar membrii echipei calificate care au acces la permisiunile de actualizare a serverului vor putea să le acceseze și să le actualizeze. În plus, acest lucru deschide proiectul dvs. la un nivel de vulnerabilitate, deoarece logarea într-un server și actualizarea fișierelor proiectului principal din mers (chiar și pe o configurație automatizată) pot duce la probleme.

KMS poate cripta ușor valorile Magazinului de parametri

Deși configurarea inițială a valorilor de criptare în Parameter Store poate părea un pic descurajantă, odată ce te obișnuiești, este destul de simplă și are mult sens - chiar și din perspectivă non-tehnică. Acesta este, de asemenea, un mare strat de securitate care este adăugat, în afara de cutie.

Este posibil să utilizați criptarea pentru variabile de mediu pe care poate nu doriți să le stocați în text simplu, dar acest lucru poate fi dificil de configurat și întreținut manual.

Variabilele magazinului de parametri pot fi organizate

Parametrii de producție și stadializare sunt gestionați într-un singur loc atunci când folosiți Magazinul de parametri, care include parametrii de sortare și filtrare și chiar adăugarea de descrieri pentru a clarifica scopul lor.

Dintr-o perspectivă de variabilă a mediului, nu veți obține o organizație variabilă exclusivă. A avea câteva variabile de mediu poate fi destul de ușor de gestionat, dar acest lucru devine problematic atunci când există prea multe variabile de gestionat manual. Poate fi posibilă organizarea variabilelor de mediu în fișiere și foldere diferite, dar nu există o soluție viabilă din punct de vedere extern, care nu pare să complice inutil lucrurile.

În cele din urmă, decizia în legătură cu care dintre cele două soluții de utilizat ar trebui să fie determinată de complexitatea și sfera de aplicare a proiectului, ținând cont de factorii menționați mai sus.

Concluzie

Există și alți factori de luat în considerare atunci când alegeți dacă folosiți Magazinul de parametri sau variabilele de mediu pentru a vă gestiona parametrii de etapă / securizare, dar, în speranță, în acest articol le-am acoperit pe cele importante.

Dacă aveți și alți factori pe care considerați că merită luați în considerare, aș dori să vă aud gândurile.