Wie greife ich mit AWS Lambda auf API-Geheimnisse zu?

Wie Greife Ich Mit Aws Lambda Auf Api Geheimnisse Zu



Die Best Practices von AWS Services umfassen zwei Aktionen, nämlich Store-Retrieve und Audit-Rotate. Durch die Kombination dieser beiden Praktiken hat AWS Secret Manager auf den Markt gebracht, der dem Benutzer hilft, die geheimen Informationen seiner Anwendungen zu schützen. AWS Secret Manager wird häufig zum Erstellen verwendet. Speicherung , modifizieren , replizieren und rotierende Datenbankanmeldeinformationen, API-Schlüssel, OAuth-Tokens usw.

Kurzer Überblick

Dieser Artikel behandelt die folgenden Aspekte:

Was ist AWS Lambda?

AWS Lambda ist ein Computerdienst zum Ausführen von Codes in mehreren Umgebungen und Sprachen, ohne dass Server bereitgestellt und verwaltet werden müssen. Darüber hinaus kann AWS Lambda durch mehrere verschiedene Dienste von AWS wie S3-Bucket, API-Gateways usw. ausgelöst werden. Dieser Dienst skaliert die Anwendung automatisch und führt den Code effizient aus, ohne dass der Benutzer zusätzliche Abhängigkeiten installieren muss.







Weitere Informationen zum Lambda-Service finden Sie in diesem Artikel: „Erste Schritte mit AWS Lambda“ .



Was ist AWS Secret Manager?

Mit AWS Secret Manager können Benutzer die Daten sichern und verschlüsseln vertrauliche Informationen von Anwendungen wie OAuth-Tokens, Datenbankanmeldeinformationen, APIs usw. Diese vertraulichen Informationen werden als a bezeichnet 'Geheimnis' . Auf diese Geheimnisse haben nur autorisierte Stellen Zugriff und können zur Erhöhung der Sicherheit rotiert werden.



Weitere Informationen zum Speichern von RDS-Anmeldeinformationen in Secret Manager finden Sie in diesem Artikel: „Wie speichere ich Amazon RDS-Anmeldeinformationen mit Secret Manager?“





Wie greife ich mit AWS Lambda auf API-Geheimnisse in AWS zu?

Lambda bietet integrierte Unterstützung für mehrere Dienste, z. S3-Bucket, API Gateway und Secret Manager. Lambda-Funktionen können verwendet werden, um den Wert der konfigurierten Geheimnisse zu ermitteln. Durch die Verwendung der API-Geheimnisse in AWS Lambda Functions können Benutzer mit mehreren Diensten von AWS interagieren. Solche API-Geheimnisse sind auch für die Autorisierung der Lambda-Funktionen wichtig.

Um mit AWS Lambda auf API-Schlüssel in AWS Secret Manager zuzugreifen, führen Sie die folgenden Schritte aus:



  • Schritt 1: Erstellen Sie ein API-Geheimnis
  • Schritt 2: Erstellen Sie eine IAM-Richtlinie
  • Schritt 3: Erstellen Sie eine IAM-Rolle
  • Schritt 4: Erstellen Sie eine Lambda-Rolle

Schritt 1: Erstellen Sie ein API-Geheimnis

Bevor wir in AWS Secret Manager auf einen API-Schlüssel zugreifen, lernen wir zunächst, wie man das macht Erstellen Sie ein API-Geheimnis . Zu diesem Zweck greifen Sie auf die zu „Geheimer Manager“ Service von der AWS-Managementkonsole:

Auf der Hauptkonsole Klicken Sie im AWS Secret Manager auf „Speichern Sie ein neues Geheimnis“ Taste:

Im „Geheimer Typ“ Block, wählen Sie die „Andere Art von Geheimnis“ Wählen Sie aus den verschiedenen angezeigten Optionen eine Option aus:

Scrollen Sie nach unten zum „Schlüssel/Wert-Paare“ Abschnitt und stellen Sie eine eindeutiges Schlüssel-Wert-Paar für Ihr API-Geheimnis. Zu hinzufügen mehr Schlüssel-Wert-Paare , Klick auf das 'Zeile hinzufügen' Taste:

Als nächstes kommt das „Verschlüsselungsschlüssel“ Abschnitt. AWS bietet eine Standardverschlüsselungsschlüssel für das Geheimnis. Der Benutzer kann jedoch auch einen benutzerdefinierten Namen für den Schlüssel vergeben. Wenn Sie die Standardeinstellung beibehalten, klicken Sie auf „ Nächste ' Taste:

Auf dieser Schnittstelle muss der Benutzer eine bereitstellen einzigartiger Name für ihr Geheimnis und a Beschreibung, die optional ist Feld hier:

Durch die Einhaltung der Einstellungen unverändert , fahren Sie fort, indem Sie auf „ Nächste ' Taste:

Als nächstes kommt das Rezensionsbereich. Um alles zu bestätigen Information vorausgesetzt ist richtig , Klick auf das ' Speichern ”-Schaltfläche unten auf der Benutzeroberfläche:

Das Geheimnis war Erfolgreich erstellt . Klick auf das ' Neu laden ”-Taste, um den Namen des Geheimnisses auf dem anzuzeigen Armaturenbrett :

Schritt 2: Erstellen Sie eine IAM-Richtlinie

Zu eine IAM-Richtlinie erstellen, Greife auf ... zu IAM-Dienst über die AWS-Managementkonsole:

Von dem Seitenleiste des IAM Klicken Sie auf „ Richtlinien ' Möglichkeit:

Auf der Richtlinienkonsole , Klick auf das „Richtlinie erstellen“ Taste:

Weitere Informationen zur AWS IAM-Richtlinie finden Sie in diesem Artikel: „AWS IAM-Richtlinienbeispiele“

Als nächstes kommt das „Berechtigungen festlegen“ Abschnitt. Suchen und wählen Sie die aus „Geheimer Manager“ Service:

Scrollen Sie nach unten zum „Aktionen erlaubt“ Block. Tippen Sie hier in den verschiedenen Zugriffsebenen auf „ Lesen ' Möglichkeit. Wähle aus „Alle Leseaktionen“ Option zu Aktivieren Sie alle Lesevorgänge Leistungen für diese Police:

Runterscrollen zum ' Ressourcen ” Abschnitt und klicken Sie auf „ARN hinzufügen“ Möglichkeit:

Navigieren Sie zurück zu AWS Secret Manager-Dashboard und klicken Sie auf den Namen des Geheimnisses. Kopiere das ' RNA ” des Geheimnisses unter dem „ Geheimer ARN ”-Label aus der angezeigten Schnittstelle:

Auf der Konsole jetzt , fügen Sie den kopierten ARN in das Feld „ ein. RNA ' Feld:

Bevor Sie auf klicken „ARNs hinzufügen“ Klicken Sie auf die Schaltfläche 'Dieses Konto' Klicken Sie auf die Schaltfläche, um zu bestätigen, dass die Geheimnisse im selben Konto vorhanden sind. Klicken Sie nach dem Konfigurieren der Einstellungen auf „ARNs hinzufügen“ Taste:

Nach konfigurieren all die Einstellungen Klicken Sie in der Richtlinie auf „ Nächste ' Taste:

Im Abschnitte mit Richtliniendetails Geben Sie im Feld „ Versicherungsname ' Feld:

Klick auf das ' Richtlinie erstellen ' Taste:

Der Politik wurde erschaffen erfolgreich :

Schritt 3: Erstellen Sie eine IAM-Rolle

Erstellen Sie in diesem Abschnitt eine IAM-Rolle, die die erforderlichen Berechtigungen für Lambda-Funktionen für den Zugriff auf die Geheimnisse enthält. Klicken Sie dazu auf die Schaltfläche „ Rollen ”-Option in der Seitenleiste der IAM-Rolle und tippen Sie dann auf „Rolle erstellen“ Schaltfläche auf der Benutzeroberfläche:

Nach dem Klicken auf „Rolle erstellen“ Klicken Sie auf die Schaltfläche, die folgende Oberfläche wird Ihnen angezeigt. Wähle aus „AWS-Dienst“ Wählen Sie eine der folgenden Optionen aus, da wir diese anhängen werden IAM-Rolle mit der Lambda-Funktion:

Im 'Anwendungsfall' Abschnitt, durchsuchen Sie die Lambda-Service und wählen Sie es aus. Klicken Sie auf „ Nächste Klicken Sie unten auf der Benutzeroberfläche auf die Schaltfläche, um fortzufahren:

Auf der nächste Schnittstelle , suchen Sie nach dem Namen des Name der Richtlinie die wir zuvor konfiguriert haben. Wählen Sie aus den angezeigten Ergebnissen die aus Versicherungsname:

Drücke den ' Nächste ”-Taste unten im Schnittstelle, um fortzufahren:

Zur Verfügung stellen eindeutige Kennung für dein IAM-Rolle im folgenden hervorgehobenen Feld:

Halten Sie die Die restlichen Einstellungen gelten als Standard , Klick auf das „Rolle erstellen“ Klicken Sie auf die Schaltfläche, indem Sie zum unteren Rand der Benutzeroberfläche scrollen:

Die Rolle war erfolgreich erstellt:

Weitere Informationen zum Erstellen einer IAM-Rolle in AWS finden Sie in diesem Artikel: „So erstellen Sie IAM-Rollen in AWS“ .

Schritt 4: Erstellen Sie eine Lambda-Funktion

Der nächste Schritt besteht darin, die Lambda-Funktion zu erstellen. Diese Lambda-Funktion enthält die IAM-Rolle und erhält bei der Ausführung den Wert der Geheimnisse. Um auf den Lambda-Dienst zuzugreifen, suchen Sie nach „ Lambda ” in der Suchleiste des AWS-Managementkonsole . Klicken Sie im Ergebnis auf den Namen des Dienstes, um die Konsole aufzurufen:

Klicken Sie auf der ersten Benutzeroberfläche des Lambda-Dienstes auf „Funktion erstellen“ Taste:

Dadurch wird angezeigt „Funktion erstellen“ Schnittstelle. Wähle aus „Autor von Grund auf“ Option und fahren Sie fort, indem Sie den Namen dafür angeben Lambda-Funktion im hervorgehobenen Feld:

Im Laufzeitfeld , wähle aus ' Python 3.9 ' Umfeld:

Unter dem Laufzeitabschnitt , da ist ein „Standardausführungsrolle ändern“ Abschnitt. Wähle aus „Eine vorhandene Rolle nutzen“ Option und geben Sie dann die Rolle in der an „Bestehende Rolle“ Feld:

Tippen Sie auf derselben Oberfläche auf „Funktion erstellen“ Schaltfläche am unteren Rand der Benutzeroberfläche:

Weitere Informationen zum Erstellen einer Lambda-Funktion finden Sie in diesem Artikel: „So erstellen Sie eine Lambda-Funktion mit Pyhton Runtime“ .

Die Lambda-Funktion wurde erstellt. Der nächste Schritt besteht darin, den Code für die Lambda-Funktion bereitzustellen. Wenn dieser Code ausgeführt wird, werden die Werte angezeigt Geheimmanager:

importieren json
importieren boto3
importieren base64
von botocore. Ausnahmen importieren ClientError

def lambda_handler ( Ereignis , Kontext ) :
Umfeld = Ereignis [ 'env' ]
geheimer_Name = 'shmaster19/%s/key' % Umfeld
Regionsname = 'ap-southeast-1'

Sitzung = boto3. Sitzung . Sitzung ( )
Klient = Sitzung. Klient (
Dienstname = 'Geheimnismanager' ,
Regionsname = Regionsname
)

