Hoe toegang krijgen tot API-geheimen met AWS Lambda?

Hoe Toegang Krijgen Tot Api Geheimen Met Aws Lambda



De best practices van AWS Services omvatten twee acties, namelijk Store-Retrieve en Audit-Rotate. Door deze twee praktijken in één te combineren, heeft AWS Secret Manager gelanceerd, waarmee de gebruiker de geheime informatie van zijn applicaties kan beschermen. AWS Secret Manager wordt veel gebruikt voor het maken, opslaan , wijzigen , repliceren en roterende databasereferenties, API-sleutels, OAuth-tokens, enz.

Snel overzicht

Dit artikel behandelt de volgende aspecten:

Wat is AWS Lambda?

AWS Lambda is een computerservice voor het uitvoeren van codes in meerdere omgevingen en talen zonder de servers te leveren en te beheren. Bovendien kan AWS Lambda worden geactiveerd door meerdere verschillende services van AWS, zoals S3-bucket, API-gateways, enz. Deze service schaalt de applicatie automatisch en voert de code efficiënt uit zonder dat de gebruiker extra afhankelijkheden hoeft te installeren.







Voor meer informatie over Lambda-service kunt u dit artikel hier raadplegen: “Aan de slag met AWS Lambda” .



Wat is AWS Secret Manager?

Met AWS Secret Manager kunnen gebruikers de vertrouwelijke informatie van applicaties zoals OAuth-tokens, databasereferenties, API's, enz. Deze vertrouwelijke informatie wordt een 'geheim' . Deze geheimen zijn alleen toegankelijk voor bevoegde instanties en kunnen worden gerouleerd om de veiligheid te vergroten.



Lees dit artikel voor meer informatie over het opslaan van RDS-inloggegevens in Secret Manager: 'Hoe Amazon RDS-referenties opslaan met behulp van Secret Manager?'





Hoe toegang krijgen tot API-geheimen in AWS met AWS Lambda?

Lambda biedt ingebouwde ondersteuning voor meerdere services, b.v. S3-bucket, API Gateway en Secret Manager. Lambda-functies kunnen worden gebruikt om de waarde van de geconfigureerde geheimen te verkrijgen. Door gebruik te maken van de API-geheimen in AWS Lambda Functions kunnen gebruikers communiceren met meerdere diensten van AWS. Dergelijke API-geheimen zijn ook belangrijk voor het autoriseren van de lambda-functies.

Om toegang te krijgen tot API-sleutels in AWS Secret Manager met behulp van AWS Lambda, volgt u de onderstaande stappen:



  • Stap 1: Maak een API-geheim
  • Stap 2: Maak een IAM-beleid
  • Stap 3: Maak een IAM-rol aan
  • Stap 4: Maak een Lambda-rol

Stap 1: Maak een API-geheim

Voordat we toegang krijgen tot een API-sleutel in AWS Secret Manager, zullen we dit eerst leren maak een API-geheim . Ga hiervoor naar de “Geheime manager” dienst van de AWS-beheerconsole:

Op de Hoofdconsole van de AWS Secret Manager, klik op de “Bewaar een nieuw geheim” knop:

In de “Geheim soort” blok, kies de “Ander soort geheim” optie uit de verschillende weergegeven opties:

Scroll naar beneden naar de “Sleutel/waarde-paren” sectie en geef een uniek sleutel-waardepaar voor uw API-geheim. Naar toevoegen meer sleutel-waardeparen , Klik op de 'Rij toevoegen' knop:

Het volgende is de “Encryptiesleutel” sectie. AWS biedt een standaard coderingssleutel voor het geheim. De gebruiker kan echter ook een aangepaste naam voor de sleutel opgeven. Door de standaard te behouden, klikt u op de “ Volgende ' knop:

Op deze interface moet de gebruiker een unieke naam voor hun geheim en een beschrijving die optioneel is veld hier:

Door het behouden van de instellingen ongewijzigd , ga verder door op de knop “ Volgende ' knop:

Vervolgens komt de Beoordelingssectie. Om alle te bevestigen informatie voorzien is juist , Klik op de ' Winkel ' knop onderaan de interface:

Het geheim is geweest succesvol aangemaakt . Klik op de ' Herladen '-knop om de naam van het geheim weer te geven op de Dashboard :

Stap 2: Maak een IAM-beleid

Naar een IAM-beleid opstellen, Toegang krijgen tot IAM-service vanuit de AWS-beheerconsole:

