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.
Themen
- Voraussetzungen
- Schritt 1: Tags für neue Funktionen anfordern
- Schritt 2: Aktionen zulassen, die auf Tags basieren, die an eine Lambda-Funktion und IAM einen Principal angehängt sind
- Schritt 3: Erteilen von Listenberechtigungen
- Schritt 4: Erteilen von IAM-Berechtigungen
- Schritt 5: Erstellen der IAM-Rolle
- Schritt 6: Erstellen des IAM-Benutzers
- Schritt 7: Testen der Berechtigungen
- Schritt 8: Bereinigen Sie Ihre Ressourcen
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
-
Melden Sie sich an der AWS Konsole an als
abac-test-user
. Weitere Informationen finden Sie unter Als IAM Benutzer anmelden. -
Wechseln Sie zur
abac-project-role
-Rolle. Weitere Informationen finden Sie unter Wechseln zu einer Rolle (Konsole). -
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.
-
-
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 demproject
Tag zu erstellen. -
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
-
Öffnen Sie die Rollenseite
der IAM Konsole. -
Wählen Sie die Rolle aus, die Sie in Schritt 5 erstellt haben.
-
Wählen Sie Löschen.
-
Um das Löschen zu bestätigen, geben Sie den Rollennamen in das Texteingabefeld ein.
-
Wählen Sie Löschen.
Um den IAM Benutzer zu löschen
-
Öffnen Sie die Benutzerseite
der IAM Konsole. -
Wählen Sie den IAM Benutzer aus, den Sie in Schritt 6 erstellt haben.
-
Wählen Sie Löschen.
-
Um das Löschen zu bestätigen, geben Sie den Benutzernamen in das Texteingabefeld ein.
-
Wählen Sie Benutzer löschen.
So löschen Sie die Lambda-Funktion:
-
Öffnen Sie die Seite Funktionen
der Lambda-Konsole. -
Wählen Sie die Funktion aus, die Sie erstellt haben.
-
Wählen Sie Aktionen, Löschen aus.
-
Geben Sie
delete
in das Texteingabefeld ein und wählen Sie Delete (Löschen) aus.