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.
InvokeCheckpoint-Daten, die von der
CheckpointDurableExecutionAPI dauerhaft gespeichert werden, einschließlich Schrittergebnisse, Schrittfehler und verkettete Aufrufeingaben.Ausführungsergebnisse und Fehler.
Rückrufergebnisse und Fehler, die Sie über
SendDurableExecutionCallbackSuccessundSendDurableExecutionCallbackFailureeinreichen.
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:GenerateDataKeyundkms:Decrypt.Erlaubt der Funktionsausführungsrolle, dauerhafte Ausführungsdaten zu entschlüsseln. Erteilt der Ausführungsrolle
kms:Decryptdas Lesen des Status und das Fortschreiten der Ausführung.Erlaubt dem Autor der Funktion, diesen Schlüssel zu beschreiben. Zuschüsse
kms:DescribeKey, damit Lambda überprüfen kann, ob der Schlüssel symmetrisch ist und währendCreateFunctionoder aktiviert ist.UpdateFunctionConfigurationErlaubt dem Autor der Funktion, diesen Schlüssel für eine bestimmte Funktion zu validieren. Grants
kms:GenerateDataKeyundkms:Decryptso kann Lambda wichtige Berechtigungen und Zugriffe mit dem Verschlüsselungskontext der Funktion währendCreateFunctionoderUpdateFunctionConfigurationvalidieren. 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:Decryptfür Aufrufe vonGetDurableExecutionIncludeExecutionData=true,GetDurableExecutionHistorymitGetDurableExecutionStateStopDurableExecution, 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 KMSaws:SourceArnundaws: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.
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.DecryptKMSNotFoundException: 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 vonGenerateDataKeyDecrypt, oderDescribeKeyeventSource:kms.amazonaws.com.rproxy.goskope.comuserIdentity.invokedBy:lambda.amazonaws.com.rproxy.goskope.comrequestParameters.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