Kako dostopati do skrivnosti API z uporabo AWS Lambda?

Kako Dostopati Do Skrivnosti Api Z Uporabo Aws Lambda



Najboljše prakse storitev AWS vključujejo dve dejanji, tj. shranjevanje-pridobivanje in revizija-rotacija. Z združitvijo teh dveh praks v eno je AWS predstavil Secret Manager, ki uporabniku pomaga zaščititi tajne podatke svojih aplikacij. AWS Secret Manager se pogosto uporablja za ustvarjanje, shranjevanje , spreminjanje , podvajanje , in rotirajoče poverilnice baze podatkov, ključi API, žetoni OAuth itd.

Hitri oris

Ta članek obravnava naslednje vidike:

Kaj je AWS Lambda?

AWS Lambda je računalniška storitev za izvajanje kod v več okoljih in jezikih brez zagotavljanja in upravljanja strežnikov. Poleg tega lahko AWS Lambda sproži več različnih storitev AWS, kot so vedro S3, prehodi API itd. Ta storitev samodejno prilagodi velikost aplikacije in učinkovito izvede kodo, ne da bi moral uporabnik namestiti kakršne koli dodatne odvisnosti.







Če želite izvedeti več o storitvi Lambda, si oglejte ta članek tukaj: »Začetek uporabe AWS Lambda« .



Kaj je AWS Secret Manager?

AWS Secret Manager uporabnikom omogoča varovanje in šifriranje zaupna informacija aplikacij, kot so žetoni OAuth, poverilnice zbirke podatkov, API-ji itd. Te zaupne informacije se imenujejo 'skrivnost' . Do teh skrivnosti dostopajo samo pooblaščeni organi in jih je mogoče zamenjati, da se poveča varnost.



Več o shranjevanju poverilnic RDS v Secret Managerju preberite v tem članku: »Kako shraniti poverilnice Amazon RDS z uporabo Secret Manager?«





Kako dostopati do skrivnosti API-ja v AWS z uporabo AWS Lambda?

Lambda nudi vgrajeno podporo za več storitev, npr. S3 bucket, API Gateway in Secret Manager. Lambda funkcije se lahko uporabljajo za pridobitev vrednosti konfiguriranih skrivnosti. Z uporabo skrivnosti API-ja v funkcijah AWS Lambda lahko uporabniki komunicirajo z več storitvami AWS. Takšne skrivnosti API-ja so pomembne tudi za avtorizacijo lambda funkcij.

Za dostop do ključev API v AWS Secret Manager z uporabo AWS Lambda sledite spodaj navedenim korakom:



  • 1. korak: Ustvarite API Secret
  • 2. korak: Ustvarite pravilnik IAM
  • 3. korak: Ustvarite vlogo IAM
  • 4. korak: Ustvarite vlogo Lambda

1. korak: Ustvarite API Secret

Pred dostopom do ključa API v AWS Secret Managerju se bomo tega najprej naučili ustvarite skrivnost API-ja . V ta namen dostopajte do 'Skrivni upravitelj' storitev iz Konzola za upravljanje AWS:

Na Glavna konzola AWS Secret Manager, kliknite na 'Shrani novo skrivnost' gumb:

V 'Skrivni tip' blok, izberite 'Druga vrsta skrivnosti' možnost med različnimi prikazanimi možnostmi:

Pomaknite se navzdol do 'Pari ključ/vrednost' razdelek in zagotovite a edinstven par ključ-vrednost za vašo API skrivnost. Za dodati več pari ključ-vrednost , kliknite na 'Dodaj vrstico' gumb:

Naslednja je 'Ključ za šifriranje' razdelek. AWS ponuja a privzeti šifrirni ključ za skrivnost. Vendar pa lahko uporabnik poda tudi ime po meri za ključ. Če obdržite privzeto, kliknite » Naslednji ” gumb:

Na tem vmesniku mora uporabnik zagotoviti a edinstveno ime za njihovo skrivnost in a opis, ki ni obvezen polje tukaj:

Z ohranjanjem nastavitve nespremenjene , nadaljujte s klikom na » Naslednji ” gumb:

Sledi Razdelek za pregled. Za potrditev vseh informacije če je pravilno , kliknite na ' Trgovina ” gumb, ki se nahaja na dnu vmesnika:

Skrivnost je bila uspešno ustvarjen . Kliknite na ' Ponovno naloži ” za prikaz imena skrivnosti na Nadzorna plošča :

