Sichern Sie Ihre Funktionen per Tag - AWS Lambda

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Sichern Sie Ihre Funktionen per Tag

Die folgenden Schritte zeigen eine Möglichkeit, wie Sie mit ABAC Berechtigungen für Funktionen einrichten können. In diesem Beispielszenario erstellen Sie vier IAM-Berechtigungsrichtlinien. Anschließend fügen Sie diese Richtlinien einer neuen IAM-Rolle hinzu. Schließlich erstellen Sie einen IAM-Benutzer und erteilen diesem Benutzer die Berechtigung, die neue Rolle zu übernehmen.

Voraussetzungen

Stellen Sie sicher, dass Sie über eine Lambda-Ausführungsrolle verfügen. Sie verwenden diese Rolle, wenn Sie IAM-Berechtigungen erteilen und eine Lambda-Funktion erstellen.

Schritt 1: Tags für neue Funktionen anfordern

Wenn Sie ABAC mit Lambda verwenden, empfiehlt es sich, dass alle Funktionen über Tags verfügen. Auf diese Weise können Sie sicherstellen, dass Ihre ABAC-Berechtigungsrichtlinien wie erwartet funktionieren.

Erstellen Sie eine IAM-Richtlinie ähnlich dem folgenden Beispiel. Diese Richtlinie verwendet die TagKeys Bedingungsschlüssel aws: RequestTag /tag-key, aws: ResourceTag /tag-key und aws:, um zu verlangen, dass sowohl neue Funktionen als auch der IAM-Prinzipal, der die Funktionen erstellt, das Tag haben. project Der ForAllValues-Modifikator stellt sicher, dass project das einzige zulässige Tag ist. Wenn Sie den ForAllValues-Modifikator nicht angeben, können die Benutzer der Funktion andere Tags hinzufügen, solange diese auch project übergeben.

Beispiel – Tags für neue Funktionen anfordern
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "lambda:CreateFunction", "lambda:TagResource" ], "Resource": "arn:aws:lambda:*:*:function:*", "Condition": { "StringEquals": { "aws:RequestTag/project": "${aws:PrincipalTag/project}", "aws:ResourceTag/project": "${aws:PrincipalTag/project}" }, "ForAllValues:StringEquals": { "aws:TagKeys": "project" } } } }

Schritt 2: Aktionen basierend auf Tags zulassen, die einer Lambda-Funktion und einem IAM-Prinzipal zugeordnet sind

Erstellen Sie eine zweite IAM-Richtlinie mithilfe des ResourceTagBedingungsschlüssels aws: /tag-key, um zu verlangen, dass das Tag des Prinzipals mit dem Tag übereinstimmt, das an die Funktion angehängt ist. Die folgende Beispielrichtlinie erlaubt es Prinzipalen mit dem project-Tag, Funktionen mit dem project-Tag aufzurufen. Wenn eine Funktion andere Tags hat, wird die Aktion verweigert.

Beispiel – Erfordert übereinstimmende Tags für Funktion und IAM-Prinzipal
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunction" ], "Resource": "arn:aws:lambda:*:*:function:*", "Condition": { "StringEquals": { "aws:ResourceTag/project": "${aws:PrincipalTag/project}" } } } ] }

Schritt 3: Erteilen von Listenberechtigungen

Erstellen Sie eine Richtlinie, die es dem Prinzipal ermöglicht, Lambda-Funktionen und IAM-Rollen aufzulisten. Dadurch kann der Prinzipal alle Lambda-Funktionen und IAM-Rollen auf der Konsole und beim Aufrufen der API-Aktionen sehen.

Beispiel – Erteilen von Lambda- und IAM-Listenberechtigungen
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllResourcesLambdaNoTags", "Effect": "Allow", "Action": [ "lambda:GetAccountSettings", "lambda:ListFunctions", "iam:ListRoles" ], "Resource": "*" } ] }

Schritt 4: Erteilen von IAM-Berechtigungen

Erstellen Sie eine Richtlinie, die iam: zulässt. PassRole Diese Berechtigung ist erforderlich, wenn Sie einer Funktion eine Ausführungsrolle zuweisen. Ersetzen Sie in der folgenden Beispielrichtlinie den Beispiel-ARN durch den ARN Ihrer Lambda-Ausführungsrolle.

Anmerkung

Verwenden Sie den ResourceTag-Bedingungsschlüssel nicht in einer Richtlinie mit der iam:PassRole-Aktion. Sie können das Tag nicht für eine IAM-Rolle verwenden, um zu steuern, wer Zugriff zur Weiterleitung diese Rolle haben soll. Weitere Informationen zu den Berechtigungen, die für die Übergabe einer Rolle an einen Dienst erforderlich sind, finden Sie unter Einem Benutzer Berechtigungen zur Übergabe einer Rolle an einen AWS Dienst gewähren.

Beispiel – Erteilt die Berechtigung zum Übergeben der Ausführungsrolle
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": "arn:aws:iam::111122223333:role/lambda-ex" } ] }

Schritt 5: Erstellen der IAM-Rolle

