Cum să accesați secretele API folosind AWS Lambda?

Cum Sa Accesati Secretele Api Folosind Aws Lambda



Cele mai bune practici ale serviciilor AWS implică două acțiuni și anume, Store-Retrieve și Audit-Rotate. Combinând aceste două practici într-una singură, AWS a lansat Secret Manager care ajută utilizatorul să protejeze informațiile secrete ale aplicațiilor lor. AWS Secret Manager este utilizat pe scară largă pentru a crea, depozitarea , modificând , replicându-se și acreditările rotative ale bazei de date, chei API, jetoane OAuth etc.

Schiță rapidă

Acest articol acoperă următoarele aspecte:

Ce este AWS Lambda?

AWS Lambda este un serviciu de calcul pentru executarea codurilor în mai multe medii și limbi fără a furniza și gestiona serverele. În plus, AWS Lambda poate fi declanșat de mai multe servicii diferite ale AWS, cum ar fi bucket S3, API Gateways etc. Acest serviciu scalează automat aplicația și execută eficient codul, fără a solicita utilizatorului să instaleze dependențe suplimentare.







Pentru a afla mai multe despre serviciul Lambda, consultați acest articol aici: „Noțiuni introductive cu AWS Lambda” .



Ce este AWS Secret Manager?

AWS Secret Manager le permite utilizatorilor să securizeze și să cripteze informații confidențiale de aplicații, cum ar fi jetoanele OAuth, acreditările bazei de date, API-urile etc. Aceste informații confidențiale sunt denumite 'secret' . Aceste secrete sunt accesate doar de organismele autorizate și pot fi rotite pentru a spori securitatea.



Aflați mai multe despre stocarea acreditărilor RDS în Secret Manager, consultând acest articol: „Cum să stocați acreditările Amazon RDS utilizând Secret Manager?”





Cum să accesați secretele API în AWS folosind AWS Lambda?

Lambda oferă suport încorporat pentru mai multe servicii, de ex. Bucket S3, API Gateway și Secret Manager. Funcțiile Lambda pot fi folosite pentru a obține valoarea secretelor configurate. Folosind secretele API din AWS Lambda Functions, utilizatorii pot interacționa cu mai multe servicii AWS. Astfel de secrete API sunt, de asemenea, importante pentru autorizarea funcțiilor lambda.

Pentru a accesa cheile API în AWS Secret Manager utilizând AWS Lambda, urmați pașii menționați mai jos:



  • Pasul 1: Creați un secret API
  • Pasul 2: Creați o politică IAM
  • Pasul 3: Creați un rol IAM
  • Pasul 4: Creați un rol Lambda

Pasul 1: Creați un secret API

Înainte de a accesa o cheie API în AWS Secret Manager, vom învăța mai întâi să facem acest lucru creați un secret API . În acest scop, accesați „Manager secret” serviciu de la Consola de management AWS:

Pe Consola principală din AWS Secret Manager, faceți clic pe „Păstrează un nou secret” buton:

În „Tipul secret” blocați, alegeți „Alt tip de secret” opțiune din diferitele opțiuni afișate:

Derulați în jos la „Perechi cheie/valoare” secțiune și furnizați a pereche cheie-valoare unică pentru secretul dvs. API. La adăuga Mai mult perechi cheie-valoare , faceți clic pe „Adăugați rând” buton:

Următorul este „Cheie de criptare” secțiune. AWS oferă un cheie de criptare implicită pentru secret. Cu toate acestea, utilizatorul poate oferi și un nume personalizat pentru cheie. Păstrând valoarea implicită, faceți clic pe „ Următorul butonul ”:

Pe această interfață, utilizatorul trebuie să furnizeze un nume unic pentru secretul lor și a descriere care este opțională câmp aici:

Păstrând setările neschimbate , continuați făcând clic pe „ Următorul butonul ”:

Urmează Secțiunea de recenzii. Pentru a confirma toate informație prevăzut este corect , faceți clic pe „ Magazin butonul situat în partea de jos a interfeței:

Secretul a fost creat cu succes . Faceți clic pe „ Reîncărcați ” pentru a afișa numele secretului pe Bord :

