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 e in più fasi che durano fino a un anno, utilizzando i checkpoint per ripristinare ogni esecuzione in caso di errori ripetendo il lavoro completato.
Lambda crittografa sempre i dati di esecuzione durevoli quando sono inattivi. È inoltre possibile configurare la propria 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 responsabili 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 del tasto sulla funzione influisce solo sulle esecuzioni che iniziano dopo la modifica. Scopri Quando la chiave gestita dal cliente non è disponibile come si comporta un'esecuzione durevole quando la relativa 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 configuri una chiave gestita dal cliente su una funzione durevole, Lambda utilizza quella chiave per crittografare i seguenti dati di esecuzione durevoli a riposo:
Il payload di input che trasmetti con ogni richiesta.
InvokeDati di checkpoint mantenuti dall'
CheckpointDurableExecutionAPI, inclusi i risultati delle fasi, gli errori delle fasi e gli input di invoke concatenati.Risultati ed errori di esecuzione.
Risultati di callback ed errori 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 SnapStartistantanee è separato da DurableConfig quello KMSKeyArn in cui crittografa i dati di esecuzione durevoli. L'impostazione di uno non imposta l'altro. Puoi usare la stessa chiave KMS per entrambi oppure puoi usare chiavi KMS diverse.
Configura la crittografia a chiave gestita dal cliente
L'impostazione della crittografia a chiave gestita dal cliente per una funzione durevole è un processo in tre fasi. Completa i seguenti passaggi nell'ordine indicato.
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 con crittografia simmetrica nella Guida per gli sviluppatori.AWS Key Management Service
Permissions
Concedi AWS KMS le autorizzazioni 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 per il 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 politica chiave. In una politica chiave, Resource: "*" si riferisce solo alla chiave KMS a cui è allegata la politica, non a tutte le chiavi KMS del tuo account.
La politica chiave di una funzione durevole garantisce a ciascun principale solo le AWS KMS azioni di cui ha bisogno, nell'ambito dell'ARN del servizio e della funzione. 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 istruzione non utilizza alcuna condizione in quanto l'ambito impedirebbe di ruotare, aggiornare o eliminare la chiave.
Consenti a Lambda di utilizzare questo tasto per funzioni durevoli. Concede il servizio
kms:GenerateDataKeyLambda principale e.kms: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 l'avanzamento dell'esecuzione.Consenti all'autore della funzione di descrivere questa chiave. Garantisce che Lambda
kms:DescribeKeypossa convalidare che la chiave sia simmetrica e abilitata durante o.CreateFunctionUpdateFunctionConfigurationConsenti all'autore della funzione di convalidare questa chiave per una funzione specifica. Grants
kms:GenerateDataKeyekms:Decryptquindi Lambda può convalidare le autorizzazioni e l'accesso delle chiavi 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 durevoli. Concede agli operatori
kms:Decryptle chiamate versoGetDurableExecution,GetDurableExecutionHistorywithIncludeExecutionData=true,GetDurableExecutionStateStopDurableExecution, e le API di callback.
È consigliabile utilizzare principi distinti 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:ViaServicelimita l'uso delle chiavi alle richieste inoltrate tramite Lambda. L'applicazione di questa impostazione al ruolo di esecuzione, all'autore della funzione e alle istruzioni dell'operatore impedisce loro di utilizzare la chiave direttamente. AWS KMSaws:SourceArneaws:SourceAccountproteggiti dal problema del vicedirettore confuso tra diversi servizi. 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 del ruolo di esecuzione, dell'autore della funzione e dell'operatore richiamano AWS KMS le credenziali della sessione di accesso diretto del chiamante, che non contengono queste intestazioni.kms:EncryptionContext:aws:lambda:FunctionArndefinisce la chiave per una funzione specifica. Lambda lo aggiunge al contesto di crittografia in ogni AWS KMS chiamata per dati di esecuzione durevoli.
L'esempio seguente combina le istruzioni e le condizioni precedenti.
Esempio Politica chiave per 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 Come modificare una politica chiave nella Guida per gli AWS Key Management Service sviluppatori.
Configura una chiave gestita dal cliente su una funzione durevole
Si configura la chiave gestita dal cliente per dati di esecuzione durevoli attraverso 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 configurata sulla funzione al momento dell'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 all'esito negativo.
Lettura di dati di esecuzione durevoli
Due API di lettura restituiscono dati di esecuzione durevoli:
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 di invoke concatenati e il risultato finale.
Entrambe IncludeExecutionData le API accettano un parametro di richiesta. In caso IncludeExecutionData true affermativo, 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 essere riportata kms:Decrypt sulla chiave gestita dal cliente.
In tal caso IncludeExecutionDatafalse, Lambda non chiama AWS KMS né decrittografa i dati di esecuzione e la risposta viene impostata su. ExecutionDataIncluded false La risposta include ancoraDurableConfig, il che riprende l'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 } }
Richiami concatenati
Quando una funzione durevole utilizza un invoke concatenato per chiamare un'altra funzione duratura, Lambda considera l'esecuzione secondaria come un'esecuzione duratura indipendente: ha il proprio ID di esecuzione, il proprio flusso di checkpoint e la propria chiave gestita dal cliente. La configurazione delle chiavi gestite dal cliente del genitore non ha alcun effetto sui dati del figlio e la configurazione delle chiavi gestite dal cliente del figlio 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 secondaria. Se le funzioni principale e secondaria utilizzano chiavi gestite dal cliente diverse, si concede al servizio l'accesso principale a ciascuna chiave separatamente. Il ruolo di esecuzione della funzione principale non richiede le autorizzazioni sulla chiave gestita dal cliente del figlio.
Identificare quale chiave ha crittografato quale esecuzione
Entrambi GetDurableExecution ListDurableExecutionsByFunction restituiscono l'ARN della chiave gestita dal cliente che ha crittografato ogni esecuzione. Utilizza queste API per confermare quale chiave era attiva quando è iniziata l'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 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 della 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 attive 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 gli Monitoraggio delle chiavi KMS per funzioni durevoli eventi.
Quando la chiave gestita dal cliente non è disponibile
Se la chiave gestita dal cliente con cui è iniziata l'esecuzione è disabilitata, ne è pianificata l'eliminazione o ne è stato revocato l'accesso tramite la politica delle chiavi, l'esecuzione non può compiere ulteriori progressi. Al checkpoint successivo, Lambda fallisce l'esecuzione con un AWS KMS errore irreversibile. 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 durevoli perché la chiave KMS è disabilitata.KMSInvalidStateException: Lambda non è riuscita a decrittografare i dati di esecuzione durevoli perché lo stato della chiave KMS non è valido per.DecryptKMSNotFoundException: Lambda non è riuscita a decrittografare i dati di esecuzione durevoli 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 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 mantenute comporta la distruzione permanente di tali esecuzioni e della loro cronologia.
Monitoraggio delle chiavi KMS per funzioni durevoli
Quando utilizzi una chiave gestita dal cliente con una funzione durevole, puoi utilizzarla AWS CloudTrailper tenere traccia delle AWS KMS chiamate che Lambda effettua per tuo conto. Per indicazioni generali sulla ricerca di AWS KMS 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 duratura
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 effettua tre AWS KMS chiamate per convalidare la chiave: una vera e propria e funzionante a DescribeKey secco. GenerateDataKey Decrypt