Kako pristupiti API tajnama pomoću AWS Lambda?

Kako Pristupiti Api Tajnama Pomocu Aws Lambda



Najbolje prakse AWS usluga uključuju dvije radnje, tj. pohranjivanje-dohvaćanje i revizija-rotiranje. Kombinirajući ove dvije prakse u jednu, AWS je pokrenuo Secret Manager koji pomaže korisniku da zaštiti tajne podatke svojih aplikacija. AWS Secret Manager naširoko se koristi za stvaranje, pohranjivanje , modificirajući , repliciranje , i rotirajuće vjerodajnice baze podataka, API ključeve, OAuth tokene itd.

Brzi pregled

Ovaj članak pokriva sljedeće aspekte:

Što je AWS Lambda?

AWS Lambda je računalna usluga za izvršavanje kodova u više okruženja i jezika bez pružanja i upravljanja poslužiteljima. Nadalje, AWS Lambda može pokrenuti više različitih usluga AWS-a kao što su S3 bucket, API Gateways itd. Ova usluga automatski skalira aplikaciju i učinkovito izvršava kod bez potrebe da korisnik instalira bilo kakve dodatne ovisnosti.







Da biste saznali više o Lambda usluzi, pogledajte ovaj članak ovdje: “Početak rada s AWS Lambda” .



Što je AWS Secret Manager?

AWS Secret Manager omogućuje korisnicima da osiguraju i šifriraju povjerljive informacije aplikacija kao što su OAuth tokeni, vjerodajnice baze podataka, API-ji itd. Ove povjerljive informacije nazivaju se 'tajna' . Ovim tajnama pristupaju samo ovlaštena tijela i mogu se rotirati kako bi se poboljšala sigurnost.



Saznajte više o pohranjivanju RDS vjerodajnica u Secret Manageru tako da pogledate ovaj članak: 'Kako pohraniti Amazon RDS vjerodajnice pomoću Secret Managera?'





Kako pristupiti API tajnama u AWS-u koristeći AWS Lambda?

Lambda pruža ugrađenu podršku za više usluga, npr. S3 spremnik, API Gateway i Secret Manager. Lambda funkcije se mogu koristiti za dobivanje vrijednosti konfiguriranih tajni. Korištenjem API tajni u AWS Lambda funkcijama, korisnici mogu komunicirati s više usluga AWS-a. Takve API tajne također su važne za autorizaciju lambda funkcija.

Za pristup API ključevima u AWS Secret Manageru koristeći AWS Lambda, slijedite dolje navedene korake:



  • Korak 1: Stvorite API Secret
  • Korak 2: Izradite IAM politiku
  • Korak 3: Stvorite IAM ulogu
  • Korak 4: Stvorite lambda ulogu

Korak 1: Stvorite API Secret

Prije pristupa API ključu u AWS Secret Manageru, prvo ćemo naučiti stvoriti API tajnu . U tu svrhu pristupite “Tajni upravitelj” usluga iz AWS upravljačka konzola:

Na Glavna konzola AWS Secret Managera kliknite na “Pohrani novu tajnu” dugme:

u 'Tajni tip' blok, odaberite “Druga vrsta tajne” opcija među različitim prikazanim opcijama:

Pomaknite se prema dolje do “Parovi ključ/vrijednost” odjeljak i pružiti a jedinstveni par ključ-vrijednost za vašu API tajnu. Do dodati više parovi ključ-vrijednost , Klikni na 'Dodaj red' dugme:

Sljedeće je 'Ključ za šifriranje' odjeljak. AWS pruža a zadani ključ za šifriranje za tajnu. Međutim, korisnik također može dati prilagođeni naziv za ključ. Zadržavanjem zadanih, kliknite na ' Sljedeći ' dugme:

Na ovom sučelju korisnik mora pružiti a jedinstveno ime za njihovu tajnu i a opis koji nije obavezan polje ovdje:

Zadržavanjem postavke nepromijenjene , nastavite dalje klikom na ' Sljedeći ' dugme:

Slijedi Odjeljak s pregledom. Za potvrdu svih informacija pod uvjetom je ispraviti , Klikni na ' Store ” gumb koji se nalazi na dnu sučelja:

Tajna je bila uspješno kreiran . Klikni na ' Ponovno učitati ” za prikaz imena tajne na Nadzorna ploča :

Korak 2: Izradite IAM politiku

