Lambda-Ausführungsrolle - 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.

Lambda-Ausführungsrolle

Die Ausführungsrolle einer Lambda-Funktion ist eine AWS Identity and Access Management (IAM)-Rolle, die der Funktion die Berechtigung erteilt, auf AWS-Services und -Ressourcen zuzugreifen. Sie können beispielsweise eine Ausführungsrolle erstellen, die berechtigt ist, Protokolle an Amazon zu senden CloudWatch und Ablaufverfolgungsdaten in hochzuladenAWS X-Ray. Diese Seite enthält Informationen zum Erstellen, Anzeigen und Verwalten der Ausführungsrolle einer Lambda-Funktion.

Sie geben eine Ausführungsrolle an, wenn Sie eine Funktion erstellen. Wenn Sie Ihre Funktion aufrufen, stellt Lambda Ihrer Funktion automatisch temporäre Anmeldeinformationen zur Verfügung, indem es diese Rolle übernimmt. Sie müssen nicht sts:AssumeRole aufrufen in Ihrem Funktionscode.

Damit Lambda Ihre Ausführungsrolle ordnungsgemäß übernehmen kann, muss in der Vertrauensrichtlinie der Rolle der Lambda-Service-Prinzipal (lambda.amazonaws.com) als vertrauenswürdiger Service angegeben sein.

So zeigen Sie die Ausführungsrolle einer Funktion an
  1. Öffnen Sie die Seite Funktionen der Lambda-Konsole.

  2. Wählen Sie den Namen einer Funktion aus.

  3. Wählen Sie Configuration (Konfiguration) und anschließend Permissions (Berechtigungen) aus.

  4. Zeigen Sie unter Resource summary (Ressourcenübersicht) die Services und Ressourcen an, auf die die Funktion zugreifen kann.

  5. Wählen Sie einen Service aus dem Dropdown-Menü aus, um die Berechtigungen für diesen Service anzuzeigen.

Sie können Berechtigungen jederzeit zur Ausführungsrolle einer Funktion hinzufügen bzw. daraus entfernen oder Ihre Funktion so konfigurieren, dass sie eine andere Rolle verwendet. Fügen Sie Berechtigungen für alle Services hinzu, die Ihre Funktion mit dem AWS SDK aufruft, sowie für Services, die Lambda nutzt, um optionale Funktionen zu aktivieren.

Wenn Sie Ihrer Funktion Berechtigungen hinzufügen, aktualisieren Sie auch den Code oder die Konfiguration der Funktion. Dies zwingt ausgeführte Instances Ihrer Funktion, die veraltete Anmeldeinformationen haben, anzuhalten und ersetzt zu werden.

Erstellen einer Ausführungsrolle in der IAM-Konsole

Standardmäßig erstellt Lambda beim Erstellen einer Funktion in der Lambda-Konsole eine Ausführungsrolle mit minimalen Berechtigungen. Sie können eine Ausführungsrolle auch in der IAM-Konsole erstellen.

So erstellen Sie eine Ausführungsrolle in der IAM-Konsole
  1. Öffnen Sie die Seite Roles (Rollen) in der IAM-Konsole.

  2. Wählen Sie Rolle erstellen aus.

  3. Wählen Sie unter Anwendungsfall Lambda aus.

  4. Wählen Sie Weiter aus.

  5. Wählen Sie die AWS verwalteten Richtlinien AWSLambdaBasicExecutionRole und ausAWSXRayDaemonWriteAccess.

  6. Wählen Sie Weiter aus.

  7. Geben Sie einen Role name (Rollennamen) ein und klicken Sie auf Create Role (Rolle erstellen).

Detaillierte Anweisungen finden Sie unter Erstellen einer Rolle für einen AWS-Service (Konsole) im IAM-Benutzerhandbuch.

Gewähren Sie den Zugriff auf Ihre Lambda-Ausführungsrolle mit den geringsten Berechtigungen

