Hur får man tillgång till API-hemligheter med AWS Lambda?

Hur Far Man Tillgang Till Api Hemligheter Med Aws Lambda



Bästa praxis för AWS Services involverar två åtgärder, t.ex. Store-Hämta och Granska-Rotera. Genom att kombinera dessa två metoder i en, har AWS lanserat Secret Manager som hjälper användaren att skydda den hemliga informationen i sina applikationer. AWS Secret Manager används ofta för att skapa, lagring , modifiering , replikera , och roterande databasuppgifter, API-nycklar, OAuth-tokens, etc.

Snabb översikt

Den här artikeln tar upp följande aspekter:

Vad är AWS Lambda?

AWS Lambda är en datortjänst för exekvering av koder i flera miljöer och språk utan att tillhandahålla och hantera servrarna. Dessutom kan AWS Lambda triggas av flera olika tjänster av AWS såsom S3 bucket, API Gateways, etc. Denna tjänst skalar automatiskt applikationen och exekverar koden effektivt utan att användaren behöver installera några ytterligare beroenden.







För att lära dig mer om Lambda-tjänsten, se den här artikeln här: 'Komma igång med AWS Lambda' .



Vad är AWS Secret Manager?

AWS Secret Manager gör det möjligt för användare att säkra och kryptera konfidentiell information av applikationer som OAuth-tokens, databasuppgifter, API:er, etc. Denna konfidentiella information hänvisas till som en 'hemlighet' . Dessa hemligheter nås endast av auktoriserade organ och kan roteras för att öka säkerheten.



Läs mer om att lagra RDS-uppgifter i Secret Manager genom att hänvisa till den här artikeln: 'Hur lagrar man Amazon RDS-uppgifter med Secret Manager?'





Hur får man tillgång till API-hemligheter i AWS med AWS Lambda?

Lambda tillhandahåller inbyggt stöd för flera tjänster t.ex. S3-hink, API Gateway och Secret Manager. Lambdafunktioner kan användas för att erhålla värdet av de konfigurerade hemligheterna. Genom att använda API-hemligheterna i AWS Lambda Functions kan användare interagera med flera tjänster av AWS. Sådana API-hemligheter är också viktiga för att auktorisera lambdafunktionerna.

För att komma åt API-nycklar i AWS Secret Manager med AWS Lambda, följ stegen nedan:



  • Steg 1: Skapa en API-hemlighet
  • Steg 2: Skapa en IAM-policy
  • Steg 3: Skapa en IAM-roll
  • Steg 4: Skapa en Lambda-roll

Steg 1: Skapa en API-hemlighet

Innan vi kommer åt en API-nyckel i AWS Secret Manager kommer vi först att lära oss det skapa en API-hemlighet . För detta ändamål, gå till 'Secret Manager' service från AWS Management Console:

Huvudkonsol i AWS Secret Manager, klicka på 'Lagra en ny hemlighet' knapp:

I den 'Hemlig typ' blockera, välj 'Annan typ av hemlighet' alternativ från de olika alternativen som visas:

Scrolla ner till 'Nyckel/värde par' avsnitt och ge en unikt nyckel-värdepar för din API-hemlighet. Till Lägg till Mer nyckel-värdepar , Klicka på 'Lägg till rad' knapp:

Nästa är 'Krypteringsnyckel' sektion. AWS tillhandahåller en standardkrypteringsnyckel för hemligheten. Användaren kan dock även ange ett anpassat namn för nyckeln. Genom att behålla standard, klicka på ' Nästa ' knapp:

På detta gränssnitt måste användaren tillhandahålla en unikt namn för deras hemlighet och en beskrivning som är valfri fält här:

Genom att behålla inställningarna oförändrade , fortsätt vidare genom att klicka på ' Nästa ' knapp:

Därefter kommer Granska avsnitt. För att bekräfta alla information förutsatt är korrekt , Klicka på ' Lagra ”-knappen längst ner i gränssnittet:

Hemligheten har varit framgångsrikt skapat . Klicka på ' Ladda om ”-knappen för att visa hemlighetens namn på instrumentbräda :

Steg 2: Skapa en IAM-policy