Pasul 2: Creați o politică IAM

La creați o politică IAM, accesează Serviciul IAM din AWS Management Console:

De la bara laterală a IAM serviciu, faceți clic pe „ Politici ' opțiune:

Pe Consola de politici , faceți clic pe „Creați o politică” buton:

Aflați mai multe despre politica AWS IAM, consultați acest articol: „Exemple de politici AWS IAM”

Următorul este „Specificați permisiunile” secțiune. Căutați și selectați „Manager secret” serviciu:

Derulați în jos la „Acțiuni permise” bloc. Aici, din diferitele niveluri de acces, atingeți „ Citit ' opțiune. Selectează „Toate acțiunile citite” opțiunea pentru activați toate Citirile servicii pentru această politică:

Deruleaza in jos la „ Resurse ” și faceți clic pe „Adăugați ARN” opțiune:

Navigați înapoi la Tabloul de bord AWS Secret Manager și faceți clic pe numele secretului. Copiați „ ARN ” a secretului de sub „ ARN secret ” eticheta din interfața afișată:

Pe Consolă acum , lipiți ARN-ul copiat în „ ARN ' camp:

Înainte de a face clic pe „Adăugați ARN-uri” butonul, faceți clic pe 'Acest cont' butonul pentru a confirma că secretele există în același cont. După configurarea setărilor, faceți clic pe „Adăugați ARN-uri” buton:

După configurarea toate setări din politică, faceți clic pe „ Următorul butonul ”:

În Secțiuni cu detalii despre politică , furnizați numele politicii în „ Numele politicii ' camp:

Faceți clic pe „ Creați o politică butonul ”:

The politică a fost creat cu succes :

Pasul 3: Creați un rol IAM

În această secțiune, creați un rol IAM care conține permisiunile necesare pentru ca funcțiile Lambda să acceseze secretele. În acest scop, faceți clic pe „ Roluri ” din bara laterală a rolului IAM și apoi atingeți „Creează un rol” butonul din interfață:

După ce faceți clic pe „Creează un rol” butonul, următoarea interfață vă va fi afișată. Selectează „Serviciul AWS” opțiune dintre următoarele opțiuni, deoarece vom atașa aceasta Rolul IAM cu funcția lambda:

În 'Utilizare caz' secțiunea, căutați Serviciu lambda și selectați-l. Loveste ' Următorul ” din partea de jos a interfeței pentru a continua:

Pe următoarea interfață , căutați numele Numele politicii pe care le-am configurat mai devreme. Din rezultatele afișate, selectați numele politicii:

Apasă pe ' Următorul ” din partea de jos a interfață pentru a continua:

Furnizeaza un identificator unic pentru tine Rolul IAM în următorul câmp evidențiat:

Păstrarea restul setărilor implicite , faceți clic pe „Creează un rol” butonul derulând în jos în partea de jos a interfeței:

Rolul a fost cu succes creată:

Pentru a afla mai multe despre crearea unui rol IAM în AWS, consultați acest articol: „Cum să creați roluri IAM în AWS” .

Pasul 4: Creați o funcție Lambda

Următorul pas este să creați funcția Lambda. Această funcție lambda va conține rolul IAM și va obține valoarea secretelor atunci când este executată. Pentru a accesa serviciul Lambda, căutați în „ Lambda ” în bara de căutare a Consola de administrare AWS . Faceți clic pe numele serviciului din rezultat pentru a vizita consola:

Pe interfața inițială a serviciului Lambda, faceți clic pe „Creează funcția” buton:

Aceasta va afișa „Creează funcția” interfata. Selectează „Autor de la zero” opțiunea și continuați furnizând numele pentru Funcția Lambda în câmpul evidențiat:

În Câmpul Runtime , selectează ' Python 3.9 ' mediu inconjurator:

Sub Secțiunea Runtime , este un „Schimbați rolul de execuție implicit” secțiune. Selectează „Folosiți un rol existent” opțiunea și apoi specificați rolul în „Rol existent” camp:

Pe aceeași interfață, atingeți „Creează funcția” butonul din partea de jos a interfeței:

Pentru a afla mai multe despre crearea unei funcții Lambda, consultați acest articol: „Cum se creează o funcție Lambda cu Pyhton Runtime” .

Funcția Lambda a fost creată. Următorul pas este să furnizați codul funcției Lambda. Când acest cod este executat, va afișa valorile Manager secret:

import json
import boto3
import baza64
din botocore. excepții import ClientError

def lambda_handler ( eveniment , context ) :
mediu inconjurator = eveniment [ 'env' ]
nume_secret = „shmaster19/%s/key” % mediu inconjurator
nume_regiune = 'ap-sud-est-1'

sesiune = boto3. sesiune . Sesiune ( )
client = sesiune. client (
numele serviciului = 'manager secret' ,
nume_regiune = nume_regiune
)

încerca :
răspuns_valoare_secretă = client. get_secret_value (
SecretId = nume_secret
)
cu excepția ClientError ca eroare :
imprimare ( eroare )
altfel :
dacă „SecretString” în răspuns_valoare_secretă :
secret = json. încărcături ( răspuns_valoare_secretă [ „SecretString” ] )
întoarcere secret
altfel :
secret_binar_decodat = baza64. b64decode ( secret_value_Response [ „SecretBinary” ] )
întoarcere secret_binar_decodat
  • import json: folosit pentru a efectua operațiuni JSON.
  • import boto3: este SDK-ul pentru comunicarea dintre AWS și Python.
  • import base64: Folosit pentru a efectua funcții de codificare și decodare pe date binare ca Base64.
  • import ClientError: Acest lucru permite utilizatorilor să gestioneze excepțiile din codul scris.
  • nume_secret: În această variabilă, furnizați numele secretului dvs. Rețineți că acest secret conține „%s” . Aceasta se întâmplă atunci când un utilizator are mai multe chei cu un format similar. De exemplu, dacă un utilizator a creat două secrete, de exemplu, „apikey/dev/key” și „apikey/prod/key” . Apoi în „%s” , dacă utilizatorul furnizează „ dev ”, funcția Lambda va oferi cheie de dezvoltare (apikey/dev/key) și invers.
  • boto. session.Session(): permite utilizatorilor să creeze clienți de servicii și răspunsuri.
  • regiune_nume: Furnizați numele regiunii în care este configurat secretul dvs. AWS.
  • Răspuns_valoare_secretă: În această variabilă, folosim „ client.get_secret_value ” care va returna valoarea secretului.
  • Decoded_binary_secert: După dobândirea valorii secretului, acesta va fi decodat în continuare format de bază 64 .

După ce lipiți codul în Funcția Lambda, faceți clic pe „ Implementează ” pentru a salva și aplica modificările:

Pasul 5: Testarea codului

În această secțiune a blogului, vom verifica dacă codul funcționează sau nu. În acest scop, faceți clic pe „ Test ” după implementarea cu succes a modificărilor la Funcția Lambda:

Pe următoarea interfață, furnizați numele pentru testare eveniment în 'Numele evenimentului' camp:

Derulați în jos la Secțiunea JSON pentru evenimente , specifică ' înv ” și furnizați valoarea în format JSON. „ valoare ” din cheie va fi transmis la „%s” . Deoarece secretele pe care le-am specificat conțin „ dev „, valoarea „ dev „valoarea este transmisă la „ înv ' variabil. Funcția Lambda va identifica secretul atunci când codul este executat, deoarece identificatorul secretului specific este furnizat în cod. După ce ați specificat detaliile, faceți clic pe „ Salvați butonul ”:

Când evenimentul este creat cu succes, faceți clic pe „ Test butonul ”:

Aici, avem obținut cu succes valoarea secretului nostru specificat:

Asta este tot din acest ghid.

Concluzie

Pentru a accesa cheile API în Secret Manager utilizând Lambda, creați mai întâi un API Secret, Politică IAM, Rol și Funcție Lambda și executați codul funcției. Funcțiile Lambda pot fi invocate pentru a obține valorile AWS Secret Manager prin specificarea identificatorului secretului la executarea codului. Acest articol oferă instrucțiuni pas cu pas despre cum să accesați cheile API în AWS Secret Manager folosind AWS Lambda.