Wenn Sie während der Entwicklungsphase zum ersten Mal eine IAM-Rolle für Ihre Lambda-Funktion erstellen, können Sie manchmal Berechtigungen erteilen, die über das erforderliche Maß hinausgehen. Bevor Sie Ihre Funktion in der Produktionsumgebung veröffentlichen, sollten Sie als bewährte Methode die Richtlinie so anpassen, dass sie nur die erforderlichen Berechtigungen enthält. Weitere Informationen finden Sie unter Anwenden von Berechtigungen mit geringsten Berechtigungen im IAM-Benutzerhandbuch.

Verwenden Sie IAM Access Analyzer, um die erforderlichen Berechtigungen für die IAM-Ausführungsrollenrichtlinie zu identifizieren. IAM Access Analyzer überprüft Ihre AWS CloudTrail-Protokolle über den von Ihnen angegebenen Zeitraum und generiert eine Richtlinienvorlage nur mit den Berechtigungen, die die Funktion während dieser Zeit verwendet hat. Sie können die Vorlage verwenden, um eine verwaltete Richtlinie mit definierten Berechtigungen zu erstellen und sie dann an die IAM-Rolle anzuhängen. Auf diese Weise gewähren Sie nur die Berechtigungen, die die Rolle benötigt, um mit AWS-Ressourcen für Ihren spezifischen Anwendungsfall zu interagieren.

Weitere Informationen finden Sie unter Generieren von Richtlinien basierend auf Zugriffsaktivitäten im IAM-Benutzerhandbuch.

Verwalten von Rollen mit der IAM-API

Verwenden Sie den Befehl AWS Command Line Interface, um eine Ausführungsrolle mit der AWS CLI (create-role) zu erstellen. Wenn Sie diesen Befehl verwenden, können Sie die Vertrauensrichtlinie angeben. Über die Vertrauensrichtlinie einer Rolle wird den angegebenen Prinzipalen die Berechtigung gegeben, die Rolle zu übernehmen. Im folgenden Beispiel erteilen Sie dem Lambda-Serviceprinzipal die Berechtigung, Ihre Rolle zu übernehmen. Die Anforderungen für Escape-Anführungszeichen in der JSON-Zeichenfolge können je nach Shell variieren.

aws iam create-role --role-name lambda-ex --assume-role-policy-document '{"Version": "2012-10-17","Statement": [{ "Effect": "Allow", "Principal": {"Service": "lambda.amazonaws.com"}, "Action": "sts:AssumeRole"}]}'

Sie können die Vertrauensrichtlinie für die Rolle auch mithilfe einer separaten JSON-Datei definieren. Im folgenden Beispiel ist trust-policy.json eine Datei im aktuellen Verzeichnis.

Beispiel trust-policy.json
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
aws iam create-role --role-name lambda-ex --assume-role-policy-document file://trust-policy.json

Die Ausgabe sollte folgendermaßen aussehen:

{ "Role": { "Path": "/", "RoleName": "lambda-ex", "RoleId": "AROAQFOXMPL6TZ6ITKWND", "Arn": "arn:aws:iam::123456789012:role/lambda-ex", "CreateDate": "2020-01-17T23:19:12Z", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } } }
Anmerkung

Lambda übernimmt automatisch Ihre Ausführungsrolle an, wenn Sie Ihre Funktion aufrufen. Sie sollten vermeiden, sts:AssumeRole manuell in Ihrem Funktionscode aufzurufen. Wenn Ihr Anwendungsfall erfordert, dass die Rolle sich selbst annimmt, müssen Sie die Rolle selbst als vertrauenswürdigen Prinzipal in die Vertrauensrichtlinie Ihrer Rolle aufnehmen. Weitere Informationen zum Ändern einer Rollenvertrauensrichtlinie finden Sie unter Ändern einer Rollenvertrauensrichtlinie (Konsole) im IAM-Benutzerhandbuch.