Do kreirajte IAM politiku, pristupite IAM usluga iz AWS upravljačke konzole:

Od bočna traka IAM-a usluga, kliknite na ' Politike ” opcija:

Na Konzola za pravila , Klikni na 'Stvori politiku' dugme:

Saznajte više o AWS IAM politici u ovom članku: “Primjeri pravila AWS IAM”

Sljedeće je 'Navedite dopuštenja' odjeljak. Pretražite i odaberite “Tajni upravitelj” servis:

Pomaknite se prema dolje do “Dopuštene radnje” blok. Ovdje na različitim razinama pristupa dodirnite ' Čitati ” opcija. Odaberite “Sve radnje čitanja” opcija za omogućiti sve Čitaj usluge za ovu politiku:

Pomaknite se prema dolje prema ' Resursi ” i kliknite na 'Dodaj ARN' opcija:

Vratite se na Nadzorna ploča AWS Secret Manager i kliknite na naziv tajne. Kopirajte ' RNA ” tajne ispod “ Tajni ARN ” s prikazanog sučelja:

Na Konzola sada , zalijepite kopirani ARN u ' RNA ” polje:

Prije klika na 'Dodaj ARN' kliknite na 'Ovaj račun' gumb za potvrdu postojanja tajni na istom računu. Nakon konfiguriranja postavki kliknite na 'Dodaj ARN' dugme:

Nakon konfiguriranje svi postavke pravila, kliknite na ' Sljedeći ' dugme:

u Odjeljci s detaljima pravila , navedite naziv pravila u ' Naziv pravila ” polje:

Klikni na ' Stvorite politiku ' dugme:

The politika je stvoreno uspješno :

Korak 3: Stvorite IAM ulogu

U ovom odjeljku stvorite IAM ulogu koja sadrži potrebna dopuštenja za Lambda funkcije za pristup tajnama. U tu svrhu kliknite na ' Uloge ” na bočnoj traci IAM uloge, a zatim dodirnite 'Stvori ulogu' gumb iz sučelja:

Nakon klika na 'Stvori ulogu' gumb, prikazat će vam se sljedeće sučelje. Odaberite “AWS usluga” opciju od sljedećih opcija jer ćemo ovo priložiti IAM uloga s lambda funkcijom:

u 'Slučaj upotrebe' odjeljak, pretražite Lambda servis i odaberite ga. Udari ' Sljedeći ” na dnu sučelja za nastavak:

Na sljedeće sučelje , potražite naziv Naziv politike koje smo ranije konfigurirali. Među prikazanim rezultatima odaberite naziv politike:

Kliknite na ' Sljedeći ” na dnu sučelje za nastavak:

Osigurati a jedinstveni identifikator za tvoj IAM uloga u sljedeće označeno polje:

Održavanje ostale postavke kao zadane , Klikni na 'Stvori ulogu' gumb pomicanjem prema dolje do dna sučelja:

Uloga je bila uspješno stvoreno:

Da biste saznali više o stvaranju IAM uloge u AWS-u, pogledajte ovaj članak: “Kako stvoriti IAM uloge u AWS-u” .

Korak 4: Stvorite Lambda funkciju

Sljedeći korak je stvaranje Lambda funkcije. Ova lambda funkcija sadržavat će IAM ulogu i dobit će vrijednost tajni kada se izvrši. Za pristup Lambda usluzi pretražite ' Lambda ” u traci za pretraživanje na AWS upravljačka konzola . Kliknite na naziv usluge iz rezultata za posjet konzoli:

Na početnom sučelju usluge Lambda kliknite na 'Stvori funkciju' dugme:

Ovo će prikazati 'Stvori funkciju' sučelje. Odaberite “Autor od nule” opciju i nastavite dalje unosom naziva za Lambda funkcija u označenom polju:

u Runtime polje , odaberite ' Python 3.9 ' okoliš:

Ispod Odjeljak za vrijeme izvođenja , tamo je “Promijeni zadanu ulogu izvršavanja” odjeljak. Odaberite 'Koristite postojeću ulogu' opciju, a zatim odredite ulogu u 'Postojeća uloga' polje:

Na istom sučelju dodirnite 'Stvori funkciju' gumb na dnu sučelja:

Da biste saznali više o stvaranju Lambda funkcije, pogledajte ovaj članak: “Kako stvoriti lambda funkciju s Pyhton Runtimeom” .

