Sådan får du adgang til API-hemmeligheder ved hjælp af AWS Lambda?

Sadan Far Du Adgang Til Api Hemmeligheder Ved Hjaelp Af Aws Lambda



Den bedste praksis for AWS-tjenester involverer to handlinger, nemlig Butik-hent og Audit-Roter. Ved at kombinere disse to praksisser i én, har AWS lanceret Secret Manager, som hjælper brugeren med at beskytte de hemmelige oplysninger om deres applikationer. AWS Secret Manager er meget brugt til at skabe, opbevaring , modificerende , replikere , og roterende databaselegitimationsoplysninger, API-nøgler, OAuth-tokens osv.

Hurtig disposition

Denne artikel dækker følgende aspekter:

Hvad er AWS Lambda?

AWS Lambda er en computertjeneste til at udføre koder i flere miljøer og sprog uden at levere og administrere serverne. Ydermere kan AWS Lambda udløses af flere forskellige tjenester af AWS såsom S3 bucket, API Gateways osv. Denne service skalerer automatisk applikationen og eksekverer effektivt koden uden at kræve, at brugeren installerer yderligere afhængigheder.







For at lære mere om Lambda-service, se denne artikel her: “Kom godt i gang med AWS Lambda” .



Hvad er AWS Secret Manager?

AWS Secret Manager gør det muligt for brugere at sikre og kryptere fortrolige oplysninger af applikationer såsom OAuth-tokens, databaselegitimationsoplysninger, API'er osv. Disse fortrolige oplysninger omtales som en 'hemmelighed' . Disse hemmeligheder er kun tilgængelige for autoriserede instanser og kan roteres for at øge sikkerheden.



Lær mere om lagring af RDS-legitimationsoplysninger i Secret Manager ved at henvise til denne artikel: 'Hvordan gemmer man Amazon RDS-legitimationsoplysninger ved hjælp af Secret Manager?'





Sådan får du adgang til API-hemmeligheder i AWS ved hjælp af AWS Lambda?

Lambda giver indbygget support til flere tjenester f.eks. S3 bucket, API Gateway og Secret Manager. Lambda-funktioner kan bruges til at opnå værdien af ​​de konfigurerede hemmeligheder. Ved at bruge API-hemmelighederne i AWS Lambda Functions kan brugere interagere med flere AWS-tjenester. Sådanne API-hemmeligheder er også vigtige for at godkende lambda-funktionerne.

Følg nedenstående trin for at få adgang til API-nøgler i AWS Secret Manager ved hjælp af AWS Lambda:



  • Trin 1: Opret en API-hemmelighed
  • Trin 2: Opret en IAM-politik
  • Trin 3: Opret en IAM-rolle
  • Trin 4: Opret en Lambda-rolle

Trin 1: Opret en API-hemmelighed

Før vi får adgang til en API-nøgle i AWS Secret Manager, vil vi først lære at oprette en API-hemmelighed . Til dette formål skal du få adgang til 'Secret Manager' service fra AWS Management Console:

På den Hovedkonsol i AWS Secret Manager skal du klikke på 'Gem en ny hemmelighed' knap:

I 'Hemmelig type' blok, vælg “Anden form for hemmelighed” mulighed fra de forskellige viste muligheder:

Rul ned til 'Nøgle/værdi-par' afsnit og give en unikt nøgleværdi-par for din API-hemmelighed. Til tilføje mere nøgleværdi-par , klik på 'Tilføj række' knap:

Næste er 'Krypteringsnøgle' afsnit. AWS giver en standard krypteringsnøgle for hemmeligheden. Brugeren kan dog også angive et brugerdefineret navn til nøglen. Ved at beholde standarden, klik på ' Næste ” knap:

På denne grænseflade skal brugeren angive en unikt navn for deres hemmelighed og en beskrivelse, som er valgfri felt her:

Ved at beholde indstillinger uændrede , gå videre ved at klikke på ' Næste ” knap:

Dernæst kommer Gennemgang sektion. For at bekræfte alle Information forudsat er korrekt , klik på ' butik ”-knap placeret i bunden af ​​grænsefladen:

Hemmeligheden har været med succes oprettet . Klik på ' Genindlæs ”-knappen for at vise hemmelighedens navn på Dashboard :

Trin 2: Opret en IAM-politik