Um der Rolle Berechtigungen hinzuzufügen, verwenden Sie den attach-policy-to-role-Befehl. Beginnen Sie mit dem Hinzufügen der AWSLambdaBasicExecutionRole verwalteten Richtlinie.

aws iam attach-role-policy --role-name lambda-ex --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole

Sitzungsdauer für temporäre Sicherheitsanmeldeinformationen

Lambda nimmt die mit Ihrer Funktion verknüpfte Ausführungsrolle an, um temporäre Sicherheitsanmeldeinformationen abzurufen, die dann während des Aufrufs einer Funktion als Umgebungsvariablen verfügbar sind. Wenn Sie diese temporären Anmeldeinformationen außerhalb von Lambda verwenden, z. B. um eine vorsignierte Amazon-S3-URL zu erstellen, können Sie die Sitzungsdauer nicht steuern. Die Einstellung für die maximale IAM-Sitzungsdauer gilt nicht für Sitzungen, die von AWS-Services wie Lambda übernommen werden. Verwenden Sie die Aktion sts:AssumeRole, wenn Sie die Kontrolle über die Sitzungsdauer benötigen.

AWS-verwaltete Richtlinien für Lambda-Funktionen

Die folgenden AWS-verwalteten Richtlinien bieten Berechtigungen, die für die Nutzung von Lambda-Funktionen erforderlich sind:

Änderung Beschreibung Datum

AWSLambdaMSKExecutionRole – Lambda hat die kafka:DescribeClusterV2-Berechtigung zu dieser Richtlinie hinzugefügt.

AWSLambdaMSKExecutionRole erteilt Berechtigungen zum Lesen und Zugreifen auf Datensätze aus einem Amazon Managed Streaming for Apache Kafka (Amazon MSK)-Cluster, zum Verwalten von Elastic Network-Schnittstellen (ENIs) und zum Schreiben in - CloudWatch Protokolle.

17. Juni 2022

AWSLambdaBasicExecutionRole – Lambda hat mit der Verfolgung von Änderungen an dieser Richtlinie begonnen.

AWSLambdaBasicExecutionRole erteilt Berechtigungen, um Protokolle auf CloudWatch hochzuladen.

14. Februar 2022

AWSLambdaDynamoDBExecutionRole – Lambda hat mit der Verfolgung von Änderungen an dieser Richtlinie begonnen.

AWSLambdaDynamoDBExecutionRole erteilt Berechtigungen zum Lesen von Datensätzen aus einem Amazon-DynamoDB-Stream und zum Schreiben in CloudWatch Protokolle.

14. Februar 2022

AWSLambdaKinesisExecutionRole – Lambda hat mit der Verfolgung von Änderungen an dieser Richtlinie begonnen.

AWSLambdaKinesisExecutionRole erteilt Berechtigungen zum Lesen von Ereignissen aus einem Amazon Kinesis Data Stream und zum Schreiben in CloudWatch Logs.

14. Februar 2022

AWSLambdaMSKExecutionRole – Lambda hat mit der Verfolgung von Änderungen an dieser Richtlinie begonnen.

AWSLambdaMSKExecutionRole erteilt Berechtigungen zum Lesen und Zugreifen auf Datensätze aus einem Amazon Managed Streaming for Apache Kafka (Amazon MSK)-Cluster, zum Verwalten von Elastic Network-Schnittstellen (ENIs) und zum Schreiben in - CloudWatch Protokolle.

14. Februar 2022

AWSLambdaSQSQueueExecutionRole – Lambda hat mit der Verfolgung von Änderungen an dieser Richtlinie begonnen.

AWSLambdaSQSQueueExecutionRole erteilt Berechtigungen zum Lesen einer Nachricht aus einer Amazon Simple Queue Service (Amazon SQS)-Warteschlange und zum Schreiben in CloudWatch Protokolle.

14. Februar 2022

AWSLambdaVPCAccessExecutionRole – Lambda hat mit der Verfolgung von Änderungen an dieser Richtlinie begonnen.

