Sichern Sie Ihre Funktionen mit einem 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 mit einem Tag

Die folgenden Schritte zeigen eine Möglichkeit zum Einrichten von Berechtigungen für Funktionen mithilfe vonABAC. 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 Erlaubnis, die neue Rolle anzunehmen.

Voraussetzungen

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

Schritt 1: Tags für neue Funktionen anfordern

Bei der Verwendung ABAC mit Lambda empfiehlt es sich, zu verlangen, dass alle Funktionen über Tags verfügen. Dadurch wird sichergestellt, dass Ihre ABAC Berechtigungsrichtlinien wie erwartet funktionieren.

Erstellen Sie eine IAM Richtlinie, die dem folgenden Beispiel ähnelt. 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 Principal, 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 zulassen, die auf Tags basieren, die an eine Lambda-Funktion und IAM einen Principal angehängt sind

Erstellen Sie eine zweite IAM Richtlinie mithilfe des ResourceTagBedingungsschlüssels aws: /tag-key, damit 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 Principal IAM
{ "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 Principal ermöglicht, Lambda-Funktionen und IAM -Rollen aufzulisten. Dadurch kann der Principal alle Lambda-Funktionen und IAM -Rollen auf der Konsole und beim Aufrufen der API Aktionen sehen.

Beispiel — Lambda gewähren und Berechtigungen IAM auflisten
{ "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 erlaubt:. PassRole Diese Berechtigung ist erforderlich, wenn Sie einer Funktion eine Ausführungsrolle zuweisen. Ersetzen Sie in der folgenden Beispielrichtlinie das Beispiel ARN durch das 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 den Zugriff darauf zu kontrollieren, wer diese Rolle weitergeben kann. 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.

  • Zu Schritt 2: Berechtigungen hinzufügen: Hängen Sie die vier IAM Richtlinien an, 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 des 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 111122223333 mit Ihrer AWS Konto-ID. Diese Richtlinie erlaubt es abac-test-user, abac-project-role anzunehmen.

Beispiel — Erlaubt dem IAM Benutzer, die ABAC Rolle zu übernehmen
{ "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 Als IAM Benutzer anmelden.

  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, in der Sie erstellt haben, dem Prinzipal Schritt 1: Tags für neue Funktionen anfordern nur erlaubt, Funktionen mit dem project Tag zu erstellen.

  6. Erstellen Sie eine dritte Funktion ohne Tags. Dieser Vorgang sollte fehlschlagen, da die ABAC Richtlinie, in der Sie sie erstellt haben, es dem Prinzipal Schritt 1: Tags für neue Funktionen anfordern 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 Sie Ihre Ressourcen

Um die IAM Rolle zu löschen
  1. Öffnen Sie die Rollenseite der IAM Konsole.

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

  3. Wählen Sie Löschen.

  4. Um das Löschen zu bestätigen, geben Sie den Rollennamen in das Texteingabefeld ein.

  5. Wählen Sie Löschen.

Um den IAM Benutzer zu löschen
  1. Öffnen Sie die Benutzerseite 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. Um das Löschen zu bestätigen, geben Sie den Benutzernamen in das Texteingabefeld ein.

  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 delete in das Texteingabefeld ein und wählen Sie Delete (Löschen) aus.