Til oprette en IAM-politik, få adgang til IAM service fra AWS Management Console:

Fra sidebjælke i IAM service, klik på ' Politikker ' mulighed:

På den Politikkonsol , klik på 'Opret politik' knap:

Få mere at vide om AWS IAM-politik ved at henvise til denne artikel: 'AWS IAM-politikeksempler'

Næste er 'Angiv tilladelser' afsnit. Søg og vælg 'Secret Manager' service:

Rul ned til 'Handlinger tilladt' blok. Her, fra de forskellige adgangsniveauer, tryk på ' Læs ' mulighed. Vælg 'Alle læste handlinger' mulighed for at aktivere alle Læs tjenester til denne politik:

Rul ned til ' Ressourcer ” sektion og klik på 'Tilføj ARN' mulighed:

Naviger tilbage til AWS Secret Manager Dashboard og klik på hemmelighedens navn. Kopier ' RNA ' af hemmeligheden under ' Hemmelig ARN ” etiket fra den viste grænseflade:

På den Konsol nu , indsæt det kopierede ARN i ' RNA ' Mark:

Før du klikker på 'Tilføj ARN'er' knappen, klik på 'Denne konto' knappen for at bekræfte hemmelighederne findes på den samme konto. Når du har konfigureret indstillingerne, skal du klikke på 'Tilføj ARN'er' knap:

Efter konfigurere alle indstillinger af politikken skal du klikke på ' Næste ” knap:

I Sektioner med politikdetaljer , angiv navnet på politikken i ' Politikens navn ' Mark:

Klik på ' Opret politik ” knap:

Det politik er blevet oprettet succesfuldt :

Trin 3: Opret en IAM-rolle

I dette afsnit skal du oprette en IAM-rolle, der indeholder de nødvendige tilladelser til Lambda-funktioner for at få adgang til hemmelighederne. Til dette formål skal du klikke på ' Roller ” fra sidebjælken i IAM-rollen, og tryk derefter på 'Skab rolle' knap fra grænsefladen:

Efter at have klikket på 'Skab rolle' knappen, vil følgende grænseflade blive vist for dig. Vælg “AWS service” mulighed fra følgende muligheder, da vi vil vedhæfte dette IAM rolle med lambda-funktionen:

I den 'Use case' sektion, søg i Lambda service og vælg det. Tryk på ' Næste ”-knappen i bunden af ​​grænsefladen for at gå videre:

På den næste grænseflade , søg efter navnet på Politikens navn som vi konfigurerede tidligere. Fra de viste resultater skal du vælge politik navn:

Klik på ' Næste ”-knappen i bunden af interface for at komme videre:

Giv en unik identifikator til din IAM rolle i følgende fremhævede felt:

At holde resten af ​​indstillingerne som standard , klik på 'Skab rolle' knappen ved at rulle ned til bunden af ​​grænsefladen:

Rollen har været succesfuldt oprettet:

For at lære mere om oprettelse af en IAM-rolle i AWS henvises til denne artikel: 'Sådan opretter du IAM-roller i AWS' .

Trin 4: Opret en Lambda-funktion

Det næste trin er at oprette Lambda-funktionen. Denne lambda-funktion vil indeholde IAM-rollen og vil opnå værdien af ​​hemmelighederne, når den udføres. For at få adgang til Lambda-tjenesten skal du søge på ' Lambda ” i søgefeltet i AWS Management konsol . Klik på tjenestens navn fra resultatet for at besøge konsollen:

På den indledende grænseflade for Lambda-tjenesten skal du klikke på 'Opret funktion' knap:

Dette vil vise 'Opret funktion' interface. Vælg 'Forfatter fra bunden' mulighed og fortsæt videre ved at angive navnet på Lambda funktion i det fremhævede felt:

I den Runtime felt , vælg ' Python 3.9 ' miljø:

Nedenfor Runtime sektion , der er en 'Skift standard eksekveringsrolle' afsnit. Vælg 'Brug en eksisterende rolle' og angiv derefter rollen i 'Eksisterende rolle' Mark:

På den samme grænseflade skal du trykke på 'Opret funktion' knap i bunden af ​​grænsefladen:

For at lære mere om oprettelse af en Lambda-funktion, se denne artikel: 'Sådan opretter du en Lambda-funktion med Pyhton Runtime' .

