View a markdown version of this page

Arbeiten mit ressourcenbasierten Richtlinien in Lambda - 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.

Arbeiten mit ressourcenbasierten Richtlinien in Lambda

Mit ressourcenbasierten Berechtigungsrichtlinien können Sie anderen Benutzern und Organisationen Zugriff auf Ihre AWS-Konten Lambda-Funktionen gewähren. AWS-Services Eine ressourcenbasierte Richtlinie ist ein JSON-Dokument, das eine oder mehrere Anweisungen enthält. Jede Anweisung definiert Folgendes:

  • Principal: Die Entität, der Sie Berechtigungen gewähren möchten (eine andere AWS-Service, eine IAM-Rolle oder ein IAM-Benutzer oder eine andere AWS-Konto)

  • Action: Eine Liste der API-Aktionen, die Sie für den angegebenen Principal zulassen oder verweigern möchten

  • Effect: Ob Sie dem Prinzipal die Verwendung der ausgewählten API-Aktionen gewähren oder verweigern möchten

  • Resource: Die Lambda-Funktion, Version oder der Lambda-Alias, für die die Anweisung gelten soll (Sie können auch ein Platzhalterzeichen verwenden, um alle Versionen und Aliase Ihrer Funktion anzugeben)

Sie können auch optionale Elemente wie Sid (eine Anweisungs-ID) und Condition (logische Bedingungen für eine feinkörnige Zugriffskontrolle) verwenden. Eine vollständige Liste der unterstützten Richtlinienelemente finden Sie in der Referenz zu den IAM-JSON-Richtlinienelementen im AWS Identity and Access Management Benutzerhandbuch.

Hinzufügen von ressourcenbasierten Berechtigungen zu einer Lambda-Funktion

Sie können Ihrer Lambda-Funktion mit zwei Methoden ressourcenbasierte Berechtigungen hinzufügen:

  • Vollständige JSON-Richtlinie — Verwenden Sie die Lambda-Konsole oder die PutResourcePolicy API-Aktion AWS CLI, um ein vollständiges JSON-Richtliniendokument hinzuzufügen. Mit einer vollständigen JSON-Richtlinie können Sie die gesamte Palette der globalen IAM-Bedingungsschlüssel verwenden, mehrere Anweisungen mit mehreren Prinzipalen hinzufügen und explizite Anweisungen erstellen. Deny Die maximale Größe für eine auf JSON-Ressourcen basierende Richtlinie beträgt 20 KB.

  • Individuelle Berechtigungen — Verwenden Sie die Konsole oder die AddPermission API-Aktion, um einzelne Anweisungen hinzuzufügen. Allow Individuelle Berechtigungen unterstützen nur einen begrenzten Satz von Bedingungsschlüsseln (aws:SourceArnaws:SourceAccount, undaws:PrincipalOrgID).

Wir empfehlen, dass Sie vollständige JSON-Richtlinien definieren, um Ihrer Funktion ressourcenbasierte Berechtigungen hinzuzufügen. Die Erstellung einer vollständigen JSON-Richtlinie bietet Ihnen mehr Flexibilität und eine detaillierte Kontrolle über Ihre Berechtigungen.

Wichtig

Durch Verwenden werden alle vorhandenen ressourcenbasierten Richtlinien für die Ressource put-resource-policy ersetzt. Wenn für die Ressource bereits Berechtigungen mit definiert sindadd-permission, put-resource-policy werden diese überschrieben. Wird verwendetget-resource-policy, um die vorhandene Richtlinie abzurufen, bevor Änderungen vorgenommen werden.

Erforderliche Berechtigungen

Um die DeleteResourcePolicy API-AktionenPutResourcePolicy,GetResourcePolicy, und verwenden zu können, benötigen Sie die folgenden IAM-Berechtigungen:

API-Aktion Erforderliche Berechtigungen
PutResourcePolicy lambda:PutResourcePolicy, lambda:AddPermission und lambda:RemovePermission
GetResourcePolicy lambda:GetResourcePolicy und lambda:GetPolicy
DeleteResourcePolicy lambda:DeleteResourcePolicy und lambda:RemovePermission
Console
So erstellen Sie eine vollständige JSON-Richtlinie, die auf Ressourcen basiert
  1. Öffnen Sie die Seite Funktionen der Lambda-Konsole.

  2. Wählen Sie die Funktion aus, für die Sie Zugriff gewähren möchten, und wählen Sie dann die Registerkarte Konfiguration aus.

  3. Wählen Sie Berechtigungen aus.

  4. Wählen Sie im Bereich „Resource-based Richtlinienerklärungen“ die Option Bearbeiten aus. Diese Aktion öffnet den JSON-Richtlinien-Editor.

  5. Fügen Sie der Richtlinie Ihrer Funktion Anweisungen hinzu. Sie können API-Aktionen auswählen, Principals verschiedener Typen (Dienste, Konten, IAM-Rollen) hinzufügen und Bedingungsschlüssel hinzufügen, um den Zugriff zu steuern.

  6. Wählen Sie Speichern.

