View a markdown version of this page

Verschlüsseln AWS Lambda dauerhafte Ausführungsdaten - 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.

Verschlüsseln AWS Lambda dauerhafte Ausführungsdaten

Mit AWS Lambda langlebigen Funktionen können Sie robuste, mehrstufige Anwendungen erstellen, die bis zu einem Jahr lang ausgeführt werden können. Mithilfe von Checkpoints können Sie jede Ausführung nach Ausfällen wiederherstellen, indem abgeschlossene Arbeiten erneut abgespielt werden.

Lambda verschlüsselt dauerhafte Ausführungsdaten immer im Ruhezustand. Sie können zusätzlich Ihren eigenen, vom AWS KMS Kunden verwalteten Schlüssel für die Funktion zur Rotationskontrolle, Audittransparenz oder Einhaltung von Vorschriften konfigurieren. Bei einem vom Kunden verwalteten Schlüssel können nur von Ihnen autorisierte Benutzer Ausführungsdaten lesen.

Wie funktioniert Verschlüsselung

Eine dauerhafte Lambda-Ausführung verwendet während ihrer gesamten Lebensdauer denselben KMS-Schlüssel, mit dem sie begonnen hat. Das Ändern oder Entfernen des Schlüssels für die Funktion wirkt sich nur auf Ausführungen aus, die nach der Änderung beginnen. Erfahren SieWenn der vom Kunden verwaltete Schlüssel nicht verfügbar ist, wie sich eine dauerhafte Ausführung verhält, wenn ihr Schlüssel nicht verfügbar ist.

Für vom Kunden verwaltete Schlüssel fallen AWS KMS Standardgebühren an. Details zu den Preisen finden Sie unter AWS Key Management Service -Preise.

Was ist verschlüsselt

Wenn Sie einen vom Kunden verwalteten Schlüssel für eine dauerhafte Funktion konfigurieren, verwendet Lambda diesen Schlüssel, um die folgenden dauerhaften Ausführungsdaten im Ruhezustand zu verschlüsseln:

  • Die Eingabe-Payload, die Sie mit jeder Anfrage übergeben. Invoke

  • Checkpoint-Daten, die von der CheckpointDurableExecution API dauerhaft gespeichert werden, einschließlich Schrittergebnisse, Schrittfehler und verkettete Aufrufeingaben.

  • Ausführungsergebnisse und Fehler.

  • Rückrufergebnisse und Fehler, die Sie über SendDurableExecutionCallbackSuccess und SendDurableExecutionCallbackFailure einreichen.

Function-level und langlebige Ausführungsschlüssel sind unabhängig

Die FunktionsebeneKMSKeyArn, die Umgebungsvariablen, ZIP-Bereitstellungspakete und SnapStartSnapshots verschlüsselt, unterscheidet sich von der Funktionsebene, die dauerhafte KMSKeyArn DurableConfig Ausführungsdaten verschlüsselt. Wenn Sie das eine festlegen, wird das andere nicht festgelegt. Sie können denselben KMS-Schlüssel für beide verwenden, oder Sie können unterschiedliche KMS-Schlüssel verwenden.

Richten Sie die vom Kunden verwaltete Schlüsselverschlüsselung ein

Die Einrichtung der vom Kunden verwalteten Schlüsselverschlüsselung für eine dauerhafte Funktion erfolgt in drei Schritten. Führen Sie die folgenden Schritte der Reihe nach aus.

Erstellen eines kundenseitig verwalteten Schlüssels

Dauerhafte Funktionen unterstützen KMS-Schlüssel mit symmetrischer Verschlüsselung in derselben AWS Region wie die Funktion. Cross-Region Schlüssel werden nicht unterstützt. Um einen symmetrischen, vom Kunden verwalteten Schlüssel zu erstellen, folgen Sie den Schritten zur Erstellung von KMS-Schlüsseln mit symmetrischer Verschlüsselung im AWS Key Management Service Entwicklerhandbuch.

Berechtigungen

Sie gewähren AWS KMS Berechtigungen über die Schlüsselrichtlinie des KMS-Schlüssels.

Für die Konfiguration eines vom Kunden verwalteten Schlüssels sind AWS KMS Berechtigungen für den Prinzipal erforderlich, der die Funktion erstellt oder aktualisiert. Für das Aufrufen einer dauerhaften Funktion sind keine AWS KMS Berechtigungen für den Aufrufer erforderlich. Lambda führt die Verschlüsselung mit seinem Dienstprinzipal durch.

Schlüsselrichtlinie

Schlüsselrichtlinien steuern den Zugriff auf den vom Kunden verwalteten Schlüssel. Jeder vom Kunden verwaltete Schlüssel muss genau eine Schlüsselrichtlinie haben. Resource: "*"Bezieht sich in einer Schlüsselrichtlinie nur auf den KMS-Schlüssel, mit dem die Richtlinie verknüpft ist, nicht auf alle KMS-Schlüssel in Ihrem Konto.

Die Schlüsselrichtlinie einer dauerhaften Funktion gewährt jedem Principal nur die AWS KMS Aktionen, die er benötigt, aufgeteilt nach Dienst- und Funktions-ARN. In den folgenden Abschnitten werden die Aussagen und Bedingungen sowie ein vollständiges Beispiel beschrieben.

Erforderliche Richtlinienerklärungen

Die Richtlinie gewährt die folgenden Funktionen:

  • Aktivieren Sie IAM-Benutzerberechtigungen. Gewährt dem Konto-Root-Benutzer bedingungslosen Zugriff zur Verwaltung des Schlüssels. Diese Anweisung verwendet keine Bedingungen, da eine Festlegung des Gültigkeitsbereichs Sie daran hindern würde, den Schlüssel zu rotieren, zu aktualisieren oder zu löschen.

  • Erlauben Sie Lambda, diesen Schlüssel für dauerhafte Funktionen zu verwenden. Gewährt dem Lambda-Service Principal kms:GenerateDataKey undkms:Decrypt.

  • Erlaubt der Funktionsausführungsrolle, dauerhafte Ausführungsdaten zu entschlüsseln. Erteilt der Ausführungsrolle kms:Decrypt das Lesen des Status und das Fortschreiten der Ausführung.

  • Erlaubt dem Autor der Funktion, diesen Schlüssel zu beschreiben. Zuschüssekms:DescribeKey, damit Lambda überprüfen kann, ob der Schlüssel symmetrisch ist und während CreateFunction oder aktiviert ist. UpdateFunctionConfiguration

  • Erlaubt dem Autor der Funktion, diesen Schlüssel für eine bestimmte Funktion zu validieren. Grants kms:GenerateDataKey und kms:Decrypt so kann Lambda wichtige Berechtigungen und Zugriffe mit dem Verschlüsselungskontext der Funktion während CreateFunction oder UpdateFunctionConfiguration validieren. Dadurch wird bestätigt, dass die Schlüsselrichtlinie Aufrufe für diese spezielle Funktion akzeptiert, bevor die Funktion erstellt oder aktualisiert wird.

  • Erlaubt dauerhafte Ausführungsoperatoren. Erteilt Operatoren kms:Decrypt für Aufrufe von GetDurableExecutionIncludeExecutionData=true, GetDurableExecutionHistory mit GetDurableExecutionStateStopDurableExecution, und den Callback-APIs.

Es hat sich bewährt, separate Prinzipale für die Ausführungsrolle, den Funktionsautor und den dauerhaften Ausführungsoperator zu verwenden, sodass jede Identität nur über die Funktionen verfügt, die sie benötigt.

Empfohlene politische Bedingungen

In der Richtlinie werden die folgenden Bedingungen verwendet, um den Zugriff einzuschränken:

  • kms:ViaServiceschränkt die Verwendung von Schlüsseln auf Anfragen ein, die über Lambda weitergeleitet werden. Wenn dies auf die Anweisungen der Ausführungsrolle, des Funktionsautors und des Operators angewendet wird, wird verhindert, dass sie den Schlüssel direkt verwenden. AWS KMS

  • aws:SourceArnund aws:SourceAccountschützen Sie sich vor dem dienstübergreifenden Problem mit verwirrten Stellvertretern. Lambda leitet diese Werte weiter, wenn es AWS KMS mit seinen eigenen Dienstanmeldedaten aufruft. Diese Bedingung gilt nur für die Lambda Service Principal Statement. Die Anweisungen für die Ausführungsrolle, den Autor der Funktion und den Operator werden AWS KMS mit den Anmeldeinformationen für die Forward-Access-Sitzung des Aufrufers aufgerufen, die diese Header nicht enthalten.

  • kms:EncryptionContext:aws:lambda:FunctionArnbeschränkt den Schlüssel auf eine bestimmte Funktion. Lambda fügt dies dem Verschlüsselungskontext bei jedem AWS KMS Aufruf für dauerhafte Ausführungsdaten hinzu.

Das folgende Beispiel kombiniert die obigen Anweisungen und Bedingungen.

Beispiel Wichtige Richtlinie für langlebige Funktionen
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow Lambda to use this key for durable functions", "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333", "aws:SourceArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction", "kms:EncryptionContext:aws:lambda:FunctionArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction" } } }, { "Sid": "Allow the function execution role to decrypt durable execution data", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/myDurableFunctionRole" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "lambda.us-east-1.amazonaws.com", "kms:EncryptionContext:aws:lambda:FunctionArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction" } } }, { "Sid": "Allow the function author to describe this key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/FunctionAuthor" }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "lambda.us-east-1.amazonaws.com" } } }, { "Sid": "Allow the function author to validate this key for a specific function", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/FunctionAuthor" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "lambda.us-east-1.amazonaws.com", "kms:EncryptionContext:aws:lambda:FunctionArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction" } } }, { "Sid": "Allow durable execution operators", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/DurableExecutionOperator" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "lambda.us-east-1.amazonaws.com", "kms:EncryptionContext:aws:lambda:FunctionArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction" } } } ] }

Weitere Informationen zu AWS KMS wichtigen Richtlinien finden Sie unter So ändern Sie eine wichtige Richtlinie im AWS Key Management Service Entwicklerhandbuch.

Konfigurieren Sie einen vom Kunden verwalteten Schlüssel für eine dauerhafte Funktion

Sie konfigurieren den vom Kunden verwalteten Schlüssel für dauerhafte Ausführungsdaten über das KMSKeyArn Feld des DurableConfig Objekts. Legen Sie ihn fest, wenn Sie die Funktion erstellen CreateFunction, und aktualisieren Sie ihn bei einer vorhandenen dauerhaften Funktion mit UpdateFunctionConfiguration.

Lambda console
Um einen vom Kunden verwalteten Schlüssel für eine bestehende dauerhafte Funktion zu konfigurieren
  1. Öffnen Sie die Seite Funktionen der Lambda-Konsole.

  2. Wählen Sie eine dauerhafte Funktion.

  3. Wählen Sie „Konfiguration“ und anschließend in der linken Navigationsleiste „Dauerhafte Ausführung“.

  4. Wählen Sie Bearbeiten aus.

  5. Wählen Sie unter Verschlüsselung die Option Einen vom Kunden verwalteten Schlüssel verwenden und wählen Sie dann einen KMS-Schlüssel aus der Liste aus.

  6. Wählen Sie Speichern.

AWS CLI

Um einen vom Kunden verwalteten Schlüssel zu konfigurieren, wenn Sie eine Funktion erstellen

Im folgenden Beispiel für eine Funktion zum Erstellen einer Funktion gibt die --durable-config Option den vom Kunden verwalteten Schlüssel-ARN zusammen mit dem dauerhaften Ausführungstimeout und der Aufbewahrungsdauer an.

aws lambda create-function \ --function-name myDurableFunction \ --runtime nodejs24.x \ --handler index.handler \ --role arn:aws:iam::111122223333:role/myDurableFunctionRole \ --zip-file fileb://function.zip \ --durable-config '{"KMSKeyArn":"arn:aws:kms:us-east-1:111122223333:key/key-id","ExecutionTimeout":3600,"RetentionPeriodInDays":30}'

Um einen vom Kunden verwalteten Schlüssel für eine bestehende dauerhafte Funktion zu konfigurieren

Verwenden Sie den Befehl update-function-configuration. Schließt alle DurableConfig Felder ein, die Sie behalten möchten, da das gesamte Objekt --durable-config ersetzt wird.

aws lambda update-function-configuration \ --function-name myDurableFunction \ --durable-config '{"KMSKeyArn":"arn:aws:kms:us-east-1:111122223333:key/key-id","ExecutionTimeout":3600,"RetentionPeriodInDays":30}'

Um den vom Kunden verwalteten Schlüssel aus einer dauerhaften Funktion zu entfernen

Auslassen KMSKeyArn von--durable-config. Bestehende Ausführungen verwenden weiterhin den vom Kunden verwalteten Schlüssel, mit dem sie begonnen haben. Neue Ausführungen verwenden stattdessen die Standardverschlüsselung.

aws lambda update-function-configuration \ --function-name myDurableFunction \ --durable-config '{"ExecutionTimeout":3600,"RetentionPeriodInDays":30}'
AWS CloudFormation

Legen Sie in einer AWS::Lambda::Function Ressource die KMSKeyArn Eigenschaft fest: DurableConfig

Resources: MyDurableFunction: Type: AWS::Lambda::Function Properties: FunctionName: myDurableFunction Runtime: nodejs24.x Handler: index.handler Role: !GetAtt MyDurableFunctionRole.Arn Code: ZipFile: | // Your durable function code DurableConfig: KMSKeyArn: "arn:aws:kms:us-east-1:111122223333:key/key-id" ExecutionTimeout: 3600 RetentionPeriodInDays: 30
Wichtig

Jede dauerhafte Ausführung verwendet den vom Kunden verwalteten Schlüssel, der beim Start für die Funktion konfiguriert wurde. Das Ändern oder Entfernen des Schlüssels wirkt sich nur auf Ausführungen aus, die nach der Änderung beginnen. Bei laufenden Ausführungen wird weiterhin der Schlüssel verwendet, mit dem sie begonnen haben, bis sie abgeschlossen sind oder fehlschlagen.

Dauerhafte Ausführungsdaten lesen

Zwei Lese-APIs geben dauerhafte Ausführungsdaten zurück:

  • GetDurableExecutiongibt den aktuellen Status einer einzelnen Ausführung zurück, einschließlich der eingegebenen Nutzdaten, der neuesten Checkpoint-Daten und der Ergebnis- oder Fehlerinformationen.

  • GetDurableExecutionHistorygibt die geordnete Liste der Ereignisse zurück, die von der Ausführung ausgelöst wurden, und zeigt Checkpoint-Eingaben und -Ergebnisse, Chained-Invoke-Eingaben und -Ergebnisse sowie das Endergebnis an.

Beide APIs akzeptieren einen Anforderungsparameter. IncludeExecutionData Wenn IncludeExecutionData jatrue, verwendet Lambda die Anmeldeinformationen des Anrufers, um den vom Kunden verwalteten Schlüssel kms:Decrypt aufzurufen. Lambda gibt dann die entschlüsselten Ausführungsdaten in der Antwort zurück. Die Identität des Anrufers muss kms:Decrypt auf dem vom Kunden verwalteten Schlüssel stehen.

Wenn dies IncludeExecutionData der false Fall ist, ruft Lambda keine Ausführungsdaten auf AWS KMS oder entschlüsselt sie nicht, und die Antwort wird auf gesetztExecutionDataIncluded. false Die Antwort enthält immer nochDurableConfig, was den vom Kunden verwalteten Schlüssel-ARN wiedergibt, den die Ausführung verwendet hat. IncludeExecutionDataist standardmäßig auf eingestelltfalse, sodass Anrufer, die nur Metadaten benötigen, keine Berechtigungen benötigen. AWS KMS

Beispiel: GetDurableExecution Antwort mit IncludeExecutionData=false

{ "DurableExecutionArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction:execution:exec-abc123", "DurableExecutionName": "exec-abc123", "FunctionArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction", "StartTimestamp": 1733256000, "Status": "RUNNING", "ExecutionDataIncluded": false, "DurableConfig": { "ExecutionTimeout": 3600, "KMSKeyArn": "arn:aws:kms:us-east-1:111122223333:key/key-id", "RetentionPeriodInDays": 30 } }

Chained ruft auf

Wenn eine dauerhafte Funktion Chained Invoke verwendet, um eine andere dauerhafte Funktion aufzurufen, behandelt Lambda die untergeordnete Ausführung als unabhängige dauerhafte Ausführung: Sie hat ihre eigene Ausführungs-ID, ihren eigenen Checkpoint-Stream und ihren eigenen vom Kunden verwalteten Schlüssel. Die vom Kunden verwaltete Schlüsselkonfiguration des Elternteils hat keine Auswirkungen auf die Daten des Kindes, und die vom Kunden verwaltete Schlüsselkonfiguration des Kindes hat keine Auswirkungen auf die Daten des Elternteils.

Berechtigungen

Der Lambda-Serviceprinzipal muss über kms:GenerateDataKey und kms:Decrypt auf dem vom Kunden verwalteten Schlüssel der untergeordneten Funktion verfügen. Wenn die übergeordnete und die untergeordnete Funktion unterschiedliche vom Kunden verwaltete Schlüssel verwenden, gewähren Sie dem Dienstprinzipal Zugriff auf jeden Schlüssel separat. Für die Ausführungsrolle der übergeordneten Funktion sind keine Berechtigungen für den vom Kunden verwalteten Schlüssel des untergeordneten Elements erforderlich.

Identifizieren Sie, welcher Schlüssel welche Ausführung verschlüsselt hat

Beides GetDurableExecution und ListDurableExecutionsByFunction geben den vom Kunden verwalteten Schlüssel-ARN zurück, der jede Ausführung verschlüsselt hat. Verwenden Sie diese APIs, um zu überprüfen, welcher Schlüssel gültig war, als eine übergeordnete oder untergeordnete Ausführung gestartet wurde.

Datenschlüssel-Caching

Um das AWS KMS Anrufvolumen zu reduzieren und die Verfügbarkeit bei Serviceunterbrechungen zu verbessern, speichert Lambda einen aus Ihrem vom Kunden verwalteten Schlüssel generierten Datenschlüssel für bis zu 15 Minuten im Cache. Solange der Cache warm ist, verwendet Lambda denselben Datenschlüssel für alle Operationen innerhalb einer Ausführung und für alle Ausführungen, die während des Cache-Fensters gestartet wurden.

Cost (Kosten)

Per-execution AWS KMS Die Kosten bleiben niedrig, da Lambda GenerateDataKey höchstens einmal pro Cache-Fenster aufruft, nicht einmal pro Checkpoint. Bei hohen Anforderungsraten sinken die Kosten pro Ausführung weiter, da mehr Ausführungen jeden zwischengespeicherten Datenschlüssel gemeinsam nutzen. Ihnen werden die AWS KMS Aufrufe in Rechnung gestellt, die Lambda tatsächlich tätigt, nicht für jeden Checkpoint oder jeden Lesevorgang.

Statische Stabilität

Datenschlüssel bleiben bis zu 15 Minuten zwischengespeichert. Änderungen an Ihrem Schlüssel werden bei der nächsten Cache-Aktualisierung wirksam. Bei längeren Serviceunterbrechungen bedient Lambda weiterhin den Service aus dem Cache, sodass die Ausführung während des Fluges weiterläuft.

CloudTrail

Das Zwischenspeichern von Datenschlüsseln bedeutet, dass Sie weniger GenerateDataKey Ereignisse sehen, CloudTrail als es Ausführungen oder Checkpoints gibt. Sehen Sie sich Überwachung von KMS-Schlüsseln im Hinblick auf dauerhafte Funktionen zum Beispiel Ereignisse an.

Wenn der vom Kunden verwaltete Schlüssel nicht verfügbar ist

Wenn der vom Kunden verwaltete Schlüssel, mit dem eine Ausführung gestartet wurde, deaktiviert ist, zum Löschen geplant ist oder sein Zugriff aufgrund der Schlüsselrichtlinie gesperrt wurde, kann die Ausführung nicht weiter voranschreiten. Beim nächsten Checkpoint schlägt Lambda die Ausführung mit einem Fehler fehl, der nicht erneut versucht werden kann. AWS KMS Durch die Wiederherstellung des Zugriffs auf den Schlüssel wird die Ausführung nicht automatisch fortgesetzt. Sie müssen eine neue Ausführung starten.

APIs, die Payloads lesen oder schreiben, schlagen ebenfalls fehl, wenn der Schlüssel nicht verfügbar ist. Sie können eine der folgenden Ausnahmen zurückgeben:

  • KMSAccessDeniedException: Lambda konnte dauerhafte Ausführungsdaten nicht entschlüsseln, da der Zugriff auf den KMS-Schlüssel verweigert wurde.

  • KMSDisabledException: Lambda konnte dauerhafte Ausführungsdaten nicht entschlüsseln, da der KMS-Schlüssel deaktiviert ist.

  • KMSInvalidStateException: Lambda konnte dauerhafte Ausführungsdaten nicht entschlüsseln, da der Status des KMS-Schlüssels nicht gültig ist für. Decrypt

  • KMSNotFoundException: Lambda konnte dauerhafte Ausführungsdaten nicht entschlüsseln, da der KMS-Schlüssel nicht gefunden wurde.

Durch die Wiederherstellung des Zugriffs auf den KMS-Schlüssel können diese Lese-APIs bei Ausführungen, die bereits fehlgeschlagen sind, wieder erfolgreich sein. Fehlgeschlagene Ausführungen bleiben fehlschlagen. Sie müssen eine neue Ausführung starten.

Um die Ausführungsmetadaten zu überprüfen, während der KMS-Schlüssel nicht verfügbar ist, rufen Sie GetDurableExecution mit IncludeExecutionData=false an. Dadurch werden der Status, die Zeitstempel und DurableConfig (einschließlich des KMS-Schlüssels ARN) der Ausführung ohne Aufruf AWS KMS zurückgegeben.

Da Lambda Datenschlüssel zwischenspeichert, wird die Deaktivierung eines Schlüssels nicht sofort wirksam. Details hierzu finden Sie unter Datenschlüssel-Caching.

Wichtig

Durch das Löschen eines KMS-Schlüssels, von dem laufende oder beibehaltene Ausführungen immer noch abhängen, werden diese Ausführungen und ihr Verlauf dauerhaft zerstört.

Überwachung von KMS-Schlüsseln im Hinblick auf dauerhafte Funktionen

Wenn Sie einen vom Kunden verwalteten Schlüssel mit einer dauerhaften Funktion verwenden, können Sie AWS CloudTraildamit die AWS KMS Anrufe verfolgen, die Lambda in Ihrem Namen tätigt. Allgemeine Hinweise zur Suche nach AWS KMS Ereignissen finden Sie unter Suchen nach AWS KMS API-Aktivitäten.

Um zu überprüfen, ob Lambda Ihren Schlüssel wie vorgesehen verwendet, suchen Sie in jedem Ereignis nach diesen Feldern:

  • eventName: einer von GenerateDataKeyDecrypt, oder DescribeKey

  • eventSource: kms.amazonaws.com

  • userIdentity.invokedBy: lambda.amazonaws.com

  • requestParameters.encryptionContext.aws:lambda:FunctionArn: der ARN der dauerhaften Funktion

Bei den folgenden Beispielen handelt es sich um CloudTrail Ereignisse aus einem CreateFunction UpdateFunctionConfiguration OR-Aufruf, bei dem ein vom Kunden verwalteter Schlüssel für eine dauerhafte Funktion konfiguriert wird. Lambda gibt drei AWS KMS Aufrufe aus, um den Schlüssel zu validieren: einen echten und einen DescribeKey Probelauf und. GenerateDataKey Decrypt

GenerateDataKey

Wenn Sie die KMSKeyArn Eingabe festlegen oder ändernDurableConfig, führt Lambda einen Probelauf mit Ihrem vom GenerateDataKey Kunden verwalteten Schlüssel aus, um zu überprüfen, ob die Schlüsselrichtlinie es Lambda ermöglicht, Datenschlüssel für den Verschlüsselungskontext dieser Funktion abzuleiten. Der Testlauf führt keine kryptografische Arbeit durch, sondern zeichnet ein vollständiges Ereignis auf. CloudTrail Das folgende Beispielereignis zeichnet den Probelauf auf: GenerateDataKey

{ "eventVersion": "1.11", "userIdentity": { "type": "AssumedRole", "principalId": "AROA123456789EXAMPLE:example", "arn": "arn:aws:sts::111122223333:assumed-role/FunctionAuthor/example", "accountId": "111122223333", "accessKeyId": "ASIA123456789EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROA123456789EXAMPLE", "arn": "arn:aws:iam::111122223333:role/FunctionAuthor", "accountId": "111122223333", "userName": "FunctionAuthor" }, "attributes": { "creationDate": "2026-01-15T16:54:42Z", "mfaAuthenticated": "false" } }, "invokedBy": "lambda.amazonaws.com" }, "eventTime": "2026-01-15T16:55:00Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-east-1", "sourceIPAddress": "lambda.amazonaws.com", "userAgent": "lambda.amazonaws.com", "errorCode": "DryRunOperationException", "errorMessage": "The request would have succeeded, but the DryRun option is set.", "requestParameters": { "encryptionContext": { "aws:lambda:FunctionArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction" }, "dryRun": true, "keyId": "arn:aws:kms:us-east-1:111122223333:key/key-id", "keySpec": "AES_256" }, "responseElements": null, "additionalEventData": { "keyMaterialId": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0EXAMPLE" }, "requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa", "eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEbbbbb", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:111122223333:key/key-id" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }
Decrypt

Wenn Sie die KMSKeyArn Eingabe festlegen oder ändernDurableConfig, führt Decrypt Lambda auch einen Probelauf mit Ihrem vom Kunden verwalteten Schlüssel aus, um zu überprüfen, ob die Schlüsselrichtlinie es Lambda ermöglicht, Daten für den Verschlüsselungskontext dieser Funktion zu entschlüsseln. Der Testlauf verwendet, sodass kein echter Chiffretext erforderlich IGNORE_CIPHERTEXT ist. Das folgende Beispielereignis zeichnet den Probelauf auf: Decrypt

{ "eventVersion": "1.11", "userIdentity": { "type": "AssumedRole", "principalId": "AROA123456789EXAMPLE:example", "arn": "arn:aws:sts::111122223333:assumed-role/FunctionAuthor/example", "accountId": "111122223333", "accessKeyId": "ASIA123456789EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROA123456789EXAMPLE", "arn": "arn:aws:iam::111122223333:role/FunctionAuthor", "accountId": "111122223333", "userName": "FunctionAuthor" }, "attributes": { "creationDate": "2026-01-15T16:54:42Z", "mfaAuthenticated": "false" } }, "invokedBy": "lambda.amazonaws.com" }, "eventTime": "2026-01-15T16:55:00Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-east-1", "sourceIPAddress": "lambda.amazonaws.com", "userAgent": "lambda.amazonaws.com", "errorCode": "DryRunOperationException", "errorMessage": "The request would have succeeded, but the DryRun option is set.", "requestParameters": { "encryptionContext": { "aws:lambda:FunctionArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction" }, "dryRun": true, "keyId": "arn:aws:kms:us-east-1:111122223333:key/key-id", "dryRunModifiers": ["IGNORE_CIPHERTEXT"], "encryptionAlgorithm": "SYMMETRIC_DEFAULT" }, "responseElements": null, "additionalEventData": { "keyMaterialId": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0EXAMPLE" }, "requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa", "eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEbbbbb", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:111122223333:key/key-id" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }
DescribeKey

Wenn Sie das KMSKeyArn In setzen oder ändernDurableConfig, ruft Lambda auf, DescribeKey um zu bestätigen, dass der Schlüssel symmetrisch und aktiviert ist, bevor es die Änderung akzeptiert. Im Gegensatz zu den Decrypt Sonden GenerateDataKey und ist dies ein echter Aufruf, kein Probelauf. Das folgende Beispielereignis zeichnet den Vorgang DescribeKey auf:

{ "eventVersion": "1.11", "userIdentity": { "type": "AssumedRole", "principalId": "AROA123456789EXAMPLE:example", "arn": "arn:aws:sts::111122223333:assumed-role/FunctionAuthor/example", "accountId": "111122223333", "accessKeyId": "ASIA123456789EXAMPLE", "sessionContext": { "sessionIssuer": { "type": "Role", "principalId": "AROA123456789EXAMPLE", "arn": "arn:aws:iam::111122223333:role/FunctionAuthor", "accountId": "111122223333", "userName": "FunctionAuthor" }, "attributes": { "creationDate": "2026-01-15T16:54:42Z", "mfaAuthenticated": "false" } }, "invokedBy": "lambda.amazonaws.com" }, "eventTime": "2026-01-15T16:55:00Z", "eventSource": "kms.amazonaws.com", "eventName": "DescribeKey", "awsRegion": "us-east-1", "sourceIPAddress": "lambda.amazonaws.com", "userAgent": "lambda.amazonaws.com", "requestParameters": { "keyId": "arn:aws:kms:us-east-1:111122223333:key/key-id" }, "responseElements": null, "requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa", "eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEbbbbb", "readOnly": true, "resources": [ { "accountId": "111122223333", "type": "AWS::KMS::Key", "ARN": "arn:aws:kms:us-east-1:111122223333:key/key-id" } ], "eventType": "AwsApiCall", "managementEvent": true, "recipientAccountId": "111122223333", "eventCategory": "Management" }