Es hat sich bewährt, Rollen zum Delegieren von Berechtigungen zu verwenden. Erstellen Sie eine IAM-Rolle mit dem Namen abac-project-role:

  • In Schritt 1: Vertrauenswürdige Entität auswählen: Wählen Sie wählen AWS -Konto und wählen Sie dann Dieses Konto.

  • In Schritt 2: Hinzufügen von Berechtigungen: Fügen Sie die vier IAM-Richtlinien hinzu, die Sie in den vorherigen Schritten erstellt haben.

  • In Schritt 3: Benennen, Überprüfen und Erstellen: Wählen Sie Tag hinzufügen. Geben Sie für Key (Schlüssel) project ein. Geben Sie keinen Value (Wert) ein.

Schritt 6: Erstellen eines IAM-Benutzers

Erstellen Sie einen IAM-Benutzer mit dem Namen abac-test-user. Wählen Sie im Abschnitt Set permissions (Berechtigungen festlegen) die Option Attach existing policies directly (Vorhandene Richtlinien direkt anhängen) und dann Create policy (Richtlinie erstellen) aus. Geben Sie die folgende Richtliniendefinition ein. Ersetzen Sie 111122223333 durch Ihre AWS -Konto-ID. Diese Richtlinie erlaubt es abac-test-user, abac-project-role anzunehmen.

Beispiel – IAM-Benutzer die Übernahme der ABAC-Rolle erlauben
{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::111122223333:role/abac-project-role" } }

Schritt 7: Testen der Berechtigungen

  1. Melden Sie sich an der AWS Konsole an alsabac-test-user. Weitere Informationen finden Sie unter Anmeldung als IAM-Benutzer.

  2. Wechseln Sie zur abac-project-role-Rolle. Weitere Informationen finden Sie unter Wechseln zu einer Rolle (Konsole).

  3. Erstellen einer Lambda-Funktion:

    • Wählen Sie unter Permissions (Berechtigungen) die Option Change default execution role (Standardausführungsrolle ändern) und dann unter Execution role (Ausführungsrolle) die Option Use an existing role (Vorhandene Rolle verwenden). Wählen Sie dieselbe Ausführungsrolle aus, die Sie in Schritt 4: Erteilen von IAM-Berechtigungen verwendet haben.

    • Wählen Sie unter Advanced settings (Erweiterte Einstellungen) die Option Enable tags (Tags ermöglichen) und wählen Sie dann Add new tag (Neues Tag hinzufügen). Geben Sie für Key (Schlüssel) project ein. Geben Sie keinen Value (Wert) ein.

  4. Testen der Funktion.

  5. Erstellen Sie eine zweite Lambda-Funktion und fügen Sie ein anderes Tag hinzu, z. B. environment. Dieser Vorgang sollte fehlschlagen, da die ABAC-Richtlinie, die Sie in Schritt 1: Tags für neue Funktionen anfordern erstellt haben, dem Prinzipal nur erlaubt, Funktionen mit dem project-Tag zu erstellen.

  6. Erstellen Sie eine dritte Funktion ohne Tags. Dieser Vorgang sollte fehlschlagen, weil die ABAC-Richtlinie, die Sie in Schritt 1: Tags für neue Funktionen anfordern erstellt haben, dem Prinzipal nicht erlaubt, Funktionen ohne Tags zu erstellen.

Mit dieser Autorisierungsstrategie können Sie den Zugriff steuern, ohne für jeden neuen Benutzer neue Richtlinien erstellen zu müssen. Um neuen Benutzern Zugriff zu gewähren, erteilen Sie ihnen einfach die Berechtigung, die Rolle zu übernehmen, die ihrem zugewiesenen Projekt entspricht.

Schritt 8: Bereinigen Ihrer Ressourcen

Löschen Sie die IAM-Rolle wie folgt:
  1. Öffnen Sie die Seite Roles (Rollen) in der IAM-Konsole.

  2. Wählen Sie die Rolle aus, die Sie im Schritt 5 erstellt haben.

  3. Wählen Sie Löschen.

  4. Geben Sie den Namen der Rolle in das Texteingabefeld ein, um den Löschvorgang zu bestätigen.

  5. Wählen Sie Löschen.

So löschen Sie den IAM-Benutzer
  1. Öffnen Sie die Seite Users in der IAM-Konsole.

  2. Wählen Sie den IAM-Benutzer aus, den Sie in Schritt 6 erstellt haben.

  3. Wählen Sie Löschen.

  4. Geben Sie den Namen des Benutzers in das Texteingabefeld ein, um den Löschvorgang zu bestätigen.

  5. Wählen Sie Benutzer löschen.

So löschen Sie die Lambda-Funktion:
  1. Öffnen Sie die Seite Funktionen der Lambda-Konsole.

  2. Wählen Sie die Funktion aus, die Sie erstellt haben.

  3. Wählen Sie Aktionen, Löschen aus.

  4. Geben Sie confirm in das Texteingabefeld ein und wählen Sie Delete (Löschen) aus.