Sie können die ressourcenbasierte Richtlinie Ihrer Funktion auch direkt im Richtlinienbereich bearbeiten.

AWS CLI
So fügen Sie eine vollständige, ressourcenbasierte JSON-Richtlinie hinzu

Verwenden Sie den Befehl, um Ihrer Funktion eine vollständige JSON-Richtlinie hinzuzufügen. put-resource-policy AWS CLI

Der folgende Beispielbefehl fügt Ihrer Funktion eine ressourcenbasierte Richtlinie hinzu. Dabei wird eine Richtlinie verwendet, die in einer policy.json auf Ihrem lokalen Computer benannten Datei definiert ist. Führen Sie den Befehl in dem Verzeichnis aus, das die Datei enthält. Sie resource-arn können eine Funktionsversion oder einen Alias angeben, oder Sie können die unqualifizierte Funktion ARN verwenden, um die Richtlinie auf die gesamte Funktion anzuwenden.

aws lambda put-resource-policy --resource-arn arn:aws:lambda:us-east-2:123456789012:function:my-function \ --policy file://policy.json
Lambda APIs

Verwenden Sie die PutResourcePolicy API-Aktion, um Ihrer Funktion eine vollständige JSON-Berechtigungsrichtlinie hinzuzufügen. Sie können auch die Richtlinie einer Funktion mithilfe der DeleteResourcePolicy Aktion löschen oder mithilfe der GetResourcePolicy Aktion die Richtlinie abrufen, die derzeit an eine Funktion angehängt ist.

Verwenden Sie die AddPermission API-Aktion, um der Richtlinie einer Funktion individuelle Berechtigungen hinzuzufügen.

Die ressourcenbasierte Richtlinie einer Funktion anzeigen

Console
So zeigen Sie die ressourcenbasierte Richtlinie einer Funktion an
  1. Öffnen Sie die Seite Funktionen der Lambda-Konsole.

  2. Wählen Sie eine Funktion aus.

  3. Wählen Sie Konfiguration und anschließend Berechtigungen aus.

  4. Scrollen Sie nach unten zu den Resource-based Richtlinienerklärungen, um die Richtlinie zu sehen.

AWS CLI

Um die ressourcenbasierte Richtlinie einer Funktion anzuzeigen, verwenden Sie den Befehl get-resource-policy. Sie können den unqualifizierten ARN Ihrer Funktion verwenden oder eine Version oder einen Alias angeben.

aws lambda get-resource-policy --resource-arn arn:aws:lambda:us-east-2:123456789012:function:my-function

Sie können auch den get-policy folgenden Befehl verwenden:

aws lambda get-policy \ --function-name my-function \ --output text
Lambda APIs

Verwenden Sie die API-Aktion, um die ressourcenbasierte Richtlinie einer Funktion abzurufen. GetResourcePolicy Sie können den unqualifizierten ARN Ihrer Funktion verwenden oder eine Version oder einen Alias-ARN angeben.

Sie können auch die GetPolicy API-Aktion verwenden.

Löschen der ressourcenbasierten Richtlinie einer Funktion

Console
Um die ressourcenbasierte Richtlinie einer Funktion zu löschen
  1. Öffnen Sie die Seite Funktionen der Lambda-Konsole.

  2. Wählen Sie die Funktion aus, für die Sie die Berechtigungsrichtlinie löschen möchten.

  3. Wählen Sie die Registerkarte Konfiguration und dann Berechtigungen aus.

  4. Wählen Sie im Bereich „Resource-based Richtlinienerklärungen“ die Option Löschen aus.

AWS CLI

Um die Richtlinie Ihrer Funktion zu löschen, verwenden Sie den delete-resource-policy Befehl und geben Sie den ARN der Funktion, Version oder des Alias an, aus dem Sie die Richtlinie löschen möchten.

aws lambda delete-resource-policy --resource-arn arn:aws:lambda:us-east-2:123456789012:function:my-function

Um einzelne Anweisungen zu entfernen, verwenden Sieremove-permission.

aws lambda remove-permission \ --function-name example \ --statement-id sns
Lambda APIs

Verwenden Sie die API-Aktion, um die ressourcenbasierte Richtlinie zu löschen, die einer Funktion, einer Funktionsversion oder einem Funktionsalias zugeordnet ist. DeleteResourcePolicy

Verwenden Sie die API-Aktion, um einzelne Anweisungen aus einer Richtlinie zu entfernen. RemovePermission

Aktualisierung vorhandener Richtlinien

Wenn Sie die vorhandenen ressourcenbasierten Berechtigungen einer Funktion aktualisieren, hängt das Verhalten von der verwendeten Methode ab:

  • put-resource-policy/PutResourcePolicy— Ersetzt die gesamte bestehende Richtlinie. Alle zuvor hinzugefügten individuellen Berechtigungen werden überschrieben.

  • add-permission/AddPermission— Fügt der vorhandenen Richtlinie eine Anweisung hinzu, ohne sie zu überschreiben. Wenn Sie add-permission danach aufrufenput-resource-policy, wird die neue Anweisung an die bestehende JSON-Richtlinie angehängt.