Lambda-funktionen er blevet oprettet. Det næste trin er at levere koden til Lambda-funktionen. Når denne kode udføres, vil den vise værdierne for Secret Manager:

importere json
importere boto3
importere base64
fra botocore. undtagelser importere ClientError

def lambda_handler ( begivenhed , sammenhæng ) :
miljø = begivenhed [ 'env' ]
hemmeligt_navn = 'shmaster19/%s/key' % miljø
regionsnavn = 'ap-sydøst-1'

session = boto3. session . Session ( )
klient = session. klient (
tjeneste_navn = 'secretsmanager' ,
regionsnavn = regionsnavn
)

prøve :
hemmelig_værdi_svar = klient. få_hemmelig_værdi (
SecretId = hemmeligt_navn
)
undtagen ClientError som fejl :
Print ( fejl )
andet :
hvis 'SecretString' i hemmelig_værdi_svar :
hemmelighed = json. belastninger ( hemmelig_værdi_svar [ 'SecretString' ] )
Vend tilbage hemmelighed
andet :
dekodet_binær_hemmelighed = base64. b64 afkode ( hemmelig_værdi_svar [ 'SecretBinary' ] )
Vend tilbage dekodet_binær_hemmelighed
  • import json: bruges til at udføre JSON-operationer.
  • importer boto3: er SDK for kommunikation mellem AWS og Python.
  • import base64: Bruges til at udføre kodnings- og afkodningsfunktioner på binære data som Base64.
  • import klientfejl: Dette gør det muligt for brugerne at håndtere undtagelser i den skrevne kode.
  • hemmeligt_navn: I denne variabel skal du angive navnet på din hemmelighed. Bemærk, at denne hemmelighed indeholder '%s' . Dette er, når en bruger har flere nøgler i et lignende format. For eksempel, hvis en bruger har oprettet to hemmeligheder, f.eks. 'apikey/dev/key' og 'apikey/prod/key' . Derefter i '%s' , hvis brugeren giver ' dev ”, vil Lambda-funktionen give den udviklingsnøgle (apikey/dev/key) og omvendt.
  • boto. session.Session(): giver brugerne mulighed for at oprette serviceklienter og svar.
  • regionsnavn: Angiv navnet på den region, hvor din AWS-hemmelighed er konfigureret.
  • Secret_value_response: I denne variabel bruger vi ' client.get_secret_value ” funktion, som returnerer værdien af ​​hemmeligheden.
  • Decoded_binary_secert: Efter at have erhvervet værdien af ​​hemmeligheden, vil den yderligere blive afkodet til base 64 format .

Når du har indsat koden i Lambda-funktionen, skal du klikke på ' Indsætte knappen for at gemme og anvende ændringer:

Trin 5: Test af koden

I denne sektion af bloggen vil vi verificere, om koden virker eller ej. Til dette formål skal du klikke på ' Prøve ”-knap efter succesfuld implementering af ændringerne til Lambda-funktionen:

På den næste grænseflade skal du angive navnet på testen begivenhed i 'Begivenhedsnavn' Mark:

Rul ned til Event JSON sektion , angiv ' env ”-tasten, og angiv værdien i JSON-formatet. Det ' værdi ” af nøglen vil blive videregivet til '%s' . Da de hemmeligheder, som vi har specificeret, indeholder ' dev 'værdi, ' dev værdien overføres til ' env ' variabel. Lambda-funktionen vil identificere hemmeligheden, når koden udføres, da identifikatoren for den specifikke hemmelighed er angivet i koden. Når du har angivet detaljerne, skal du klikke på ' Gemme ” knap:

Når begivenheden er oprettet, skal du klikke på ' Prøve ” knap:

Her har vi opnået med succes værdien af ​​vores specificerede hemmelighed:

Det er alt fra denne guide.

Konklusion

For at få adgang til API-nøgler i Secret Manager ved hjælp af Lambda skal du først oprette en API Secret, IAM Policy, Role og Lambda Function og udføre koden for funktionen. Lambda-funktioner kan aktiveres for at opnå værdierne for AWS Secret Manager ved at angive hemmelighedens identifikator, når koden udføres. Denne artikel giver trin-for-trin retningslinjer for, hvordan du får adgang til API-nøgler i AWS Secret Manager ved hjælp af AWS Lambda.