AWSLambdaVPCAccessExecutionRole erteilt Berechtigungen zum Verwalten von ENIs innerhalb einer Amazon VPC und zum Schreiben in CloudWatch Protokolle.

14. Februar 2022

AWSXRayDaemonWriteAccess – Lambda hat mit der Verfolgung von Änderungen an dieser Richtlinie begonnen.

AWSXRayDaemonWriteAccess erteilt Berechtigungen zum Hochladen von Nachverfolgungsdaten auf X-Ray.

14. Februar 2022

CloudWatchLambdaInsightsExecutionRolePolicy – Lambda hat mit der Verfolgung von Änderungen an dieser Richtlinie begonnen.

CloudWatchLambdaInsightsExecutionRolePolicy erteilt Berechtigungen zum Schreiben von Laufzeitmetriken in CloudWatch Lambda Insights.

14. Februar 2022

AmazonS3ObjectLambdaExecutionRolePolicy – Lambda hat mit der Verfolgung von Änderungen an dieser Richtlinie begonnen.

AmazonS3ObjectLambdaExecutionRolePolicy erteilt Berechtigungen zur Interaktion mit dem Amazon Simple Storage Service (Amazon S3)-Objekt Lambda und zum Schreiben in CloudWatch Protokolle.

14. Februar 2022

Bei einigen Funktionen versucht die Lambda-Konsole, Ihrer Ausführungsrolle in einer vom Kunden verwalteten Richtlinie fehlende Berechtigungen hinzuzufügen. Diese Politiken können zahlreich werden. Fügen Sie der Ausführungsrolle die relevanten AWS-verwalteten Richtlinien hinzu, bevor Sie Funktionen aktivieren, um das Erstellen zusätzlicher Richtlinien zu vermeiden.

Wenn Sie eine Ereignisquellen-Zuweisung zum Aufrufen Ihrer Funktion verwenden, verwendet Lambda die Ausführungsrolle zum Lesen von Ereignisdaten. Zum Beispiel liest eine Ereignisquellen-Zuweisung für Kinesis-Ereignisse aus einem Datenstrom und sendet diese in Batches an Ihre Funktion.

Wenn ein Dienst eine Rolle in Ihrem Konto übernimmt, können Sie die globalen Bedingungskontextschlüssel aws:SourceAccount und aws:SourceArn in Ihrer Rollenvertrauensrichtlinie übernehmen, um den Zugriff auf die Rolle nur auf Anforderungen zu beschränken, die von erwarteten Ressourcen generiert werden. Weitere Informationen finden Sie unter Vermeidung des Problems des verwirrten Stellvertreters im dienstübergreifenden Szenario für AWS Security Token Service.

Sie können Ereignisquellen-Zuweisungen mit den folgenden Services verwenden:

Zusätzlich zu den AWS-verwalteten Richtlinien stellt die Lambda-Konsole Vorlagen zum Erstellen einer benutzerdefinierten Richtlinie bereit, die Berechtigungen für weitere Anwendungsfälle beinhaltet. Wenn Sie eine Funktion in der Lambda-Konsole erstellen, haben Sie die Wahl, eine neue Ausführungsrolle mit Berechtigungen aus einer oder mehreren Vorlagen zu erstellen. Diese Vorlagen werden auch automatisch angewendet, wenn Sie eine Funktion von einer Vorlage erstellen oder wenn Sie Optionen konfigurieren, die Zugriff auf andere Services erfordern. Beispielvorlagen sind im GitHub Repository dieses Handbuchs verfügbar.

Arbeiten mit Anmeldeinformationen für die Lambda-Ausführungsumgebung