2. korak: Ustvarite pravilnik IAM

Za ustvarite pravilnik IAM, dostop do storitev IAM iz konzole za upravljanje AWS:

Iz stransko vrstico IAM storitev, kliknite » Pravila ” možnost:

Na Konzola pravilnika , kliknite na 'Ustvari pravilnik' gumb:

Preberite več o pravilniku AWS IAM v tem članku: »Primeri pravilnika AWS IAM«

Naslednja je »Določite dovoljenja« razdelek. Poiščite in izberite 'Skrivni upravitelj' storitev:

Pomaknite se navzdol do 'Dovoljena dejanja' blok. Tukaj med različnimi nivoji dostopa tapnite » Preberi ” možnost. Izberite »Vsa dejanja branja« možnost za omogoči vse Preberi storitve za to politiko:

Pomaknite navzdol na ' Viri « in kliknite na »Dodaj ARN« možnost:

Pomaknite se nazaj na Nadzorna plošča AWS Secret Manager in kliknite ime skrivnosti. Kopiraj ' RNA ” skrivnosti pod “ Tajni ARN ” iz prikazanega vmesnika:

Na Konzola zdaj , prilepite kopirani ARN v » RNA ” polje:

Preden kliknete na »Dodaj ARN« kliknite gumb 'Ta račun' gumb za potrditev obstoja skrivnosti v istem računu. Ko konfigurirate nastavitve, kliknite na »Dodaj ARN« gumb:

Po konfiguriranje vse nastavitve pravilnika kliknite » Naslednji ” gumb:

V Razdelki s podrobnostmi pravilnika , navedite ime pravilnika v » Ime pravilnika ” polje:

Kliknite na ' Ustvari pravilnik ” gumb:

The politika je bil ustvarjen uspešno :

3. korak: Ustvarite vlogo IAM

V tem razdelku ustvarite vlogo IAM, ki vsebuje potrebna dovoljenja za funkcije Lambda za dostop do skrivnosti. V ta namen kliknite » Vloge ” v stranski vrstici vloge IAM in nato tapnite 'Ustvari vlogo' gumb iz vmesnika:

Po kliku na 'Ustvari vlogo' gumb, se vam bo prikazal naslednji vmesnik. Izberite “Storitev AWS” možnost izmed naslednjih možnosti, saj jo bomo priložili vloga IAM s funkcijo lambda:

V 'Primer uporabe' razdelek, poiščite Lambda servis in ga izberite. Pritisnite ' Naslednji ” na dnu vmesnika za nadaljevanje:

Na naslednji vmesnik , poiščite ime Ime pravilnika ki smo ga prej konfigurirali. Med prikazanimi rezultati izberite ime pravilnika:

Kliknite » Naslednji ” na dnu vmesnik za nadaljevanje:

Zagotovite a enolični identifikator Za vašo vloga IAM v naslednjem označenem polju:

Ohranjanje ostale nastavitve so privzete , kliknite na 'Ustvari vlogo' tako, da se pomaknete navzdol na dno vmesnika:

Vloga je bila uspešno ustvarjeno:

Če želite izvedeti več o ustvarjanju vloge IAM v AWS, glejte ta članek: »Kako ustvariti vloge IAM v AWS« .

4. korak: Ustvarite lambda funkcijo

Naslednji korak je ustvariti funkcijo Lambda. Ta funkcija lambda bo vsebovala vlogo IAM in ob izvedbi pridobila vrednost skrivnosti. Za dostop do storitve Lambda poiščite » Lambda « v iskalni vrstici Upravljalna konzola AWS . Kliknite na ime storitve v rezultatu, da obiščete konzolo:

V začetnem vmesniku storitve Lambda kliknite na 'Ustvari funkcijo' gumb:

To bo prikazalo 'Ustvari funkcijo' vmesnik. Izberite 'Avtor iz nič' in nadaljujte z vnosom imena za Lambda funkcija v označenem polju:

V Polje izvajalnega časa , izberite » Python 3.9 ” okolje:

Spodaj Runtime Section , obstaja a »Spremeni privzeto vlogo izvajanja« razdelek. Izberite »Uporabi obstoječo vlogo« možnost in nato določite vlogo v 'Obstoječa vloga' polje:

Na istem vmesniku tapnite 'Ustvari funkcijo' gumb na dnu vmesnika:

Če želite izvedeti več o ustvarjanju lambda funkcije, glejte ta članek: »Kako ustvariti lambda funkcijo z izvajalnim okoljem Pyhton« .

Funkcija Lambda je bila ustvarjena. Naslednji korak je posredovanje kode funkciji Lambda. Ko se ta koda izvede, bo prikazala vrednosti Skrivni upravitelj:

uvoz json
uvoz boto3
uvoz base64
od botocore. izjeme uvoz ClientError

def lambda_handler ( dogodek , kontekstu ) :
okolju = dogodek [ 'env' ]
skrivno_ime = 'shmaster19/%s/ključ' % okolju
ime_regije = 'ap-southeast-1'

sejo = boto3. sejo . Seja ( )
stranka = sejo. stranka (
ime_storitve = 'secretsmanager' ,
ime_regije = ime_regije
)

poskusi :
tajna_vrednost_odgovor = stranka. get_secret_value (
SecretId = skrivno_ime
)
razen ClientError kot napaka :
tiskanje ( napaka )
drugače :
če 'SecretString' v tajna_vrednost_odgovor :
skrivnost = json. obremenitve ( tajna_vrednost_odgovor [ 'SecretString' ] )
vrnitev skrivnost
drugače :
dekodirana_binarna_skrivnost = base64. b64decode ( tajna_vrednost_odgovor [ 'SecretBinary' ] )
vrnitev dekodirana_binarna_skrivnost
  • uvozi json: uporablja za izvajanje operacij JSON.
  • uvoz boto3: je SDK za komunikacijo med AWS in Pythonom.
  • uvoz base64: Uporablja se za izvajanje funkcij kodiranja in dekodiranja binarnih podatkov kot Base64.
  • uvoz ClientError: To uporabnikom omogoča obravnavanje izjem v napisani kodi.
  • skrivno_ime: V tej spremenljivki vnesite ime svoje skrivnosti. Upoštevajte, da ta skrivnost vsebuje »%s« . To je, ko ima uporabnik več ključev podobnega formata. Na primer, če je uporabnik ustvaril dve skrivnosti, npr. 'apikey/dev/ključ' in 'apikey/prod/key' . Nato v »%s« , če uporabnik poda » razv «, bo zagotovila funkcija Lambda razvojni ključ (apikey/dev/key) in obratno.
  • boto. session.Session(): uporabnikom omogoča ustvarjanje odjemalcev storitev in odgovorov.
  • ime_regije: Navedite ime regije, v kateri je konfigurirana vaša skrivnost AWS.
  • Secret_value_response: V tej spremenljivki uporabljamo ' client.get_secret_value ”, ki bo vrnila vrednost skrivnosti.
  • Decoded_binary_secert: Po pridobitvi vrednosti skrivnosti bo ta nadalje dekodirana osnovni 64 format .

Ko prilepite kodo v funkcijo Lambda, kliknite » Razporedi ” za shranjevanje in uporabo sprememb:

5. korak: Testiranje kode

V tem delu bloga bomo preverili, ali koda deluje ali ne. V ta namen kliknite » Test ” po uspešni uvedbi sprememb funkcije Lambda:

Na naslednjem vmesniku zagotovite ime za testiranje dogodek v 'Ime dogodka' polje:

Pomaknite se navzdol do Razdelek JSON dogodka , navedite ' okolj ” in navedite vrednost v formatu JSON. ' vrednost ” ključa bo posredovan »%s« . Ker skrivnosti, ki smo jih navedli, vsebujejo » razv ' vrednost, ' razv vrednost se posreduje v okolj ” spremenljivka. Funkcija Lambda bo identificirala skrivnost, ko se koda izvede, saj je identifikator določene skrivnosti naveden v kodi. Ko določite podrobnosti, kliknite » Shrani ” gumb:

Ko je dogodek uspešno ustvarjen, kliknite » Test ” gumb:

Evo, imamo uspešno pridobljeno vrednost naše določene skrivnosti:

To je vse iz tega vodnika.

Zaključek

Za dostop do ključev API v Secret Managerju z uporabo Lambda najprej ustvarite API Secret, pravilnik IAM, vlogo in funkcijo Lambda ter izvedite kodo funkcije. Lambda funkcije je mogoče priklicati za pridobitev vrednosti AWS Secret Managerja tako, da pri izvajanju kode določite identifikator skrivnosti. Ta članek podaja navodila po korakih za dostop do ključev API v AWS Secret Manager z uporabo AWS Lambda.