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 laufen. Mithilfe von Checkpoints können Sie jede Ausführung nach einem Ausfall wiederherstellen, indem abgeschlossene Arbeiten erneut abgespielt werden.

Lambda verschlüsselt dauerhafte Ausführungsdaten immer im Ruhezustand. Sie können für die Funktion zusätzlich Ihren eigenen, vom AWS KMS Kunden verwalteten Schlüssel zur Rotationskontrolle, Audittransparenz oder Einhaltung von Vorschriften konfigurieren. Mit einem vom Kunden verwalteten Schlüssel können nur von Ihnen autorisierte Prinzipale 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 in der 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 eingegebene Nutzlast, die Sie bei jeder Anfrage übergeben. Invoke

  • Checkpoint-Daten, die von der CheckpointDurableExecution API beibehalten 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 dauerhafte Ausführungsschlüssel sind unabhängig

Die FunktionsebeneKMSKeyArn, die Umgebungsvariablen, ZIP-Bereitstellungspakete und SnapStart Snapshots verschlüsselt, ist von der Funktionsebene getrennt, die dauerhafte KMSKeyArn Ausführungsdaten DurableConfig verschlüsselt. Wenn Sie eine Einstellung festlegen, wird die andere nicht festgelegt. Sie können für beide den gleichen KMS-Schlüssel verwenden, oder Sie können verschiedene KMS-Schlüssel verwenden.

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

Die Einrichtung einer 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 den Aufruf 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, an den die Richtlinie angehängt 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, und zwar in Bezug auf Dienst- und Funktions-ARN. In den folgenden Abschnitten werden die Anweisungen, Bedingungen und ein vollständiges Beispiel beschrieben.

Erforderliche Grundsatzerklärungen

Die Richtlinie gewährt die folgenden Funktionen:

  • Aktivieren Sie IAM-Benutzerberechtigungen. Gewährt dem Root-Konto bedingungslosen Zugriff zur Verwaltung des Schlüssels. Für diese Anweisung gibt es keine Bedingungen, da Sie aufgrund des Gültigkeitsbereichs daran gehindert würden, 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-Serviceprinzipal kms:GenerateDataKey und. kms:Decrypt

  • Erlaubt der Funktionsausführungsrolle, dauerhafte Ausführungsdaten zu entschlüsseln. Gewährt der Ausführungsrollekms:Decrypt, den Status zu lesen und die Ausführung fortzusetzen.

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

  • Erlauben Sie dem Autor der Funktion, diesen Schlüssel für eine bestimmte Funktion zu validieren. Zuschüssekms:GenerateDataKey, kms:Decrypt sodass Lambda die Schlüsselberechtigungen und den Zugriff mit dem Verschlüsselungskontext der Funktion während CreateFunction oder UpdateFunctionConfiguration validieren kann. Dies bestätigt, dass die Schlüsselrichtlinie Aufrufe für diese spezielle Funktion akzeptiert, bevor die Funktion erstellt oder aktualisiert wird.

  • Erlauben Sie dauerhafte Ausführungsoperatoren. Gewährt Operatoren kms:Decrypt für Aufrufe von GetDurableExecutionIncludeExecutionData=true, GetDurableExecutionHistory mit GetDurableExecutionStateStopDurableExecution, und den Callback-APIs.

Es hat sich bewährt, separate Principals 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

Die Richtlinie verwendet die folgenden Bedingungen, um den Zugriff einzuschränken:

  • kms: ViaService Schränkt die Verwendung von Schlüsseln auf Anfragen ein, die über Lambda weitergeleitet werden. Wenn Sie dies auf die Anweisungen für die Ausführungsrolle, den Funktionsautor und den Operator anwenden, wird verhindert, dass diese den Schlüssel direkt verwenden. AWS KMS

  • aws: SourceArn und aws: SourceAccount schützen vor dem dienstübergreifenden verwirrten Stellvertreter-Problem. Lambda leitet diese Werte weiter, wenn es AWS KMS mit seinen eigenen Dienstanmeldedaten aufruft. Diese Bedingung gilt nur für die Lambda Service Principal-Anweisung. Die Anweisungen für die Ausführungsrolle, den Funktionsautor und den Operator werden AWS KMS mit den Forward-Access-Sitzungsanmeldeinformationen des Aufrufers aufgerufen, die diese Header nicht enthalten.

  • kms: beschränkt den EncryptionContext:aws:lambda:FunctionArn 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 dauerhafte 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 im AWS Key Management Service Entwicklerhandbuch unter So ändern Sie eine wichtige Richtlinie.

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 mit erstellen CreateFunction; aktualisieren Sie ihn für eine bestehende dauerhafte 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 dann in der linken Navigationsleiste Dauerhafte Ausführung aus.

  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 https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-function.html Create-Function-Beispiel gibt die --durable-config Option den ARN des vom Kunden verwalteten Schlüssels zusammen mit dem dauerhaften Ausführungs-Timeout und der Aufbewahrungsfrist 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ßen Sie 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 vonDurableConfig:

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

Bei jeder dauerhaften Ausführung wird der vom Kunden verwaltete Schlüssel verwendet, der für die Funktion beim Start konfiguriert wurde. Das Ändern oder Entfernen des Schlüssels wirkt sich nur auf Ausführungen aus, die nach der Änderung beginnen. Während der Ausführung wird 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 Nutzlast, der neuesten Checkpoint-Daten und Ergebnis- oder Fehlerinformationen.

  • GetDurableExecutionHistorygibt die geordnete Liste der Ereignisse zurück, die die Ausführung ausgelöst hat. Sie zeigt Checkpoint-Eingaben und -Ergebnisse, Eingaben und Ergebnisse von verketteten Aufrufen sowie das Endergebnis.

Beide APIs akzeptieren einen Anforderungsparameter. IncludeExecutionData IncludeExecutionDataIst dies der true Fall, verwendet Lambda die Anmeldeinformationen des Anrufers, um den vom Kunden verwalteten Schlüssel abzurufenkms:Decrypt. 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.

IncludeExecutionDataIst dies der false Fall, 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 noch FolgendesDurableConfig, was den vom Kunden verwalteten Schlüssel-ARN widerspiegelt, 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 langlebige 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 übergeordneten Elements hat keine Auswirkung auf die Daten des untergeordneten Elements, und die vom Kunden verwaltete Schlüsselkonfiguration des untergeordneten Elements hat keine Auswirkung auf die Daten des übergeordneten Elements.

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 Serviceprinzipal separat Zugriff auf jeden Schlüssel. Für die Ausführungsrolle der übergeordneten Funktion sind keine Berechtigungen für den vom Kunden verwalteten Schlüssel der untergeordneten Funktion erforderlich.

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

Beide 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 die Ausführung einer übergeordneten oder untergeordneten Ausführung begann.

Datenschlüssel-Caching

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

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 sich mehr Ausführungen jeden zwischengespeicherten Datenschlüssel teilen. Ihnen werden die AWS KMS Aufrufe in Rechnung gestellt, die Lambda tatsächlich tätigt, nicht für jeden Checkpoint oder 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 Betriebsunterbrechungen bedient Lambda weiterhin den Cache und sorgt so dafür, dass die Ausführung während des Fluges weiterläuft.

CloudTrail

Durch das Zwischenspeichern von Datenschlüsseln sehen Sie weniger GenerateDataKey Ereignisse CloudTrail als Ausführungen oder Checkpoints. Siehe Überwachung der KMS-Schlüssel für dauerhafte Funktionen zum Beispiel Ereignisse.

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

Wenn der vom Kunden verwaltete Schlüssel, mit dem eine Ausführung begonnen hat, deaktiviert ist oder dessen Löschung geplant ist oder ihm der Zugriff durch die Schlüsselrichtlinie entzogen wurde, kann die Ausführung nicht weiter voranschreiten. Beim nächsten Checkpoint schlägt Lambda die Ausführung mit einem Fehler fehl, der nicht wiederholt 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 keine dauerhaften Ausführungsdaten entschlüsseln, da der Zugriff auf den KMS-Schlüssel verweigert wurde.

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

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

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

Durch die Wiederherstellung des Zugriffs auf den KMS-Schlüssel sind diese Lese-APIs für bereits fehlgeschlagene Ausführungen wieder erfolgreich. Fehlgeschlagene Ausführungen bleiben fehlgeschlagen; Sie müssen eine neue Ausführung starten.

Rufen GetDurableExecution Sie mit auf, um die Ausführungsmetadaten zu überprüfen, während der KMS-Schlüssel nicht verfügbar ist. IncludeExecutionData=false Dadurch werden der Ausführungsstatus, die Zeitstempel und DurableConfig (einschließlich des KMS-Schlüssel-ARN) 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 zurückgehaltene Ausführungen immer noch abhängen, werden diese Ausführungen und ihr Verlauf dauerhaft zerstört.

Überwachung der KMS-Schlüssel für dauerhafte Funktionen

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

Um zu bestätigen, dass Lambda Ihren Schlüssel wie vorgesehen verwendet, suchen Sie bei jedem Ereignis nach diesen Feldern:

  • eventName: eines von GenerateDataKeyDecrypt, oder DescribeKey

  • eventSource: kms.amazonaws.com

  • userIdentity.invokedBy: lambda.amazonaws.com

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

Die folgenden Beispiele sind CloudTrail Ereignisse aus einem CreateFunction UpdateFunctionConfiguration OR-Aufruf, der einen vom Kunden verwalteten Schlüssel für eine dauerhafte Funktion konfiguriert. 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 Kunden verwalteten Schlüssel durchGenerateDataKey, um zu überprüfen, ob Lambda aufgrund der Schlüsselrichtlinie Datenschlüssel für den Verschlüsselungskontext dieser Funktion ableiten kann. Der Probelauf führt keine kryptografischen Arbeiten 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 Lambda auch einen Probelauf für Ihren vom Kunden verwalteten Schlüssel Decrypt durch, um zu überprüfen, ob Lambda gemäß der Schlüsselrichtlinie Daten für den Verschlüsselungskontext dieser Funktion entschlüsseln kann. Der Probelauf wird 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 den KMSKeyArn Eingang setzen oder ändern, ruft Lambda aufDurableConfig, DescribeKey um zu bestätigen, dass der Schlüssel symmetrisch und aktiviert ist, bevor die Änderung akzeptiert wird. Im Gegensatz zu den GenerateDataKey Decrypt ND-Sonden handelt es sich um einen echten Anruf, nicht um einen 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" }