Es ist üblich, dass Ihr Lambda-Funktionscode API-Anorderungen an andere AWS-Services stellt. Um diese Anforderungen zu stellen, generiert Lambda einen kurzlebigen Satz von Anmeldeinformationen, indem es die Ausführungsrolle Ihrer Funktion übernimmt. Diese Anmeldeinformationen sind während des Aufrufs Ihrer Funktion als Umgebungsvariablen verfügbar. Wenn Sie mit AWS-SDKs arbeiten, müssen Sie die Anmeldeinformationen für das SDK nicht direkt im Code angeben. Standardmäßig überprüft die Kette der Anbieter von Anmeldeinformationen nacheinander jeden Ort, an dem Sie Anmeldeinformationen festlegen können, und wählt die erste verfügbare aus – in der Regel die Umgebungsvariablen (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY und AWS_SESSION_TOKEN).

Lambda fügt den Quellfunktions-ARN in den Kontext der Anmeldeinformationen ein, wenn die Anfrage eine AWS-API-Anfrage ist, die aus Ihrer Ausführungsumgebung stammt. Lambda fügt auch den Quellfunktions-ARN für die folgenden AWS-API-Anfragen ein, die Lambda in Ihrem Namen außerhalb Ihrer Ausführungsumgebung durchführt:

Service Aktion Grund
CloudWatch Protokolle CreateLogGroup, CreateLogStream, PutLogEvents

So speichern Sie Protokolle in einer CloudWatch Protokollgruppe

X-Ray PutTraceSegments

So senden Sie Verfolgungsdaten an X-Ray

Amazon EFS ClientMount

So stellen Sie eine Verbindung zwischen Ihrer Funktion und einem Amazon Elastic File System (Amazon EFS) Dateisystem her

Andere AWS-API-Aufrufe, die Lambda außerhalb Ihrer Ausführungsumgebung in Ihrem Namen unter Verwendung derselben Ausführungsrolle durchführt, enthalten den Quellfunktions-ARN nicht. Beispiele für solche API-Aufrufe außerhalb der Ausführungsumgebung sind:

  • Aufrufen von AWS Key Management Service (AWS KMS) zum automatischen Verschlüsseln und Entschlüsseln Ihrer Umgebungsvariablen.

  • Aufrufe von Amazon Elastic Compute Cloud (Amazon EC2) zum Erstellen von Elastic-Network-Schnittstellen (ENIs) für eine VPC-fähige Funktion.

  • Aufrufe von AWS-Services wie Amazon Simple Queue Service (Amazon SQS), um aus einer Ereignisquelle zu lesen, die als Zuordnung von Ereignisquellen eingerichtet ist.

Mit dem ARN der Quellfunktion im Kontext der Anmeldeinformationen können Sie überprüfen, ob ein Aufruf Ihrer Ressource aus dem Code einer bestimmten Lambda-Funktion stammt. Um dies zu überprüfen, verwenden Sie die lambda:SourceFunctionArn-Zustandsschlüssel in einer identitätsbasierten IAM-Richtlinie oder einer Service-Kontrollrichtlinie (SCP).

Anmerkung

Sie können den lambda:SourceFunctionArn-Bedingungsschlüssel nicht in ressourcenbasierten Richtlinien verwenden.

Mit diesem Bedingungsschlüssel in Ihren identitätsbasierten Richtlinien oder SCPs können Sie Sicherheitskontrollen für die API-Aktionen implementieren, die Ihr Funktionscode für andere AWS-Services vornimmt. Dies hat einige wichtige Sicherheitsanwendungen, z. B. um Ihnen zu helfen, die Quelle eines Anmeldeinformationslecks zu identifizieren.

Anmerkung

Der lambda:SourceFunctionArn-Bedingungsschlüssel unterscheidet sich von den lambda:FunctionArn und aws:SourceArn-Bedingungsschlüsseln. Der lambda:FunctionArn-Bedingungsschlüssel gilt nur für Ereignisquellenzuordnungen und hilft bei der Definition der Funktionen, die Ihre Ereignisquelle aufrufen kann. Der aws:SourceArn-Bedingungsschlüssel gilt nur für Richtlinien, bei denen Ihre Lambda-Funktion die Zielressource ist, und hilft zu definieren, welche anderen AWS-Services und Ressourcen diese Funktion aufrufen können. Der lambda:SourceFunctionArn-Bedingungsschlüssel kann auf jede identitätsbasierte Richtlinie oder jeden SCP angewendet werden, um die spezifischen Lambda-Funktionen zu definieren, die über Berechtigungen zum Festlegen bestimmter AWS-API-Aufrufe an andere Ressourcen verfügen.

