Hvordan få tilgang til API-hemmeligheter ved å bruke AWS Lambda?

Hvordan Fa Tilgang Til Api Hemmeligheter Ved A Bruke Aws Lambda



Beste praksis for AWS Services involverer to handlinger, dvs. Store-hent og revisjon-roter. Ved å kombinere disse to praksisene i ett, har AWS lansert Secret Manager som hjelper brukeren med å beskytte den hemmelige informasjonen til applikasjonene deres. AWS Secret Manager er mye brukt for å lage, lagring , modifisering , replikere , og roterende databaselegitimasjon, API-nøkler, OAuth-tokens, etc.

Rask oversikt

Denne artikkelen dekker følgende aspekter:

Hva er AWS Lambda?

AWS Lambda er en databehandlingstjeneste for å utføre koder i flere miljøer og språk uten å tilby og administrere serverne. Videre kan AWS Lambda utløses av flere forskjellige tjenester av AWS som S3 bucket, API Gateways, etc. Denne tjenesten skalerer applikasjonen automatisk og utfører koden effektivt uten at brukeren må installere ytterligere avhengigheter.







For å lære mer om Lambda-tjenesten, se denne artikkelen her: “Komme i gang med AWS Lambda” .



Hva er AWS Secret Manager?

AWS Secret Manager gjør det mulig for brukere å sikre og kryptere konfidensiell informasjon av applikasjoner som OAuth-tokens, databaselegitimasjon, API-er osv. Denne konfidensielle informasjonen refereres til som en 'hemmelig' . Disse hemmelighetene er kun tilgjengelig for autoriserte instanser og kan roteres for å øke sikkerheten.



Lær mer om lagring av RDS-legitimasjon i Secret Manager ved å referere til denne artikkelen: 'Hvordan lagre Amazon RDS-legitimasjon ved å bruke Secret Manager?'





Hvordan få tilgang til API-hemmeligheter i AWS ved å bruke AWS Lambda?

Lambda gir innebygd støtte for flere tjenester f.eks. S3-bøtte, API-gateway og Secret Manager. Lambda-funksjoner kan brukes til å finne verdien av de konfigurerte hemmelighetene. Ved å bruke API-hemmelighetene i AWS Lambda Functions, kan brukere samhandle med flere tjenester til AWS. Slike API-hemmeligheter er også viktige for å autorisere lambda-funksjonene.

For å få tilgang til API-nøkler i AWS Secret Manager ved å bruke AWS Lambda, følg trinnene nedenfor:



  • Trinn 1: Lag en API-hemmelighet
  • Trinn 2: Lag en IAM-policy
  • Trinn 3: Opprett en IAM-rolle
  • Trinn 4: Lag en Lambda-rolle

Trinn 1: Lag en API-hemmelighet

Før vi får tilgang til en API-nøkkel i AWS Secret Manager, vil vi først lære det opprette en API-hemmelighet . For dette formålet, gå til 'Secret Manager' tjeneste fra AWS-administrasjonskonsoll:

Hovedkonsoll av AWS Secret Manager, klikk på 'Lagre en ny hemmelighet' knapp:

I 'Hemmelig type' blokk, velg “Annen type hemmelighet” alternativ fra de forskjellige alternativene som vises:

Rull ned til «Nøkkel/verdi-par» seksjon og gi en unikt nøkkelverdi-par for API-hemmeligheten din. Til Legg til mer nøkkel-verdi-par , Klikk på 'Legg til rad' knapp:

Neste er 'Krypteringsnøkkel' seksjon. AWS gir en standard krypteringsnøkkel for hemmeligheten. Imidlertid kan brukeren også angi et egendefinert navn for nøkkelen. Ved å beholde standarden, klikk på ' Neste ”-knapp:

På dette grensesnittet må brukeren oppgi en unikt navn for deres hemmelighet og en beskrivelse som er valgfri felt her:

Ved å beholde innstillinger uendret , fortsett videre ved å klikke på ' Neste ”-knapp:

Neste kommer Gjennomgangsseksjon. For å bekrefte alle informasjon forutsatt er riktig , Klikk på ' butikk '-knappen nederst i grensesnittet:

Hemmeligheten har vært vellykket opprettet . Klikk på ' Last inn på nytt ”-knappen for å vise hemmelighetens navn på Dashbord :

