Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Crittografia AWS Lambda dati di esecuzione durevoli
Grazie a funzioni AWS Lambda durevoli, è possibile creare applicazioni resilienti in più fasi che durano fino a un anno, utilizzando i checkpoint per ripristinare ogni esecuzione dagli errori riproducendo il lavoro completato.
Lambda crittografa sempre i dati di esecuzione durevoli a riposo. Puoi inoltre configurare la tua chiave gestita AWS KMS dal cliente sulla funzione per il controllo della rotazione, la visibilità degli audit o la conformità. Con una chiave gestita dal cliente, solo i committenti autorizzati possono leggere i dati di esecuzione.
Come funziona la crittografia
Un'esecuzione durevole Lambda utilizza la stessa chiave KMS con cui è iniziata per tutta la sua durata. La modifica o la rimozione della chiave sulla funzione ha effetto solo sulle esecuzioni che iniziano dopo la modifica. Scopri Quando la chiave gestita dal cliente non è disponibile come si comporta un'esecuzione duratura quando la sua chiave non è disponibile.
Le chiavi gestite dal cliente sono soggette a costi standard AWS KMS . Per i dettagli sui prezzi, vedere Prezzi di AWS Key Management Service
Cosa è crittografato
Quando si configura una chiave gestita dal cliente su una funzione durevole, Lambda utilizza tale chiave per crittografare i seguenti dati di esecuzione duratura a riposo:
Il payload di input che trasmetti con ogni richiesta.
InvokeI dati dei checkpoint sono stati mantenuti dall'
CheckpointDurableExecutionAPI, inclusi i risultati delle fasi, gli errori dei passaggi e gli input di invocazione concatenati.Risultati ed errori di esecuzione.
Risultati ed errori di callback inviati tramite
SendDurableExecutionCallbackSuccesseSendDurableExecutionCallbackFailure.
Function-level e le chiavi di esecuzione durevoli sono indipendenti
Il livello di funzione KMSKeyArn che crittografa le variabili di ambiente, i pacchetti di distribuzione.zip e le SnapStart istantanee è separato da quello KMSKeyArn in DurableConfig che crittografa i dati di esecuzione durevoli. L'impostazione di uno non imposta l'altro. È possibile utilizzare la stessa chiave KMS per entrambi oppure è possibile utilizzare chiavi KMS diverse.
Configura la crittografia delle chiavi gestita dal cliente
L'impostazione della crittografia delle chiavi gestita dal cliente per una funzione duratura è un processo in tre fasi. Completa i seguenti passaggi in ordine.
Creazione di una chiave gestita dal cliente
Le funzioni durevoli supportano le chiavi KMS di crittografia simmetrica nella stessa AWS regione della funzione. Cross-Region le chiavi non sono supportate. Per creare una chiave simmetrica gestita dal cliente, segui i passaggi per la creazione di chiavi KMS di crittografia simmetrica nella Guida per gli sviluppatori. AWS Key Management Service
Permissions
AWS KMS Le autorizzazioni vengono concesse tramite la politica chiave della chiave KMS.
La configurazione di una chiave gestita dal cliente richiede AWS KMS le autorizzazioni sul principale che crea o aggiorna la funzione. L'invocazione di una funzione durevole non richiede AWS KMS autorizzazioni sul chiamante; Lambda esegue la crittografia con il suo service principal.
Policy della chiave
Le policy della chiave controllano l'accesso alla chiave gestita dal cliente. Ogni chiave gestita dal cliente deve avere esattamente una policy chiave. In una politica chiave, Resource: "*" si riferisce solo alla chiave KMS a cui è associata la politica, non a tutte le chiavi KMS dell'account.
La politica chiave di una funzione durevole concede a ciascun committente solo le AWS KMS azioni di cui ha bisogno, suddivise per servizio e funzione (ARN). Le sezioni seguenti descrivono le dichiarazioni, le condizioni e un esempio completo.
Dichiarazioni politiche obbligatorie
La politica garantisce le seguenti funzionalità:
Abilita le autorizzazioni utente IAM. Concede all'account root l'accesso incondizionato per gestire la chiave. Questa dichiarazione non utilizza condizioni perché l'ambito impedirebbe di ruotare, aggiornare o eliminare la chiave.
Consenti a Lambda di utilizzare questo tasto per funzioni durature. Assegna il responsabile del servizio Lambda e.
kms:GenerateDataKeykms:DecryptConsenti al ruolo di esecuzione della funzione di decrittografare i dati di esecuzione durevoli. Assegna al ruolo
kms:Decryptdi esecuzione la lettura dello stato e il progresso dell'esecuzione.Consenti all'autore della funzione di descrivere questa chiave. Consente a
kms:DescribeKeyLambda di convalidare che la chiave è simmetrica e abilitata durante o.CreateFunctionUpdateFunctionConfigurationConsenti all'autore della funzione di convalidare questa chiave per una funzione specifica. Concede
kms:GenerateDataKeyekms:Decryptquindi Lambda può convalidare le autorizzazioni delle chiavi e l'accesso con il contesto di crittografia della funzione durante o.CreateFunctionUpdateFunctionConfigurationCiò conferma che la policy chiave accetta le chiamate per questa funzione specifica prima che la funzione venga creata o aggiornata.Consenti operatori di esecuzione duraturi. Concede
kms:Decryptagli operatori le chiamate versoGetDurableExecution,GetDurableExecutionHistorywithIncludeExecutionData=trueGetDurableExecutionStateStopDurableExecution, e le API di callback.
Come procedura consigliata, utilizzate principi separati per il ruolo di esecuzione, l'autore della funzione e l'operatore di esecuzione durevole in modo che ogni identità abbia solo le funzionalità necessarie.
Condizioni politiche consigliate
La politica utilizza le seguenti condizioni per limitare l'accesso:
kms: ViaService limita l'uso delle chiavi alle richieste inoltrate tramite Lambda. Applicandolo al ruolo di esecuzione, all'autore della funzione e alle istruzioni dell'operatore si impedisce loro di utilizzare la chiave direttamente. AWS KMS
aws: SourceArn e aws: SourceAccount proteggono dal problema dei vice confusi tra servizi diversi. Lambda inoltra questi valori quando chiama AWS KMS utilizzando le proprie credenziali di servizio. Questa condizione si applica solo alla dichiarazione principale del servizio Lambda. Le istruzioni relative al ruolo di esecuzione, all'autore della funzione e all'operatore utilizzano AWS KMS le credenziali della sessione di accesso inoltrato del chiamante, che non contengono queste intestazioni.
kms: definisce l'EncryptionContext:aws:lambda:FunctionArnambito della chiave di una funzione specifica. Lambda lo aggiunge al contesto di crittografia su ogni AWS KMS chiamata per dati di esecuzione durevoli.
L'esempio seguente combina le dichiarazioni e le condizioni precedenti.
Esempio Politica chiave per le funzioni durevoli
{ "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" } } } ] }
Per ulteriori informazioni sulle politiche AWS KMS chiave, consulta How to change a key policy nella AWS Key Management Service Developer Guide.
Configura una chiave gestita dal cliente su una funzione duratura
È possibile configurare la chiave gestita dal cliente per dati di esecuzione duraturi tramite il KMSKeyArn campo dell'DurableConfigoggetto. Impostala quando crei la funzione con CreateFunction; aggiornala su una funzione durevole esistente con UpdateFunctionConfiguration.
Importante
Ogni esecuzione durevole utilizza la chiave gestita dal cliente che è stata configurata sulla funzione all'avvio. La modifica o la rimozione della chiave ha effetto solo sulle esecuzioni che iniziano dopo la modifica; le esecuzioni in corso continuano a utilizzare la chiave con cui sono iniziate fino al completamento o al fallimento.
Lettura di dati di esecuzione durevoli
Due API di lettura restituiscono dati di esecuzione duraturi:
GetDurableExecutionrestituisce lo stato corrente di una singola esecuzione, incluso il payload di input, i dati di checkpoint più recenti e le informazioni sui risultati o sugli errori.GetDurableExecutionHistoryrestituisce l'elenco ordinato degli eventi emessi dall'esecuzione, mostrando gli input e i risultati del checkpoint, gli input e i risultati con invocazione concatenata e il risultato finale.
IncludeExecutionDataEntrambe le API accettano un parametro di richiesta. In tal caso IncludeExecutionDatatrue, Lambda utilizza le credenziali del chiamante per richiamare la chiave gestita dal kms:Decrypt cliente. Lambda restituisce quindi i dati di esecuzione decrittografati nella risposta. L'identità del chiamante deve figurare kms:Decrypt sulla chiave gestita dal cliente.
Quando lo IncludeExecutionData èfalse, Lambda non chiama AWS KMS né decrittografa i dati di esecuzione e la risposta è impostata su. ExecutionDataIncluded false La risposta include ancoraDurableConfig, il che fa eco all'ARN chiave gestita dal cliente utilizzata dall'esecuzione. IncludeExecutionDatal'impostazione predefinita èfalse, quindi i chiamanti che necessitano solo di metadati non necessitano di autorizzazioni. AWS KMS
GetDurableExecutionEsempio: risposta con 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 } }
Invocazioni concatenate
Quando una funzione durevole utilizza un richiamo concatenato per chiamare un'altra funzione durevole, Lambda considera l'esecuzione secondaria come un'esecuzione durevole indipendente: ha il proprio ID di esecuzione, il proprio flusso di checkpoint e la propria chiave gestita dal cliente. La configurazione della chiave gestita dal cliente del genitore non ha alcun effetto sui dati del figlio e la configurazione della chiave gestita dal cliente del bambino non ha alcun effetto sui dati del genitore.
Permissions
Il responsabile del servizio Lambda deve avere kms:GenerateDataKey e kms:Decrypt sulla chiave gestita dal cliente della funzione figlio. Se le funzioni padre e figlio utilizzano chiavi gestite dal cliente diverse, concedi al responsabile del servizio l'accesso su ciascuna chiave separatamente. Il ruolo di esecuzione della funzione principale non richiede autorizzazioni sulla chiave gestita dal cliente del figlio.
Identificare quale chiave ha crittografato quale esecuzione
Entrambi GetDurableExecution e ListDurableExecutionsByFunction restituiscono l'ARN della chiave gestita dal cliente che ha crittografato ogni esecuzione. Utilizza queste API per confermare quale chiave era attiva all'avvio di un'esecuzione principale o secondaria.
Caching della chiave dei dati
Per ridurre il volume delle AWS KMS chiamate e migliorare la disponibilità durante le interruzioni del servizio, Lambda memorizza nella cache una chiave di dati generata dalla chiave gestita dal cliente per un massimo di 15 minuti. Mentre la cache è calda, Lambda riutilizza la stessa chiave di dati tra le operazioni all'interno di un'esecuzione e tra le esecuzioni avviate durante la finestra della cache.
Costo
Per-execution AWS KMS il costo rimane basso perché Lambda chiama GenerateDataKey al massimo una volta per finestra di cache, non una volta per checkpoint. A tassi di richiesta elevati, il costo per esecuzione diminuisce ulteriormente perché più esecuzioni condividono ogni chiave di dati memorizzata nella cache. Ti vengono fatturate le AWS KMS chiamate effettivamente effettuate da Lambda, non per ogni checkpoint o lettura.
Stabilità statica
Le chiavi dati rimangono memorizzate nella cache per un massimo di 15 minuti. Le modifiche alla chiave hanno effetto al successivo aggiornamento della cache. Durante le interruzioni prolungate del servizio, Lambda continua a funzionare dalla cache, mantenendo in esecuzione le esecuzioni in corso.
CloudTrail
La memorizzazione nella cache delle chiavi di dati consente di visualizzare meno GenerateDataKey eventi CloudTrail rispetto alle esecuzioni o ai checkpoint. Vedi ad esempio Monitoraggio delle chiavi KMS per funzioni durature eventi.
Quando la chiave gestita dal cliente non è disponibile
Se la chiave gestita dal cliente con cui è iniziata un'esecuzione è disabilitata, è programmata per l'eliminazione o il suo accesso è stato revocato tramite la politica delle chiavi, l'esecuzione non può procedere ulteriormente. Al checkpoint successivo, Lambda fallisce l'esecuzione con un errore non ripetibile. AWS KMS Il ripristino dell'accesso alla chiave non riprende automaticamente l'esecuzione. È necessario iniziare una nuova esecuzione.
Le API che leggono o scrivono payload falliscono anche quando la chiave non è disponibile. Possono restituire una delle seguenti eccezioni:
KMSAccessDeniedException: Lambda non è riuscita a decrittografare i dati di esecuzione durevoli perché l'accesso alla chiave KMS è stato negato.KMSDisabledException: Lambda non è riuscita a decrittografare i dati di esecuzione duratura perché la chiave KMS è disabilitata.KMSInvalidStateException: Lambda non è riuscita a decrittografare i dati di esecuzione duratura perché lo stato della chiave KMS non è valido per.DecryptKMSNotFoundException: Lambda non è riuscita a decrittografare i dati di esecuzione duratura perché la chiave KMS non è stata trovata.
Il ripristino dell'accesso alla chiave KMS consente a queste API di lettura di avere nuovamente successo per le esecuzioni già fallite. Le esecuzioni non riuscite rimangono fallite; è necessario iniziare una nuova esecuzione.
Per controllare i metadati di esecuzione mentre la chiave KMS non è disponibile, chiama con. GetDurableExecution IncludeExecutionData=false Ciò restituisce lo stato dell'esecuzione, i timestamp e DurableConfig (inclusa la chiave KMS ARN) senza chiamare. AWS KMS
Poiché Lambda memorizza nella cache le chiavi di dati, la disabilitazione di una chiave non ha effetto immediato. Per informazioni dettagliate, vedi Caching della chiave dei dati.
Importante
L'eliminazione di una chiave KMS da cui dipendono ancora le esecuzioni in corso o conservate distrugge definitivamente tali esecuzioni e la relativa cronologia.
Monitoraggio delle chiavi KMS per funzioni durature
Quando utilizzi una chiave gestita dal cliente con una funzione duratura, puoi utilizzarla AWS CloudTrail per tenere traccia delle AWS KMS chiamate effettuate da Lambda per tuo conto. Per indicazioni generali sulla ricerca AWS KMS degli eventi, consulta Searching AWS KMS API activity.
Per confermare che Lambda stia utilizzando la tua chiave come previsto, cerca questi campi in ogni evento:
eventName: uno deiGenerateDataKeyDecrypt, oDescribeKeyeventSource:kms.amazonaws.com.rproxy.goskope.comuserIdentity.invokedBy:lambda.amazonaws.com.rproxy.goskope.comrequestParameters.encryptionContext.aws:lambda:FunctionArn: l'ARN della funzione durevole
Gli esempi seguenti sono CloudTrail gli eventi di una UpdateFunctionConfiguration chiamata CreateFunction or che configura una chiave gestita dal cliente su una funzione durevole. Lambda emette tre AWS KMS chiamate per convalidare la chiave: una vera e una a DescribeKey secco e. GenerateDataKey Decrypt