Cum să automatizați orchestrarea drepturilor de acces în cadrul AWS S3 Bucket în 3 pași simpli

Organizarea accesului la date în cloud: O abordare eficientă cu AWS S3

În era serverelor Unix locale, gestionarea accesului la foldere era o sarcină esențială pentru companii. Se elaborau strategii complexe pentru a controla permisiunile, asigurând că utilizatorii pot accesa doar informațiile relevante.

De obicei, o platformă deserveste diverse grupuri cu interese distincte, cerințe de confidențialitate specifice și definiții diferite ale conținutului. Organizațiile globale, de exemplu, pot segmenta conținutul pe baza locației, adaptând accesul în funcție de țara utilizatorului.

Alte scenarii frecvente includ:

  • Separarea datelor între mediile de dezvoltare, testare și producție.
  • Restricționarea accesului la conținutul de vânzări, care nu este destinat publicului larg.
  • Limitarea accesului la conținut legislativ specific unei țări, evitând vizualizarea sa în alte regiuni.
  • Gestionarea accesului la datele de conducere, care trebuie distribuite unui grup restrâns de persoane.

Lista de exemple este vastă, evidențiind necesitatea de a gestiona permisiunile de acces la fișiere și date pentru toți utilizatorii platformei.

În cazul soluțiilor locale, administratorii de sistem configurau reguli, utilizau instrumente specifice și mapau utilizatorii în grupuri. Aceste grupuri erau apoi asociate cu foldere sau puncte de montare, cu permisiuni de citire sau citire și scriere.

În contextul platformelor cloud, cum ar fi AWS, ne așteptăm la cerințe similare privind restricțiile de acces. Totuși, abordarea este diferită, deoarece fișierele nu mai sunt stocate pe servere Unix, ci în cloud, în „găleți” S3, accesibile la nivelul întregii organizații sau chiar global.

În continuare, vom prezenta o metodă alternativă pentru a aborda această provocare, bazată pe experiența practică dobândită în timpul proiectării unor astfel de soluții.

O abordare simplă, dar manuală

O metodă simplă de gestionare a accesului, fără automatizare, presupune:

  • Crearea unei găleți separate pentru fiecare grup distinct de utilizatori.
  • Atribuirea drepturilor de acces la fiecare găleată, astfel încât doar grupul corespunzător să o poată accesa.

Deși această abordare este ușor de implementat rapid, ea vine cu anumite limitări.

În mod implicit, un cont AWS poate crea maximum 100 de găleți S3. Această limită poate fi extinsă la 1000 printr-o solicitare către AWS. Dacă aceste limite nu reprezintă o problemă, fiecare grup de utilizatori poate opera în propria găleată S3.

Problemele apar atunci când anumite grupuri au responsabilități interfuncționale sau când unii utilizatori au nevoie de acces la conținut din mai multe domenii. De exemplu:

  • Analiștii de date pot evalua informații din diverse zone sau regiuni.
  • Echipele de testare pot partaja servicii pentru diverse echipe de dezvoltare.
  • Utilizatorii care creează rapoarte au nevoie de acces la date din mai multe țări dintr-o regiune.

Această listă poate crește rapid, iar necesitățile organizațiilor pot genera diverse scenarii de utilizare.

Pe măsură ce complexitatea crește, este necesară o orchestrare mai sofisticată a drepturilor de acces. Vor fi necesare instrumente suplimentare și chiar o resursă dedicată pentru a actualiza listele de acces.

Deci, cum putem realiza același lucru într-un mod mai organizat și automat?

Dacă abordarea „un grup, o găleată” nu funcționează, soluția va implica utilizarea găleților partajate de mai multe grupuri. În aceste situații, logica de atribuire a permisiunilor trebuie să fie ușor de actualizat și de modificat.

O modalitate de a realiza acest lucru este utilizarea etichetelor (tag-urilor) pe gălețile S3. Se recomandă utilizarea tag-urilor pentru o clasificare mai ușoară a facturării, dar și pentru a permite modificarea rapidă a configurației găleții.

Dacă logica se bazează pe tag-urile găleții, se poate schimba rapid scopul găleții doar modificând valorile etichetelor.

Ce tipuri de etichete să utilizăm?

