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.
DenyDie 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.
AllowIndividuelle 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 |
Die ressourcenbasierte Richtlinie einer Funktion anzeigen
Löschen der ressourcenbasierten Richtlinie einer Funktion
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 Sieadd-permissiondanach 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-ida1b2c3d4-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
DenyAnweisungen, 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:
-
InvokeFunctionUrl(Nur mit Genehmigung)