Van de zijbalk van het IAM dienst, klik op de “ Beleid ' keuze:

Op de Beleidsconsole , Klik op de “Beleid maken” knop:

Lees meer over het AWS IAM-beleid door dit artikel te raadplegen: “AWS IAM-beleidsvoorbeelden”

Het volgende is de “Machtigingen opgeven” sectie. Zoek en selecteer de “Geheime manager” dienst:

Scroll naar beneden naar de “Acties toegestaan” blok. Tik hier vanuit de verschillende toegangsniveaus op de “ Lezen ' keuze. Selecteer de “Alle leesacties” optie om schakel alle Lezen in diensten voor dit beleid:

Naar beneden scrollen naar de ' Bronnen ' en klik op de “ARN toevoegen” keuze:

Navigeer terug naar de AWS Secret Manager-dashboard en klik op de naam van het geheim. Kopieer de “ RNA ' van het geheim onder de ' Geheim ARN ”-label van de weergegeven interface:

Op de Console nu , plak de gekopieerde ARN in de “ RNA ' veld:

Voordat u op klikt “ARN's toevoegen” knop, klik op de 'Dit account' om te bevestigen dat de geheimen in hetzelfde account bestaan. Nadat u de instellingen heeft geconfigureerd, klikt u op de “ARN's toevoegen” knop:

Na configureren al de instellingen van het beleid, klik op de “ Volgende ' knop:

In de Beleidsdetails secties , geef de naam voor het beleid op in het vak “ Beleidsnaam ' veld:

Klik op de ' Maak beleid ' knop:

De beleid Is gemaakt met succes :

Stap 3: Maak een IAM-rol aan

Maak in deze sectie een IAM-rol die de vereiste machtigingen bevat voor Lambda-functies om toegang te krijgen tot de geheimen. Klik hiervoor op de “ Rollen 'optie in de zijbalk van de IAM-rol en tik vervolgens op de “Rol creëren” knop van de interface:

Na het klikken op de “Rol creëren” knop, wordt de volgende interface aan u weergegeven. Selecteer de “AWS-service” optie uit de volgende opties, aangezien we dit zullen bijvoegen IAM-rol met de lambdafunctie:

In de “Gebruiksscenario” sectie, zoek op de Lambda-service en selecteer het. Druk op de ' Volgende ' onderaan de interface om verder te gaan:

Op de volgende interface , zoek naar de naam van de De naam van het beleid die we eerder hebben geconfigureerd. Selecteer uit de weergegeven resultaten de beleidsnaam:

Klik op de ' Volgende '-knop onderaan de interface om verder te gaan:

Verschaffen unieke identificatie Voor jouw IAM-rol in het volgende gemarkeerde veld:

Het houden van de rest van de instellingen als standaard , Klik op de “Rol creëren” door naar de onderkant van de interface te scrollen:

De rol is geweest met succes gemaakt:

Raadpleeg dit artikel voor meer informatie over het creëren van een IAM-rol in AWS: “Hoe IAM-rollen in AWS te creëren” .

Stap 4: Maak een Lambda-functie

De volgende stap is het maken van de Lambda-functie. Deze lambda-functie zal de IAM-rol bevatten en zal de waarde van de geheimen verkrijgen wanneer deze wordt uitgevoerd. Om toegang te krijgen tot de Lambda-service, zoekt u op de “ Lambda ' in de zoekbalk van de AWS-beheerconsole . Klik op de naam van de service in het resultaat om de console te bezoeken:

Klik in de initiële interface van de Lambda Service op de “Creëer functie” knop:

Hierdoor wordt de “Creëer functie” koppel. Selecteer de “Auteur vanaf het begin” optie en ga verder door de naam op te geven voor de Lambda-functie in het gemarkeerde veld:

In de Runtime-veld , selecteer de ' Python 3.9 ' omgeving:

Onder de Runtime-sectie , er is een “Standaard uitvoeringsrol wijzigen” sectie. Selecteer de “Gebruik een bestaande rol” optie en geef vervolgens de rol op in het “Bestaande rol” veld:

Tik op dezelfde interface op de “Creëer functie” knop onderaan de interface:

Raadpleeg dit artikel voor meer informatie over het maken van een Lambda-functie: “Een Lambda-functie maken met Pyhton Runtime” .

De Lambda-functie is gemaakt. De volgende stap is het verstrekken van de code aan de Lambda-functie. Wanneer deze code wordt uitgevoerd, worden de waarden van de Geheime manager:

importeren json
importeren boto3
importeren basis64
van botocore. uitzonderingen importeren KlantFout

def lambda_handler ( evenement , context ) :
omgeving = evenement [ 'env' ]
geheime_naam = 'shmaster19/%s/sleutel' % omgeving
regionaam = 'ap-zuidoost-1'

sessie = boto3. sessie . Sessie ( )
cliënt = sessie. cliënt (
servicenaam = 'geheimenmanager' ,
regionaam = regionaam
)

poging :
geheime_waarde_reactie = cliënt. get_geheime_waarde (
Geheime ID = geheime_naam
)
behalve ClientError als fout :
afdrukken ( fout )
anders :
als 'GeheimeString' in geheime_waarde_reactie :
geheim = json. ladingen ( geheime_waarde_reactie [ 'GeheimeString' ] )
opbrengst geheim
anders :
gedecodeerd_binair_geheim = basis64. b64decoderen ( geheime_waarde_reactie [ 'GeheimBinair' ] )
opbrengst gedecodeerd_binair_geheim
  • json importeren: gebruikt om JSON-bewerkingen uit te voeren.
  • importeer boto3: is de SDK voor communicatie tussen AWS en Python.
  • importbasis64: Wordt gebruikt voor het uitvoeren van coderings- en decoderingsfuncties op binaire gegevens als Base64.
  • importeer ClientError: Hierdoor kunnen de gebruikers uitzonderingen in de geschreven code afhandelen.
  • geheime_naam: Geef in deze variabele de naam van uw geheim op. Merk op dat dit geheim bevat '%S' . Dit is wanneer een gebruiker meerdere sleutels van een vergelijkbaar formaat heeft. Als een gebruiker bijvoorbeeld twee geheimen heeft aangemaakt, bijvoorbeeld “apikey/ontwikkelaar/sleutel” En “apikey/prod/sleutel” . Dan in de '%S' , als de gebruiker “ ontwikkelaar ”, zorgt de Lambda-functie voor de ontwikkelingssleutel (apikey/dev/key) en omgekeerd.
  • bot. sessie.Sessie(): stelt gebruikers in staat serviceclients en reacties te creëren.
  • regionaam: Geef de naam op van de regio waarin uw AWS-geheim is geconfigureerd.
  • Geheime_waarde_reactie: In deze variabele gebruiken we de “ client.get_secret_value ”-functie die de waarde van het geheim retourneert.
  • Gedecodeerde_binaire_secert: Nadat de waarde van het geheim is verkregen, wordt het verder gedecodeerd basis 64-formaat .

Nadat je de code in de Lambda-functie hebt geplakt, klik je op de knop “ Aanwenden '-knop om wijzigingen op te slaan en toe te passen:

Stap 5: De code testen

In dit gedeelte van de blog zullen we verifiëren of de code werkt of niet. Klik hiervoor op de “ Test '-knop na het succesvol implementeren van de wijzigingen in de Lambda-functie:

Geef op de volgende interface het naam voor de test evenement in de 'Evenement naam' veld:

Scroll naar beneden naar de Gebeurtenis-JSON-sectie , specificeer de ' omg '-toets en geef de waarde op in de JSON-indeling. De ' waarde ” van de sleutel zal worden doorgegeven '%S' . Omdat de geheimen die we hebben gespecificeerd de “ ontwikkelaar 'waarde, de' ontwikkelaar ' waarde wordt doorgegeven aan de ' omg Variabel. De Lambda-functie identificeert het geheim wanneer de code wordt uitgevoerd, aangezien de identificatie van het specifieke geheim in de code wordt gegeven. Nadat u de details heeft opgegeven, klikt u op de knop “ Redden ' knop:

Wanneer het evenement succesvol is aangemaakt, klikt u op de “ Test ' knop:

Hier hebben we met succes behaald de waarde van ons gespecificeerde geheim:

Dat komt allemaal uit deze gids.

Conclusie

Om toegang te krijgen tot API-sleutels in Secret Manager met behulp van Lambda, maakt u eerst een API Secret, IAM Policy, Role en Lambda Function aan en voert u de code van de functie uit. Lambda-functies kunnen worden aangeroepen om de waarden van de AWS Secret Manager te verkrijgen door de identificatie van het geheim op te geven bij het uitvoeren van de code. Dit artikel biedt stapsgewijze richtlijnen voor het openen van API-sleutels in AWS Secret Manager met behulp van AWS Lambda.