Um lambda:SourceFunctionArn in Ihrer Richtlinie zu verwenden, fügen Sie es als Bedingung mit einem der ARN-Bedingungsoperatoren ein. Der Wert des Schlüssels muss ein gültiger ARN sein.

Angenommen, Ihr Lambda-Funktionscode macht einen s3:PutObject-Aufruf, der auf einen bestimmten Amazon-S3-Bucket abzielt. Möglicherweise möchten Sie nur einer bestimmten Lambda-Funktion erlauben, dass s3:PutObject auf diesen Bucket zugreift. In diesem Fall sollte der Ausführungsrolle Ihrer Funktion eine Richtlinie angefügt sein, die wie folgt aussieht:

Beispiel Richtlinie, die einer bestimmten Lambda-Funktion Zugriff auf eine Amazon-S3-Ressource gewährt
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ExampleSourceFunctionArn", "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::lambda_bucket/*", "Condition": { "ArnEquals": { "lambda:SourceFunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:source_lambda" } } } ] }

Diese Richtlinie erlaubt nur s3:PutObject Zugriff wenn die Quelle die Lambda-Funktion mit ARN arn:aws:lambda:us-east-1:123456789012:function:source_lambda ist. Diese Richtlinie erlaubt s3:PutObject keinen Zugriff auf jede andere aufrufende Identität. Dies gilt auch dann, wenn eine andere Funktion oder Entität einen s3:PutObject-Aufruf mit der gleichen Ausführungsrolle tätigt.

Anmerkung

Der Bedingungsschlüssel lambda:SourceFunctionARN unterstützt keine Lambda-Funktionsversionen oder -Funktionsaliase. Wenn Sie den ARN für eine bestimmte Funktionsversion oder einen bestimmten Alias verwenden, ist Ihre Funktion nicht berechtigt, die von Ihnen angegebene Aktion auszuführen. Achten Sie darauf, den unqualifizierten ARN für Ihre Funktion ohne Versions- oder Alias-Suffix zu verwenden.

Sie können auch lambda:SourceFunctionArn in Service-Kontrollrichtlinien verwenden. Angenommen, Sie möchten den Zugriff auf Ihren Bucket entweder auf den Code einer einzelnen Lambda-Funktion oder auf Aufrufe aus einer bestimmten Amazon Virtual Private Cloud (VPC) beschränken. Das folgende SCP illustriert dies.

Beispiel Richtlinie, die den Zugriff auf Amazon S3 unter bestimmten Bedingungen verweigert
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:*" ], "Resource": "arn:aws:s3:::lambda_bucket/*", "Effect": "Deny", "Condition": { "StringNotEqualsIfExists": { "aws:SourceVpc": [ "vpc-12345678" ] }, "ArnNotEqualsIfExists": { "lambda:SourceFunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:source_lambda" } } } ] }

Diese Richtlinie verweigert alle S3-Aktionen, sofern sie nicht von einer bestimmten Lambda-Funktion mit ARN arn:aws:lambda:*:123456789012:function:source_lambda stammen, oder sofern sie nicht aus dem angegebenen VPC stammen. Der StringNotEqualsIfExists-Operator weist IAM an, diese Bedingung nur zu verarbeiten, wenn der aws:SourceVpc-Schlüssel in der Anfrage vorhanden ist. In ähnlicher Weise berücksichtigt IAM den ArnNotEqualsIfExists-Operator nur, wenn lambda:SourceFunctionArn vorhanden ist.