versuchen :
Secret_value_response = Klient. get_secret_value (
SecretId = geheimer_Name
)
außer ClientError als Fehler :
drucken ( Fehler )
anders :
Wenn 'SecretString' In Secret_value_response :
Geheimnis = json. Ladungen ( Secret_value_response [ 'SecretString' ] )
zurückkehren Geheimnis
anders :
decoded_binary_secret = base64. b64decode ( Secret_value_Response [ 'SecretBinary' ] )
zurückkehren decoded_binary_secret
  • JSON importieren: Wird zum Ausführen von JSON-Vorgängen verwendet.
  • boto3 importieren: ist das SDK für die Kommunikation zwischen AWS und Python.
  • base64 importieren: Wird zum Ausführen von Kodierungs- und Dekodierungsfunktionen für Binärdaten als Base64 verwendet.
  • ClientError importieren: Dies ermöglicht es den Benutzern, Ausnahmen im geschriebenen Code zu behandeln.
  • geheimer_Name: Geben Sie in dieser Variablen den Namen Ihres Geheimnisses an. Beachten Sie, dass dieses Geheimnis enthält '%S' . Dies ist der Fall, wenn ein Benutzer über mehrere Schlüssel mit einem ähnlichen Format verfügt. Wenn ein Benutzer beispielsweise zwei Geheimnisse erstellt hat, z. B. „apikey/dev/key“ Und „apikey/prod/key“ . Dann im '%S' , wenn der Benutzer „ Entwickler “, wird die Lambda-Funktion bereitstellen Entwicklungsschlüssel (apikey/dev/key) und umgekehrt.
  • boto. session.Session(): Ermöglicht Benutzern das Erstellen von Service-Clients und -Antworten.
  • Regionsname: Geben Sie den Namen der Region an, in der Ihr AWS-Geheimnis konfiguriert ist.
  • Secret_value_response: In dieser Variablen verwenden wir „ client.get_secret_value ”-Funktion, die den Wert des Geheimnisses zurückgibt.
  • Decoded_binary_secert: Nachdem der Wert des Geheimnisses ermittelt wurde, wird es weiter entschlüsselt Basis 64-Format .

Nachdem Sie den Code in die Lambda-Funktion eingefügt haben, klicken Sie auf „ Einsetzen ”-Taste zum Speichern und Anwenden von Änderungen:

Schritt 5: Testen des Codes

In diesem Abschnitt des Blogs überprüfen wir, ob der Code funktioniert oder nicht. Klicken Sie dazu auf die Schaltfläche „ Prüfen ”-Schaltfläche nach erfolgreicher Bereitstellung der Änderungen an der Lambda-Funktion:

Geben Sie auf der nächsten Schnittstelle Folgendes ein Name für den Test Veranstaltung in der 'Veranstaltungsname' Feld:

Scrollen Sie nach unten zum JSON-Abschnitt für Ereignisse , Präzisiere das ' env ”-Schlüssel und geben Sie den Wert im JSON-Format an. Der ' Wert ” des Schlüssels wird weitergegeben '%S' . Da die von uns angegebenen Geheimnisse das „ Entwickler ” Wert, der „ Entwickler Der Wert wird an „ übergeben. env ” variabel. Die Lambda-Funktion identifiziert das Geheimnis, wenn der Code ausgeführt wird, da die Kennung des spezifischen Geheimnisses im Code bereitgestellt wird. Nachdem Sie die Details angegeben haben, klicken Sie auf „ Speichern ' Taste:

Wenn das Ereignis erfolgreich erstellt wurde, klicken Sie auf „ Prüfen ' Taste:

Hier haben wir erfolgreich erhalten der Wert unseres angegebenen Geheimnisses:

Das ist alles aus diesem Leitfaden.

Abschluss

Um mit Lambda auf API-Schlüssel im Secret Manager zuzugreifen, erstellen Sie zunächst ein API-Geheimnis, eine IAM-Richtlinie, eine Rolle und eine Lambda-Funktion und führen Sie den Code der Funktion aus. Lambda-Funktionen können aufgerufen werden, um die Werte des AWS Secret Managers abzurufen, indem beim Ausführen des Codes die Kennung des Geheimnisses angegeben wird. Dieser Artikel enthält Schritt-für-Schritt-Anleitungen für den Zugriff auf API-Schlüssel in AWS Secret Manager mit AWS Lambda.