Funkcija Lambda je stvorena. Sljedeći korak je davanje koda Lambda funkciji. Kada se ovaj kod izvrši, prikazat će vrijednosti Tajni upravitelj:

uvoz json
uvoz boto3
uvoz baza64
od botocore. iznimke uvoz ClientError

def lambda_handler ( događaj , kontekst ) :
okoliš = događaj [ 'env' ]
tajno_ime = 'shmaster19/%s/ključ' % okoliš
naziv_regije = 'ap-southeast-1'

sjednica = boto3. sjednica . Sjednica ( )
klijent = sjednica. klijent (
service_name = 'upravitelj tajni' ,
naziv_regije = naziv_regije
)

probati :
tajna_vrijednost_odgovor = klijent. dobiti_tajnu_vrijednost (
SecretId = tajno_ime
)
osim ClientError kao greške :
ispisati ( greška )
drugo :
ako 'Tajni niz' u tajna_vrijednost_odgovor :
tajna = json. opterećenja ( tajna_vrijednost_odgovor [ 'Tajni niz' ] )
povratak tajna
drugo :
dekodirana_binarna_tajna = baza64. b64dekodirati ( tajna_vrijednost_Odgovor [ 'SecretBinary' ] )
povratak dekodirana_binarna_tajna
  • uvoz json: koristi se za izvođenje JSON operacija.
  • uvoz boto3: je SDK za komunikaciju između AWS-a i Pythona.
  • import base64: Koristi se za izvođenje funkcija kodiranja i dekodiranja binarnih podataka kao Base64.
  • import ClientError: To korisnicima omogućuje rukovanje iznimkama u pisanom kodu.
  • tajno_ime: U ovoj varijabli navedite naziv svoje tajne. Imajte na umu da ova tajna sadrži “%s” . To je kada korisnik ima više ključeva sličnog formata. Na primjer, ako je korisnik stvorio dvije tajne, npr. “apikey/dev/ključ” i “apikey/prod/ključ” . Zatim u “%s” , ako korisnik pruži ' dev “, Lambda funkcija će pružiti razvojni ključ (apikey/dev/key) i obrnuto.
  • boto. session.Session(): omogućuje korisnicima stvaranje klijenata usluga i odgovora.
  • naziv_regije: Navedite naziv regije u kojoj je konfigurirana vaša AWS tajna.
  • Tajna_vrijednost_odgovora: U ovoj varijabli koristimo ' client.get_secret_value ” funkcija koja će vratiti vrijednost tajne.
  • Dekodirani_binarni_secert: Nakon stjecanja vrijednosti tajne, ona će se dalje dekodirati u osnovni 64 format .

Nakon što zalijepite kod u Lambda funkciju, kliknite na ' Rasporedi ” za spremanje i primjenu promjena:

Korak 5: Testiranje koda

U ovom dijelu bloga provjerit ćemo radi li kôd ili ne. U tu svrhu kliknite na ' Test ” nakon uspješne implementacije promjena Lambda funkcije:

Na sljedećem sučelju navedite naziv za testiranje događaj u 'Naziv događaja' polje:

Pomaknite se prema dolje do JSON odjeljak događaja , navedite ' okolina ” i navedite vrijednost u JSON formatu. ' vrijednost ” ključa bit će proslijeđen “%s” . Budući da tajne koje smo naveli sadrže ' dev ' vrijednost, ' dev ' vrijednost se prosljeđuje u ' okolina ” varijabla. Funkcija Lambda identificirat će tajnu kada se kôd izvrši jer je identifikator specifične tajne naveden u kodu. Nakon što navedete detalje, kliknite na ' Uštedjeti ' dugme:

Kada je događaj uspješno kreiran, kliknite na ' Test ' dugme:

Evo, imamo uspješno dobivena vrijednost naše navedene tajne:

To je sve iz ovog vodiča.

Zaključak

Da biste pristupili ključevima API-ja u Secret Manageru pomoću Lambde, prvo izradite API Secret, IAM politiku, ulogu i Lambda funkciju i izvršite kod funkcije. Lambda funkcije se mogu pozvati za dobivanje vrijednosti AWS Secret Managera određivanjem identifikatora tajne prilikom izvršavanja koda. Ovaj članak pruža korak po korak smjernice za pristup API ključevima u AWS Secret Manageru pomoću AWS Lambda.