Rufen Sie zuerst die bestehende Richtlinie Ihrer Funktion ab, um zu verhindernput-resource-policy, dass vorhandene Berechtigungen bei der Verwendung versehentlich überschrieben werden. Die get-resource-policy Ausgabe enthält ein RevisionId Feld.

aws lambda get-resource-policy --resource-arn arn:aws:lambda:us-east-2:123456789012:function:my-function

Wenn Sie eine neue Richtlinie anhängen, geben Sie den RevisionId Wert zusammen mit dem --revision-id Parameter an, um sicherzustellen, dass Sie die neueste Version aktualisieren. Wenn Sie eine ältere Revisions-ID angeben, aktualisiert Lambda die Richtlinie Ihrer Funktion nicht.

aws lambda put-resource-policy \ --resource-arn arn:aws:lambda:us-east-2:123456789012:function:my-function \ --policy file://policy.json \ --revision-id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111
Anmerkung

Bestehende ressourcenbasierte Richtlinien, die mit erstellt wurden, funktionieren AddPermission weiterhin ohne Änderungen. Für die Verwendung der neuen API sind keine Änderungen an Ihrem Funktionscode erforderlich. PutResourcePolicy

Bewährte Methoden für die Gewährleistung der Sicherheit

Mit JSON-Richtlinien, die auf Ressourcen basieren, können Sie Zugriffsmustern mit den geringsten Rechten folgen. Sie können auch die regulatorischen Anforderungen für ausdrückliche Ablehnungen erfüllen. Mit vollständigen JSON-Richtlinien können Sie:

  • Erstellen Sie explizite Deny Anweisungen, um bestimmte Prinzipale oder Bedingungen zu blockieren.

  • Verwenden Sie organisatorische Bedingungen (aws:PrincipalOrgID,aws:PrincipalOrgPaths), um den Zugriff auf Ihre Organisationen einzuschränken, ohne einzelne Konten aufzulisten.

  • Gewähren Sie Zugriffsberechtigungen für bestimmte Quellkonten oder ARNs mithilfe der gesamten Bandbreite der globalen IAM-Bedingungsschlüssel.

Beispiel für ressourcenbasierte Richtlinien

Beispiel Erteilen der Genehmigung für Amazon S3 mit einer Ablehnungserklärung

Die folgende Richtlinie gewährt allen Amazon S3-Buckets in einem Konto die Erlaubnis, eine Funktion aufzurufen, mit Ausnahme eines Buckets, der ausdrücklich verweigert wird.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "allow-s3", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-2:111122223333:function:my-function", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" } } }, { "Sid": "deny-s3-bucket", "Effect": "Deny", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": [ "arn:aws:lambda:us-east-2:111122223333:function:my-function", "arn:aws:lambda:us-east-2:111122223333:function:my-function:*" ], "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-bucket" } } } ] }
Beispiel Erteilen von Berechtigungen für Konten in einer Organisation

Mit den folgenden Richtlinien wird Zugriff auf alle Personen AWS-Konten in einer Organisation gewährt.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "org-access", "Effect": "Allow", "Action": "lambda:InvokeFunction", "Principal": "*", "Resource": "arn:aws:lambda:us-east-2:111122223333:function:my-function", "Condition": { "StringEquals": { "aws:PrincipalOrgID": "o-a1b2c3d4e5f" } } } ] }
Beispiel Erteilen von Berechtigungen für mehrere IAM-Rollen mit Bedingungen

Die folgende Richtlinie gewährt zwei IAM-Rollen die Erlaubnis, die CreateAlias Aktion von einer angegebenen IP-Adresse aus zu verwenden.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "allow-roles", "Effect": "Allow", "Action": "lambda:CreateAlias", "Principal": { "AWS": [ "arn:aws:iam::444455556666:role/role-name", "arn:aws:iam::444455556666:role/role-name2" ] }, "Resource": "arn:aws:lambda:us-east-2:111122223333:function:my-function", "Condition": { "IpAddress": { "aws:SourceIp": "192.0.2.0" } } } ] }
Beispiel Verweigert den Zugriff, es sei denn, der Anrufer gehört einer bestimmten Organisation an
{ "Version": "2012-10-17", "Statement": [ { "Sid": "deny-access", "Effect": "Deny", "Action": "lambda:InvokeFunction", "Principal": "*", "Resource": "arn:aws:lambda:us-east-2:111122223333:function:my-function", "Condition": { "ForAllValues:StringNotLike": { "aws:PrincipalOrgPaths": [ "o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/*" ] } } }, { "Sid": "allow-access", "Effect": "Allow", "Action": "lambda:InvokeFunction", "Principal": "*", "Resource": "arn:aws:lambda:us-east-2:111122223333:function:my-function", "Condition": { "ForAnyValue:StringLike": { "aws:PrincipalOrgPaths": [ "o-a1b2c3d4e5/r-ab12/ou-ab12-11111111/*" ] } } } ] }

Unterstützte API-Aktionen

Die folgenden Lambda-API-Aktionen unterstützen ressourcenbasierte Richtlinien: