Feinabstimmung der Abschnitte „Ressourcen“ und „Bedingungen“ der Richtlinien - 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.

Feinabstimmung der Abschnitte „Ressourcen“ und „Bedingungen“ der Richtlinien

Sie können den Umfang der Benutzerberechtigungen einschränken, indem Sie Ressourcen und Bedingungen in einer AWS Identity and Access Management (IAM) -Richtlinie angeben. Jede Aktion in einer Richtlinie unterstützt eine Kombination aus Ressourcen- und Bedingungstypen, die je nach Verhalten der Aktion variiert.

Jede IAM Richtlinienaussage erteilt die Genehmigung für eine Aktion, die an einer Ressource ausgeführt wird. Wenn die Aktion nicht auf eine benannte Ressource reagiert oder Sie die Berechtigung zum Ausführen der Aktion für alle Ressourcen erteilen, wird der Wert der Ressource in der Richtlinie als Platzhalter () dargeste (*). Bei vielen Aktionen können Sie die Ressourcen einschränken, die ein Benutzer ändern kann, indem Sie den Amazon-Ressourcennamen (ARN) einer Ressource oder ein ARN Muster angeben, das mehreren Ressourcen entspricht.

Um die Berechtigungen pro Ressource einzuschränken, geben Sie die Ressource nach anARN.

Lambda-Ressourcenformat ARN
  • Funktion – arn:aws:lambda:us-west-2:123456789012:function:my-function

  • Funktionsversion – arn:aws:lambda:us-west-2:123456789012:function:my-function:1

  • Funktionsalias – arn:aws:lambda:us-west-2:123456789012:function:my-function:TEST

  • Mapping von Ereignisquellen – arn:aws:lambda:us-west-2:123456789012:event-source-mapping:fa123456-14a1-4fd2-9fec-83de64ad683de6d47

  • Ebene – arn:aws:lambda:us-west-2:123456789012:layer:my-layer

  • Ebenenversion – arn:aws:lambda:us-west-2:123456789012:layer:my-layer:1

Die folgende Richtlinie ermöglicht es einem Benutzer beispielsweise, eine Funktion AWS-Konto 123456789012 aufzurufen, die my-function in der Region USA West (Oregon) AWS benannt ist.

Beispiel Aufrufen der Funktionsrichtlinie
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Invoke", "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:us-west-2:123456789012:function:my-function" } ] }

Dies ist ein Sonderfall, in dem sich die Aktions-ID (lambda:InvokeFunction) von der API Operation (Invoke) unterscheidet. Bei anderen Aktionen ist die Aktionskennung der Operationsname mit dem Präfix lambda:.

Den Abschnitt „Bedingung“ in Richtlinien verstehen

Bedingungen sind ein optionales Richtlinienelement, das zusätzliche Logik anwendet, um zu bestimmen, ob eine Aktion zulässig ist. Zusätzlich zu gemeinsamen Bedingungen, die alle Aktionen unterstützen, definiert Lambda Bedingungstypen, die Sie verwenden können, um die Werte zusätzlicher Parameter für einige Aktionen einzuschränken.

Mit der Bedingung lambda:Principal können Sie beispielsweise den Service oder das Konto beschränken, für das ein Benutzer in der ressourcenbasierten Richtlinie einer Funktion Aufrufzugriff gewähren kann. Mit der folgenden Richtlinie kann ein Benutzer Amazon Simple Notification Service (AmazonSNS) -Themen die Erlaubnis erteilen, eine Funktion mit dem Namen test aufzurufen.

Beispiel Verwalten von Berechtigungen für Funktionsrichtlinien
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageFunctionPolicy", "Effect": "Allow", "Action": [ "lambda:AddPermission", "lambda:RemovePermission" ], "Resource": "arn:aws:lambda:us-west-2:123456789012:function:test:*", "Condition": { "StringEquals": { "lambda:Principal": "sns.amazonaws.com" } } } ] }

Die Bedingung setzt voraus, dass der Auftraggeber Amazon ist SNS und kein anderer Service oder Account. Das Ressourcenmuster erfordert, dass der Funktionsname test lautet und eine Versionsnummer oder einen Alias enthält. Beispiel, test:v1.

Weitere Informationen zu Ressourcen und Bedingungen für Lambda und andere AWS Dienste finden Sie unter Aktionen, Ressourcen und Bedingungsschlüssel für AWS Dienste in der Service Authorization Reference.

Referenzierung von Funktionen im Abschnitt „Ressourcen“ der Richtlinien

Sie verweisen in einer Richtlinienerklärung mit einem Amazon-Ressourcennamen (ARN) auf eine Lambda-Funktion. Das Format einer Funktion ARN hängt davon ab, ob Sie auf die gesamte Funktion (unqualifiziert) oder auf eine Funktionsversion oder einen Alias (qualifiziert) verweisen.

Bei API Lambda-Aufrufen können Benutzer eine Version oder einen Alias angeben, indem sie eine Version ARN oder einen Alias ARN im GetFunctionFunctionNameParameter übergeben oder einen Wert im GetFunctionQualifierParameter festlegen. Lambda trifft Autorisierungsentscheidungen, indem es das Ressourcenelement in der IAM Richtlinie sowohl mit den als auch mit den FunctionName Qualifier weitergeleiteten API Aufrufen vergleicht. Wenn es keine Übereinstimmung gibt, lehnt Lambda die Anforderung ab.

Unabhängig davon, ob Sie eine Aktion für Ihre Funktion zulassen oder ablehnen, müssen Sie in Ihrer Richtlinienerklärung die richtigen ARN Funktionstypen verwenden, um die erwarteten Ergebnisse zu erzielen. Wenn Ihre Richtlinie beispielsweise auf das Unqualifizierte verweist, akzeptiert Lambda AnfragenARN, die auf das Unqualifizierte verweisen, lehnt ARN jedoch Anfragen ab, die auf ein qualifiziertes Objekt verweisen. ARN

Anmerkung

Sie können kein Platzhalterzeichen (*) verwenden, um die Konto-ID abzugleichen. Weitere Informationen zur akzeptierten Syntax finden Sie in der IAMJSONRichtlinienreferenz im Benutzerhandbuch. IAM

Beispiel ermöglicht den Aufruf eines unqualifizierten ARN
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction" } ] }

Wenn Ihre Richtlinie auf eine bestimmte qualifizierte Person verweistARN, akzeptiert Lambda Anfragen, die sich auf diese beziehen, ARN lehnt jedoch Anfragen ab, die sich auf die unqualifizierte Person ARN oder eine andere qualifizierte Person beziehenARN, z. B. myFunction:2

Beispiel ermöglicht den Aufruf eines bestimmten qualifizierten ARN
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction:1" } ] }

Wenn Ihre Richtlinie auf eine qualifizierte ARN Verwendung verweist:*, akzeptiert Lambda jede qualifizierte Nutzung, lehnt ARN jedoch Anfragen ab, die sich auf die unqualifizierte Nutzung beziehen. ARN

Beispiel ermöglicht den Aufruf aller qualifizierten ARN
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction:*" } ] }

Wenn Ihre Richtlinie auf eine ARN Nutzung verweist*, akzeptiert Lambda jede qualifizierte oder ARN unqualifizierte Nutzung.

Beispiel erlaubt den Aufruf aller qualifizierten oder unqualifizierten ARN
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-west-2:123456789012:function:myFunction*" } ] }

Unterstützte Funktionsaktionen

Aktionen, die sich auf eine Funktion beziehen, können nach Funktion, Version oder Alias auf eine bestimmte Funktion beschränkt werdenARN, wie in der folgenden Tabelle beschrieben. Aktionen, die keine Ressourcenbeschränkungen unterstützen, werden für alle Ressourcen gewährt (*).

Aktion Ressource Bedingung

AddPermission

RemovePermission

Funktion

Funktionsversion

Funktionsalias

lambda:Principal

aws:ResourceTag/${TagKey}

lambda:FunctionUrlAuthType

Aufrufen

Berechtigung: lambda:InvokeFunction

Funktion

Funktionsversion

Funktionsalias

aws:ResourceTag/${TagKey}

lambda:EventSourceToken

CreateFunction

Funktion

lambda:CodeSigningConfigArn

lambda:Layer

lambda:VpcIds

lambda:SubnetIds

lambda:SecurityGroupIds

aws:ResourceTag/${TagKey}

aws:RequestTag/${TagKey}

aws:TagKeys

UpdateFunctionConfiguration

Funktion

lambda:CodeSigningConfigArn

lambda:Layer

lambda:VpcIds

lambda:SubnetIds

lambda:SecurityGroupIds

aws:ResourceTag/${TagKey}

CreateAlias

DeleteAlias

DeleteFunction

DeleteFunctionCodeSigningConfig

DeleteFunctionConcurrency

GetAlias

GetFunction

GetFunctionCodeSigningConfig

GetFunctionConcurrency

GetFunctionConfiguration

GetPolicy

ListProvisionedConcurrencyConfigs

ListAliases

ListTags

ListVersionsByFunction

PublishVersion

PutFunctionCodeSigningConfig

PutFunctionConcurrency

UpdateAlias

UpdateFunctionCode

Funktion

aws:ResourceTag/${TagKey}

CreateFunctionUrlConfig

DeleteFunctionUrlConfig

GetFunctionUrlConfig

UpdateFunctionUrlConfig

Funktion

Funktionsalias

lambda:FunctionUrlAuthType

aws:ResourceTag/${TagKey}

ListFunctionUrlConfigs

Funktion

lambda:FunctionUrlAuthType

DeleteFunctionEventInvokeConfig

GetFunctionEventInvokeConfig

ListFunctionEventInvokeConfigs

PutFunctionEventInvokeConfig

UpdateFunctionEventInvokeConfig

Funktion

aws:ResourceTag/${TagKey}

DeleteProvisionedConcurrencyConfig

GetProvisionedConcurrencyConfig

PutProvisionedConcurrencyConfig

Funktionsalias

Funktionsversion

aws:ResourceTag/${TagKey}

GetAccountSettings

ListFunctions

*

None

TagResource

Funktion

aws:ResourceTag/${TagKey}

aws:RequestTag/${TagKey}

aws:TagKeys

UntagResource

Funktion

aws:ResourceTag/${TagKey}

aws:TagKeys

Unterstützte Aktionen zur Zuordnung von Ereignisquellen

Für Ereignisquellenzuordnungen können Sie Lösch- und Aktualisierungsberechtigungen auf eine bestimmte Ereignisquelle beschränken. Mit der Bedingung lambda:FunctionArn können Sie Benutzer konfigurieren lassen, welche Funktionen von einer Ereignisquelle aufgerufen werden.

Für diese Aktionen ist die Ressource die Ereignisquellen-Zuweisung. Daher bietet Lambda eine Bedingung, mit der Sie Berechtigungen basierend auf der Funktion, die die Ereignisquellen-Zuweisung aufruft, einschränken können.

Aktionen für die Ereignisquellen-Zuweisung
Aktion Ressource Bedingung

DeleteEventSourceMapping

UpdateEventSourceMapping

Ereignisquellen-Zuweisung

lambda:FunctionArn

CreateEventSourceMapping

GetEventSourceMapping

*

lambda:FunctionArn

ListEventSourceMappings

*

None

Unterstützte Layer-Aktionen

Mit Ebenenaktionen können Sie die Ebenen einschränken, die ein Benutzer verwalten oder mit einer Funktion verwenden kann. Aktionen im Zusammenhang mit der Ebenenverwendung und Ebenenberechtigung reagieren auf die Version einer Ebene, während PublishLayerVersion auf den Namen einer Ebene reagiert. Beide können mit Platzhaltern verwendet werden, um die Ebenen, mit denen ein Benutzer arbeiten kann, nach Name einzuschränken.

Anmerkung

Die GetLayerVersionAktion umfasst auch GetLayerVersionByArn. Lambda wird nicht GetLayerVersionByArn als IAM Aktion unterstützt.