Aceasta depinde de cerințele specifice. De exemplu:

  • Se pot separa gălețile în funcție de tipul mediului, cu etichete precum „ENV” și valorile „DEV”, „TEST”, „PROD”.
  • Se pot separa echipele pe țară, cu o etichetă „COUNTRY” și numele țării corespunzătoare.
  • Utilizatorii pot fi separați pe departamente, cu eticheta „USER_TYPE” și valorile corespunzătoare.
  • Se poate defini o structură fixă de foldere pentru anumite grupuri, specificând directoare precum „date/import”, „date/processed”, „date/error”.

Ideal, etichetele trebuie să poată fi combinate logic pentru a forma o structură completă de foldere în interiorul găleții.

De exemplu, putem combina etichetele de mai sus pentru a construi o structură dedicată diferitelor tipuri de utilizatori din diverse țări, cu foldere de import predefinite:

  • ///<ȚARĂ>/

Prin modificarea valorii , putem redefini scopul găleții (de la testare la producție).

Acest lucru permite utilizarea aceleiași găleți de către mulți utilizatori. Gălețile nu au foldere în mod explicit, dar etichetele funcționează ca subfoldere, deoarece utilizatorii trebuie să parcurgă o serie de etichete pentru a ajunge la datele lor.

După definirea etichetelor, următorul pas este crearea politicilor de grup S3 care să utilizeze aceste etichete.

Politicile dinamice utilizează numele etichetelor, comportându-se diferit pentru găleți cu valori de etichetă diferite. Acest lucru necesită codificarea personalizată a politicilor, dar se poate utiliza editorul de politici Amazon AWS pentru a simplifica procesul.

În cadrul politicii, se definesc drepturile de acces și nivelul lor (citire, scriere). Logica va citi etichetele și va crea structura de foldere, atribuind permisiunile corespunzătoare.

Avantajul unei politici dinamice este că o singură politică poate fi atribuită mai multor găleți. Politica se va comporta diferit, dar va respecta întotdeauna așteptările, în funcție de valorile etichetelor.

Aceasta este o modalitate eficientă de a gestiona permisiunile de acces centralizat pentru un număr mare de găleți, unde se așteaptă ca fiecare grup să urmeze o structură comună.

Automatizarea integrării noilor entități

După ce politicile dinamice au fost definite și atribuite, utilizatorii pot începe să utilizeze gălețile fără riscul de a accesa conținutul altor grupuri. De asemenea, utilizatorii cu acces mai larg vor putea accesa datele cu ușurință, deoarece acestea sunt stocate în aceeași găleată.

Pasul final este simplificarea integrării noilor utilizatori, găleți și etichete. Acest lucru necesită codificare personalizată, care nu trebuie să fie complexă, dacă procesul de integrare are reguli clare, care pot fi încapsulate într-un algoritm simplu.

Se poate crea un script executabil prin comanda AWS CLI, cu parametrii necesari pentru a integra o nouă entitate. Sau poate fi o serie de scripturi executabile într-o anumită ordine, cum ar fi:

  • create_new_bucket(,,,, ..)
  • create_new_tag(,,)
  • update_existing_tag(,,)
  • create_user_group(,<țară>,)

Ați înțeles ideea. 😃

Un sfat de profesionist 👨‍💻

Politicile dinamice pot fi folosite nu doar pentru drepturile de acces la foldere, ci și pentru a atribui automat drepturi de serviciu pentru găleți și grupuri de utilizatori!

Tot ce este necesar este să extindem lista de etichete de pe găleți și să adăugăm drepturile de acces la politicile dinamice pentru a utiliza anumite servicii pentru anumite grupuri.

De exemplu, un grup de utilizatori poate avea nevoie și de acces la serverul cluster al bazei de date. Acest lucru se poate realiza prin politicile dinamice, mai ales dacă accesul la servicii este bazat pe roluri. Se adaugă cod la politica dinamică care procesează etichetele referitoare la clusterul bazei de date și atribuie privilegii direct acelui cluster și grupului de utilizatori.

În acest mod, integrarea unui nou grup de utilizatori se va face prin această politică dinamică unică, care poate fi refolosită pentru diverse grupuri, chiar dacă acestea utilizează servicii diferite.

De asemenea, puteți arunca o privire asupra acestor comenzi AWS S3 pentru a gestiona gălețile și datele.