Till skapa en IAM-policy, komma åt IAM-tjänst från AWS Management Console:

Från sidofältet i IAM tjänst, klicka på ' Policyer ' alternativ:

Policykonsol , Klicka på 'Skapa policy' knapp:

Läs mer om AWS IAM-policy genom att hänvisa till den här artikeln: 'AWS IAM-policyexempel'

Nästa är 'Ange behörigheter' sektion. Sök och välj 'Secret Manager' service:

Scrolla ner till 'Åtgärder tillåtna' blockera. Här, från de olika åtkomstnivåerna, tryck på ' Läsa ' alternativet. Välj 'Alla lästa åtgärder' möjlighet att aktivera alla Läs tjänster för denna policy:

Scrolla ner till ' Resurser ” och klicka på 'Lägg till ARN' alternativ:

Navigera tillbaka till AWS Secret Manager Dashboard och klicka på hemlighetens namn. Kopiera ' RNA ' av hemligheten under ' Hemliga ARN ”-etikett från det visade gränssnittet:

Konsol nu , klistra in det kopierade ARN i ' RNA ' fält:

Innan du klickar på 'Lägg till ARN' knappen klickar du på 'Det här kontot' för att bekräfta att hemligheterna finns på samma konto. När du har konfigurerat inställningarna klickar du på 'Lägg till ARN' knapp:

Efter konfigurera alla inställningar i policyn, klicka på ' Nästa ' knapp:

I den Avsnitten med policydetaljer , ange namnet på policyn i ' Policynamn ' fält:

Klicka på ' Skapa policy ' knapp:

De politik Har skapats framgångsrikt :

Steg 3: Skapa en IAM-roll

I det här avsnittet skapar du en IAM-roll som innehåller de nödvändiga behörigheterna för Lambda-funktioner för att komma åt hemligheterna. För detta ändamål, klicka på ' Roller ” från sidofältet i IAM-rollen och tryck sedan på 'Skapa roll' knapp från gränssnittet:

Efter att ha klickat på 'Skapa roll' knappen, kommer följande gränssnitt att visas för dig. Välj “AWS-tjänst” alternativ från följande alternativ eftersom vi kommer att bifoga detta IAM roll med lambdafunktionen:

I den 'Användningsfall' sektionen, sök i Lambdaservice och välj den. Slå ' Nästa ”-knappen längst ned i gränssnittet för att gå vidare:

nästa gränssnitt , sök efter namnet på Policyns namn som vi konfigurerade tidigare. Från de visade resultaten väljer du policynamn:

Klicka på ' Nästa ”-knappen längst ned på gränssnitt för att gå vidare:

Tillhandahålla en unik identifierare för din IAM roll i följande markerade fält:

Att behålla resten av inställningarna som standard , Klicka på 'Skapa roll' knappen genom att rulla ner till botten av gränssnittet:

Rollen har varit framgångsrikt skapat:

För att lära dig mer om att skapa en IAM-roll i AWS, se den här artikeln: 'Hur man skapar IAM-roller i AWS' .

Steg 4: Skapa en Lambda-funktion

Nästa steg är att skapa Lambda-funktionen. Denna lambda-funktion kommer att innehålla IAM-rollen och kommer att få värdet av hemligheterna när den körs. För att komma åt Lambda-tjänsten, sök på ' Lambda ” i sökfältet i AWS Management-konsol . Klicka på tjänstens namn från resultatet för att besöka konsolen:

Klicka på det ursprungliga gränssnittet för Lambda-tjänsten 'Skapa funktion' knapp:

Detta kommer att visa 'Skapa funktion' gränssnitt. Välj 'Författare från grunden' alternativet och fortsätt vidare genom att ange namnet för Lambda funktion i det markerade fältet:

I den Runtime-fält , Välj ' Python 3.9 ” miljö:

Under Runtime Sektion , det finns en 'Ändra standardexekveringsroll' sektion. Välj 'Använd en befintlig roll' alternativet och ange sedan rollen i 'Befintlig roll' fält:

På samma gränssnitt trycker du på 'Skapa funktion' knappen längst ner i gränssnittet:

För att lära dig mer om hur du skapar en Lambda-funktion, se den här artikeln: 'Hur man skapar en Lambda-funktion med Pyhton Runtime' .

Lambdafunktionen har skapats. Nästa steg är att tillhandahålla koden till Lambda-funktionen. När denna kod exekveras kommer den att visa värdena för Hemlig chef:

importera json
importera boto3
importera bas64
från botocore. undantag importera ClientError

def lambda_handler ( händelse , sammanhang ) :
miljö = händelse [ 'env' ]
hemligt_namn = 'shmaster19/%s/key' % miljö
regionsnamn = 'ap-sydöst-1'

session = boto3. session . Session ( )
klient = session. klient (
Service namn = 'sekreterare' ,
regionsnamn = regionsnamn
)

Prova :
secret_value_response = klient. get_secret_value (
SecretId = hemligt_namn
)
förutom ClientError som fel :
skriva ut ( fel )
annan :
om 'SecretString' i secret_value_response :
hemlighet = json. massor ( secret_value_response [ 'SecretString' ] )
lämna tillbaka hemlighet
annan :
avkodad_binär_hemlig = bas64. b64 avkoda ( secret_value_Response [ 'SecretBinary' ] )
lämna tillbaka avkodad_binär_hemlig
  • importera json: används för att utföra JSON-operationer.
  • importera boto3: är SDK för kommunikation mellan AWS och Python.
  • import base64: Används för att utföra kodnings- och avkodningsfunktioner på binära data som Base64.
  • import ClientError: Detta gör det möjligt för användarna att hantera undantag i den skrivna koden.
  • hemligt_namn: Ange namnet på din hemlighet i den här variabeln. Observera att denna hemlighet innehåller '%s' . Detta är när en användare har flera nycklar av liknande format. Till exempel, om en användare har skapat två hemligheter, t.ex. 'apikey/dev/key' och 'apikey/prod/key' . Sedan i '%s' , om användaren tillhandahåller ' dev ”, kommer Lambdafunktionen att tillhandahålla utvecklingsnyckel (apikey/dev/key) och vice versa.
  • boto. session.Session(): tillåter användare att skapa tjänsteklienter och svar.
  • regionsnamn: Ange namnet på regionen där din AWS-hemlighet är konfigurerad.
  • Secret_value_response: I den här variabeln använder vi ' client.get_secret_value ” funktion som returnerar värdet på hemligheten.
  • Decoded_binary_secert: Efter att ha förvärvat värdet på hemligheten kommer den att avkodas vidare till bas 64-format .

Efter att ha klistrat in koden i Lambda-funktionen, klicka på ' Distribuera ”-knappen för att spara och tillämpa ändringar:

Steg 5: Testa koden

I det här avsnittet av bloggen kommer vi att verifiera om koden fungerar eller inte. För detta ändamål, klicka på ' Testa ”-knappen efter att du lyckats implementera ändringarna av Lambda-funktionen:

Ange i nästa gränssnitt namn på testet händelse i 'Event namn' fält:

Scrolla ner till Event JSON-sektion , specificera ' env ” och ange värdet i JSON-formatet. den ' värde ” av nyckeln kommer att skickas till '%s' . Eftersom hemligheterna som vi har specificerat innehåller ' dev ' värde, ' dev ”-värdet skickas till ” env ” variabel. Lambdafunktionen kommer att identifiera hemligheten när koden exekveras eftersom identifieraren för den specifika hemligheten finns i koden. När du har angett detaljerna klickar du på ' Spara ' knapp:

När evenemanget har skapats, klicka på ' Testa ' knapp:

Här har vi framgångsrikt erhållits värdet av vår angivna hemlighet:

Det är allt från den här guiden.

Slutsats

För att komma åt API-nycklar i Secret Manager med Lambda, skapa först en API Secret, IAM Policy, Roll och Lambda Function och exekvera koden för funktionen. Lambdafunktioner kan anropas för att erhålla värdena för AWS Secret Manager genom att specificera identifieraren för hemligheten när koden körs. Den här artikeln ger steg-för-steg-riktlinjer för hur du kommer åt API-nycklar i AWS Secret Manager med AWS Lambda.