Trinn 2: Lag en IAM-policy

Til lage en IAM-policy, få tilgang til IAM-tjeneste fra AWS Management Console:

Fra sidefeltet til IAM tjeneste, klikk på ' Retningslinjer alternativ:

Politikkkonsoll , Klikk på 'Lag policy' knapp:

Lær mer om AWS IAM-policy ved å referere til denne artikkelen: 'AWS IAM-policyeksempler'

Neste er 'Spesifiser tillatelser' seksjon. Søk og velg 'Secret Manager' service:

Rull ned til 'Handlinger tillatt' blokkere. Her, fra de forskjellige tilgangsnivåene, trykk på ' Lese ' alternativet. Velg 'Alle leste handlinger' mulighet til aktivere alle Lese tjenester for denne policyen:

Bla nedover til ' Ressurser '-delen og klikk på 'Legg til ARN' alternativ:

Naviger tilbake til AWS Secret Manager Dashboard og klikk på hemmelighetens navn. Kopier ' RNA ' av hemmeligheten under ' Hemmelig ARN '-etikett fra det viste grensesnittet:

Konsoll nå , lim inn det kopierte ARN i ' RNA ' felt:

Før du klikker på 'Legg til ARN-er' knappen, klikk på 'Denne brukeren' knappen for å bekrefte at hemmelighetene eksisterer på samme konto. Etter å ha konfigurert innstillingene, klikk på 'Legg til ARN-er' knapp:

Etter konfigurere alle innstillinger av policyen, klikk på ' Neste ”-knapp:

I Retningslinjedetaljer , oppgi navnet på policyen i ' Policynavn ' felt:

Klikk på ' Lag politikk ”-knapp:

De Politikk har blitt skapt vellykket :

Trinn 3: Opprett en IAM-rolle

I denne delen oppretter du en IAM-rolle som inneholder de nødvendige tillatelsene for Lambda-funksjoner for å få tilgang til hemmelighetene. For dette formålet, klikk på ' Roller ”-alternativet fra sidefeltet til IAM-rollen og trykk deretter på 'Skap rolle' knapp fra grensesnittet:

Etter å ha klikket på 'Skap rolle' knappen, vil følgende grensesnitt vises for deg. Velg “AWS-tjeneste” alternativ fra følgende alternativer, da vi vil legge ved dette IAM rolle med lambda-funksjonen:

I 'Brukstilfelle' seksjon, søk i Lambda service og velg den. Slå den ' Neste '-knappen nederst i grensesnittet for å fortsette videre:

neste grensesnitt , søk etter navnet på Policyens navn som vi konfigurerte tidligere. Fra de viste resultatene velger du policynavn:

Klikk på ' Neste ”-knappen nederst på grensesnitt for å gå videre:

Gi en unik identifikator for din IAM rolle i følgende uthevede felt:

Å holde resten av innstillingene som standard , Klikk på 'Skap rolle' knappen ved å rulle ned til bunnen av grensesnittet:

Rollen har vært vellykket opprettet:

For å lære mer om å opprette en IAM-rolle i AWS, se denne artikkelen: 'Hvordan lage IAM-roller i AWS' .

Trinn 4: Lag en Lambda-funksjon

Det neste trinnet er å lage Lambda-funksjonen. Denne lambda-funksjonen vil inneholde IAM-rollen og vil oppnå verdien av hemmelighetene når den utføres. For å få tilgang til Lambda-tjenesten, søk på ' Lambda ” i søkefeltet til AWS-administrasjonskonsoll . Klikk på tjenestens navn fra resultatet for å besøke konsollen:

På det første grensesnittet til Lambda-tjenesten klikker du på 'Opprett funksjon' knapp:

Dette vil vise 'Opprett funksjon' grensesnitt. Velg «Forfatter fra bunnen av» alternativet og fortsett videre ved å oppgi navnet på Lambda funksjon i det uthevede feltet:

I Runtime-feltet , velg ' Python 3.9 ' miljø:

Under Runtime delen , det er en 'Endre standard utførelsesrolle' seksjon. Velg 'Bruk en eksisterende rolle' og spesifiser deretter rollen i 'Eksisterende rolle' felt:

På samme grensesnitt trykker du på 'Opprett funksjon' knappen nederst i grensesnittet:

For å lære mer om hvordan du oppretter en Lambda-funksjon, se denne artikkelen: 'Hvordan lage en Lambda-funksjon med Pyhton Runtime' .

Lambda-funksjonen er opprettet. Neste trinn er å gi koden til Lambda-funksjonen. Når denne koden er utført, vil den vise verdiene til Hemmelig leder:

import json
import boto3
import base64
fra botocore. unntak import ClientError

def lambda_handler ( begivenhet , kontekst ) :
miljø = begivenhet [ 'env' ]
hemmelig_navn = 'shmaster19/%s/key' % miljø
regionsnavn = 'ap-sørøst-1'

økt = boto3. økt . Økt ( )
klient = økt. klient (
tjenestenavn = 'secretsmanager' ,
regionsnavn = regionsnavn
)

prøve :
secret_value_response = klient. få_hemmelig_verdi (
SecretId = hemmelig_navn
)
unntatt ClientError som feil :
skrive ut ( feil )
ellers :
hvis 'SecretString' i secret_value_response :
hemmelig = json. laster ( secret_value_response [ 'SecretString' ] )
komme tilbake hemmelig
ellers :
dekodet_binær_hemmelighet = base64. b64dekode ( secret_value_Response [ 'SecretBinary' ] )
komme tilbake dekodet_binær_hemmelighet
  • import json: brukes til å utføre JSON-operasjoner.
  • importer boto3: er SDK for kommunikasjon mellom AWS og Python.
  • import base64: Brukes for å utføre kodings- og dekodingsfunksjoner på binære data som Base64.
  • import ClientError: Dette gjør det mulig for brukerne å håndtere unntak i den skrevne koden.
  • hemmelig_navn: I denne variabelen oppgir du navnet på hemmeligheten din. Merk at denne hemmeligheten inneholder «%s» . Dette er når en bruker har flere nøkler med lignende format. For eksempel, hvis en bruker har opprettet to hemmeligheter, f.eks. 'apikey/dev/key' og 'apikey/prod/key' . Deretter i «%s» , hvis brukeren oppgir ' dev ”, vil Lambda-funksjonen gi utviklingsnøkkel (apikey/dev/key) og omvendt.
  • boto. session.Session(): lar brukere opprette tjenesteklienter og svar.
  • region_name: Oppgi navnet på regionen der AWS-hemmeligheten din er konfigurert.
  • Secret_value_response: I denne variabelen bruker vi ' client.get_secret_value ”-funksjon som vil returnere verdien av hemmeligheten.
  • Decoded_binary_secert: Etter å ha anskaffet verdien av hemmeligheten, vil den videre dekodes til base 64-format .

Etter å ha limt inn koden i Lambda-funksjonen, klikk på ' Utplassere '-knappen for å lagre og bruke endringer:

Trinn 5: Testing av koden

I denne delen av bloggen vil vi bekrefte om koden fungerer eller ikke. For dette formålet, klikk på ' Test ”-knappen etter vellykket implementering av endringene til Lambda-funksjonen:

På neste grensesnitt, oppgi navn på testen arrangement i 'Arrangementsnavn' felt:

Rull ned til Event JSON-delen , spesifiser ' env ”-tasten, og oppgi verdien i JSON-formatet. « verdi ” av nøkkelen vil bli sendt til «%s» . Siden hemmelighetene vi har spesifisert inneholder ' dev ' verdi, ' dev '-verdien sendes til ' env variabel. Lambda-funksjonen vil identifisere hemmeligheten når koden utføres ettersom identifikatoren til den spesifikke hemmeligheten er gitt i koden. Etter å ha spesifisert detaljene, klikk på ' Lagre ”-knapp:

Når arrangementet er opprettet, klikker du på ' Test ”-knapp:

Her har vi oppnådd vellykket verdien av vår spesifiserte hemmelighet:

Det er alt fra denne guiden.

Konklusjon

For å få tilgang til API-nøkler i Secret Manager ved hjelp av Lambda, må du først opprette en API Secret, IAM Policy, Rolle og Lambda Function og kjøre koden til funksjonen. Lambda-funksjoner kan påkalles for å hente verdiene til AWS Secret Manager ved å spesifisere identifikatoren til hemmeligheten når koden kjøres. Denne artikkelen gir trinnvise retningslinjer for hvordan du får tilgang til API-nøkler i AWS Secret Manager ved å bruke AWS Lambda.