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 a riposo per Web Functions
AWS Lambda crittografa i dati per le funzioni Web Lambda a riposo sul lato server. Questa pagina spiega le opzioni di crittografia disponibili e come configurare una chiave gestita dal cliente.
Opzioni per la crittografia a riposo
La crittografia a riposo è sempre attiva. Lambda crittografa gli artefatti del codice Web Function e le variabili di ambiente sul lato server e non è possibile disattivare questa crittografia. Per impostazione predefinita, Lambda utilizza un. Chiave di proprietà di AWS Puoi invece configurare una chiave gestita dal cliente.
Hai due opzioni per la AWS KMS chiave che protegge i tuoi dati:
- Chiave di proprietà di AWS (default) (predefinito)
-
Per impostazione predefinita, Lambda crittografa i dati con un. Chiave di proprietà di AWS AWS possiede e gestisce questa chiave. Non è possibile visualizzarne, gestirne o verificarne l'utilizzo. Se questo comportamento predefinito soddisfa le tue esigenze, non è richiesta alcuna configurazione aggiuntiva.
- Chiave gestita dal cliente
-
Facoltativamente, puoi configurare la tua chiave gestita AWS KMS dal cliente. Utilizza una chiave gestita dal cliente quando devi controllare la rotazione delle chiavi, verificarne l'utilizzo CloudTrail, gestire l'accesso alle chiavi tramite una politica chiave o soddisfare i requisiti di conformità organizzativi. Con una chiave gestita dal cliente, solo i responsabili autorizzati possono accedere al codice crittografato e alle variabili di ambiente. Le chiavi gestite dal cliente sono soggette a costi AWS KMS . Per ulteriori informazioni, consulta Prezzi di AWS Key Management Service
.
Crittografia dei dati inattivi utilizzando una chiave gestita dal cliente
Le sezioni seguenti spiegano come Web Functions utilizza una chiave gestita dal cliente, come configurare la chiave e le relative autorizzazioni e come limitarne l'accesso.
In che modo Web Functions utilizza una chiave gestita dal cliente
Quando si specifica una chiave gestita dal cliente, Lambda utilizza la crittografia a busta. Ciò significa che Lambda crittografa i dati della revisione con una chiave dati e la tua chiave KMS crittografa quella chiave dati. Lambda ottiene la chiave dati AWS KMS e la decripta con la tua chiave KMS quando deve leggere i dati. Solo i responsabili con accesso alla chiave KMS possono accedere al codice e alle variabili di ambiente della revisione.
Lambda crittografa le seguenti risorse Web Function con la chiave gestita dal cliente:
| Risorsa | Cosa è crittografato |
|---|---|
| Revisione | L'artefatto di codice creato dal tuo pacchetto di distribuzione Amazon S3 e le variabili di ambiente della revisione. |
Lambda non utilizza le AWS KMS sovvenzioni per le funzioni Web. L'accesso è autorizzato tramite la policy chiave e le autorizzazioni IAM del principale chiamante.
Lambda effettua chiamate AWS KMS durante la creazione e l'avvio di risorse di revisione e può memorizzare nella cache materiale decrittografato in ambienti di esecuzione attiva. La revoca dell'accesso tramite chiave non è un meccanismo immediato di contenimento del traffico perché gli ambienti esistenti possono continuare a utilizzare materiale memorizzato nella cache per un periodo non specificato.
Dopo una modifica fondamentale della policy, verifica il comportamento previsto e monitora la revisione e lo stato degli endpoint. Per il contenimento delle emergenze, smetti di indirizzare il traffico verso le revisioni interessate o disattiva l'endpoint anziché affidarti solo alla revoca delle chiavi.
Lambda imposta il seguente contesto di crittografia su tutte le AWS KMS operazioni per Web Functions:
-
aws:lambda:WebFunctionRevisionArn— L'Amazon Resource Name (ARN) della revisione di Web Function.
Puoi utilizzare questo contesto di crittografia nelle politiche chiave per definire l'accesso a specifiche funzioni o revisioni Web. Per ulteriori informazioni, consulta Definizione dell'accesso alla tua chiave KMS.
Configurazione di una chiave gestita dal cliente
La AWS KMS chiave deve essere una chiave di crittografia simmetrica (specifiche della chiaveSYMMETRIC_DEFAULT, utilizzo della chiave). ENCRYPT_DECRYPT Non è possibile utilizzare chiavi asimmetriche.
Le funzioni Web supportano tasti multiregionali. Il tipo di chiave necessario dipende dalla configurazione dell'endpoint:
-
HomeRegion endpoint: è possibile utilizzare una chiave a regione singola o una chiave multiregionale.
-
MultiRegion o PerRegion endpoint: è necessario utilizzare una chiave multiregionale con repliche in tutte le aree servite dall'endpoint. Regione AWS Se in una regione manca una replica della chiave, la replica in quella regione non riesce.
Per informazioni sulla creazione di chiavi multiregionali, consulta Creazione di chiavi primarie multiregionali nella Guida per gli sviluppatori.AWS Key Management Service
Poiché AWS KMS non copia o sincronizza le politiche chiave tra chiavi multiregionali correlate, è necessario configurare ciascuna politica chiave separatamente. Configura la politica delle chiavi sulla chiave primaria e su ogni chiave di replica. Come minimo, la policy di ogni chiave di replica deve consentire al principale del servizio Lambda di effettuare la chiamata. kms:Decrypt Questa autorizzazione consente a Lambda di decrittografare la chiave dati in quella regione. Per ulteriori informazioni, consulta Autorizzazione dell'uso di chiavi multiregionali nella Guida per gli sviluppatori.AWS Key Management Service
Nota
Quando crei chiavi di replica multiregione, possono essere necessari da alcuni secondi a qualche minuto per diventare disponibili in tutte le regioni. Verifica che la chiave di replica sia disponibile in ogni regione di destinazione prima di creare la revisione o l'endpoint.
Configurazione delle autorizzazioni per l'utilizzo di una chiave gestita dal cliente
Per creare una revisione con una chiave gestita dal cliente, sono necessarie le seguenti autorizzazioni sulla chiave: AWS KMS
-
kms:DescribeKey— Richiesto quando si crea una funzione Web o una revisione con la chiave. -
kms:GenerateDataKey— Lambda richiama questa operazione per generare la chiave dati che crittografa l'artefatto del codice della revisione e le variabili di ambiente. -
kms:Decrypt— Lambda richiama questa operazione per verificare che la chiave sia utilizzabile quando si crea la revisione. I responsabili che leggono una revisione necessitanoGetWebFunctionRevisionanche della chiave per vedernekms:Decryptle variabili di ambiente.
La richiesta di creazione ha esito negativo se la chiave è mancante, disabilitata, non è una chiave di crittografia simmetrica o è inaccessibile con le autorizzazioni richieste.
Nota
Non è necessaria l'autorizzazione. kms:Encrypt Lambda utilizza la crittografia a busta conGenerateDataKey, che restituisce sia una copia in testo semplice che una copia crittografata della chiave dati senza richiedere una chiamata di crittografia separata.
La policy AWS KMS chiave deve inoltre consentire la chiamata al servizio Lambda principal (lambda.amazonaws.com). kms:Decrypt Lambda utilizza questa autorizzazione per decrittografare la chiave dati quando avvia gli ambienti di esecuzione per la revisione. Il responsabile del servizio non ne ha bisogno. kms:DescribeKey Il principale che crea la funzione Web o la revisione necessita di tale autorizzazione.
Esempi di policy delle chiavi
La seguente politica chiave contiene le tre istruzioni richieste da Web Functions, ognuna delle quali riporta le condizioni descritte in. Definizione dell'accesso alla tua chiave KMS La prima istruzione concede al responsabile del servizio Lambda le autorizzazioni necessarie all'avvio degli ambienti di esecuzione. La seconda e la terza concedono al responsabile che crea le revisioni le autorizzazioni necessarie al momento della creazione.
kms:DescribeKeysi trova in un'istruzione separata perché si tratta di un'operazione di metadati che non include alcun contesto di crittografia. Una condizione del contesto di crittografia non corrisponderebbe mai a una DescribeKey richiesta, quindi tale condizione si applica solo all'istruzione che concede kms:GenerateDataKey e. kms:Decrypt
Questo esempio mostra solo le istruzioni richieste da Lambda per le funzioni Web. Aggiungete queste istruzioni alla politica chiave esistente anziché sostituirla e conservate le istruzioni che concedono agli amministratori l'accesso per gestire la chiave.
Esempio Politica chiave per la crittografia delle funzioni Web
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow Lambda to decrypt the data key for Web Function revisions", "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:lambda:WebFunctionRevisionArn": "arn:aws:lambda:us-east-1:111122223333:web-function/my-function/revision/*", "aws:SourceArn": "arn:aws:lambda:us-east-1:111122223333:web-function/my-function/revision/*" } } }, { "Sid": "Allow the revision creator to generate and validate data keys", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyWebFunctionDeployRole" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:lambda:WebFunctionRevisionArn": "arn:aws:lambda:us-east-1:111122223333:web-function/my-function/revision/*" }, "StringEquals": { "kms:ViaService": "lambda.us-east-1.amazonaws.com" } } }, { "Sid": "Allow the revision creator to describe the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyWebFunctionDeployRole" }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "lambda.us-east-1.amazonaws.com" } } } ] }
Per ulteriori informazioni sulle politiche AWS KMS chiave, consulta le politiche chiave AWS KMS nella Guida per gli AWS Key Management Service sviluppatori.
Creazione di una revisione di Web Function con una chiave gestita dal cliente
Per crittografare una revisione con una chiave gestita dal cliente, specificare l'ARN della chiave nel kmsKeyArn parametro della configurazione di revisione. È possibile impostare questo parametro quando si chiama o. CreateWebFunctionCreateWebFunctionRevision Se omettikmsKeyArn, Lambda crittografa la revisione con. Chiave di proprietà di AWS
Per creare una funzione Web con una chiave gestita dal cliente (AWS CLI)
-
Esegui il comando seguente per creare una funzione Web con una chiave gestita dal cliente.
aws lambda-web create-web-function \ --function-namemy-web-app\ --revision-config '{ "kmsKeyArn": "arn:aws:kms:us-east-1:111122223333:key/key-id", "buildConfig": { "codeConfig": { "s3Object": { "bucket": "amzn-s3-demo-bucket", "key": "my-app.zip" } }, "runtimeConfig": { "runtime": "nodejs24.x" } }, "serviceConfig": { "executionRoleArn": "arn:aws:iam::111122223333:role/my-web-function-role" } }' \ --endpoint-config '{ "endpointName": "my-endpoint", "endpointType": "HomeRegion", "authType": "ApplicationManaged" }'
Modifica della configurazione di crittografia di una funzione Web esistente
Il kmsKeyArn parametro è fisso per tutta la durata di una revisione. Poiché le revisioni sono immutabili, non è possibile modificare la chiave che protegge una revisione esistente. Per modificare la configurazione di crittografia, crea una nuova revisione che specifichi la nuova chiave e quindi indirizza il traffico verso quella revisione.
Le funzioni Web supportano le seguenti transizioni chiave:
-
Chiave di proprietà di AWS alla chiave gestita dal cliente: crea una nuova revisione che specifica.
kmsKeyArn -
Da una chiave gestita dal cliente a un'altra chiave gestita dal cliente: crea una nuova revisione che specifichi la nuova chiave ARN.
-
Chiave gestita dal cliente per Chiave di proprietà di AWS: crea una nuova revisione senza.
kmsKeyArnLambda protegge quindi quella revisione con Chiave di proprietà di AWS, che è l'impostazione predefinita.
Lambda non cripta nuovamente le revisioni esistenti quando si crea una nuova revisione con una chiave diversa. Ogni revisione rimane crittografata con la chiave specificata al momento della creazione. Ciò significa che finché una revisione precedente può ancora ricevere traffico, la sua chiave originale deve rimanere abilitata e accessibile al responsabile del servizio Lambda. Prima di disabilitare o eliminare una chiave, verifica che a nessuna revisione crittografata con quella chiave faccia ancora riferimento i pesi di revisione di un endpoint.
Per creare una nuova revisione con una chiave gestita dal cliente diversa (AWS CLI)
-
Esegui il comando seguente per creare una revisione che utilizzi una chiave diversa.
aws lambda-web create-web-function-revision \ --function-namemy-web-app\ --kms-key-arn arn:aws:kms:us-east-1:111122223333:key/new-key-id\ --build-config '{ "codeConfig": { "s3Object": { "bucket": "my-bucket", "key": "my-app-v2.zip" } }, "runtimeConfig": { "runtime": "nodejs24.x" } }' \ --service-config '{ "executionRoleArn": "arn:aws:iam::111122223333:role/my-web-function-role" }' -
Aggiorna i pesi di revisione dell'endpoint per indirizzare il traffico verso la nuova revisione. Per ulteriori informazioni, consulta Modelli di implementazione.
Definizione dell'accesso alla tua chiave KMS
La politica chiave in Esempi di policy delle chiavi limita l'accesso con le seguenti chiavi condizionali. Ognuna limita il modo in cui la chiave può essere utilizzata, in modo che l'accesso alla chiave non sia più ampio di quello richiesto dalla funzione Web.
Contesto di crittografia
Lambda imposta il contesto di crittografia aws:lambda:WebFunctionRevisionArn su ogni AWS KMS richiesta di revisione. Utilizza una StringLike condizione on kms:EncryptionContext:aws:lambda:WebFunctionRevisionArn per limitare la chiave alle revisioni di una funzione Web specifica. Applica questa condizione sia all'istruzione creator che all'istruzione principale del servizio Lambda.
Non applicare questa condizione a un'istruzione che concedekms:DescribeKey. Tale operazione non prevede alcun contesto di crittografia, quindi la condizione la negherebbe.
L'esempio seguente mostra l'istruzione del creatore con la condizione del contesto di crittografia.
{ "Sid": "Allow the revision creator to generate and validate data keys", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyWebFunctionDeployRole" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:lambda:WebFunctionRevisionArn": "arn:aws:lambda:us-east-1:111122223333:web-function/my-function/revision/*" } } }
kms: condizione ViaService
La kms:ViaService condizione limita la chiave in modo che solo le richieste che Lambda effettua per tuo conto possano utilizzarla. Il valore è Region-specific:. lambda.us-east-1.amazonaws.com
Con questa condizione, AWS KMS nega le chiamate dirette effettuate con le stesse credenziali (ad esempio, eseguendo aws kms generate-data-key autonomamente), ma la creazione di una funzione Web ha esito positivo perché Lambda effettua le chiamate per te. AWS KMS
AWS KMS non condivide le politiche chiave tra chiavi multiregionali correlate. Ogni chiave di replica ha una propria politica. Quando si utilizza la kms:ViaService condizione con una chiave multiarea, utilizzare il nome del servizio regionale che corrisponde alla regione di ciascuna chiave (ad esempio, lambda.us-east-1.amazonaws.com nella politica chiave us-east-1 e lambda.us-west-2.amazonaws.com nella politica chiave di replica us-west-2). Puoi anche elencare più valori regionali in un'unica condizione perché StringEquals accetta una matrice di valori.
L'esempio seguente mostra l'istruzione creator con sia la kms:ViaService condizione che la condizione del contesto di crittografia.
{ "Sid": "Allow the revision creator to generate and validate data keys", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/MyWebFunctionDeployRole" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:lambda:WebFunctionRevisionArn": "arn:aws:lambda:us-east-1:111122223333:web-function/my-function/revision/*" }, "StringEquals": { "kms:ViaService": "lambda.us-east-1.amazonaws.com" } } }
Vice protezione confusa
Il problema del vicesceriffo si verifica quando un'entità senza il permesso di compiere un'azione costringe un'entità con più privilegi a compierla. Poiché il responsabile del servizio Lambda può utilizzare la chiave gestita dal cliente, limita l'accesso alle revisioni delle funzioni Web di tua proprietà. Per ulteriori informazioni, consultare Problema del "confused deputy" nella Guida per l'utente di IAM.
Quando Lambda chiama AWS KMS con le proprie credenziali di servizio per avviare un ambiente di esecuzione, invia l'ARN di revisione come ARN di origine e il tuo ID come account di origine. Account AWS Utilizza la chiave aws: SourceArn condition nell'istruzione principale del servizio Lambda per limitare la chiave alle revisioni di una funzione Web specifica.
{ "Sid": "Allow Lambda to decrypt the data key for Web Function revisions", "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "kms:Decrypt", "Resource": "*", "Condition": { "StringLike": { "aws:SourceArn": "arn:aws:lambda:us-east-1:111122223333:web-function/my-function/revision/*" } } }
Per limitare la chiave al tuo account anziché a una funzione Web specifica, usa la chiave aws: SourceAccount condition con il tuo Account AWS ID.
Applica questa condizione all'istruzione principale del servizio Lambda. La kms:ViaService condizione descritta in kms: condizione ViaService limita il servizio che può utilizzare la chiave, ma non fornisce una protezione sostitutiva confusa.
Comportamento degli errori
Lambda convalida la AWS KMS chiave quando crei una revisione. Al momento della creazione possono verificarsi i seguenti errori:
-
Errore di convalida: la chiave ARN non è valida, la chiave non esiste, la chiave è disabilitata o la chiave non è una chiave di crittografia simmetrica.
-
Errore di accesso negato: il principale chiamante o il principale del servizio Lambda non dispone delle AWS KMS autorizzazioni richieste sulla chiave.
Non disattivate o revocate l'accesso alla chiave di una revisione attiva
Se disabiliti la AWS KMS chiave o revochi l'accesso dell'entità del servizio Lambda dopo una revisioneActive, Lambda non può più decrittografare la chiave dati. Ciò impedisce a Lambda di lanciare nuovi ambienti di esecuzione per quella revisione, interrompendo le chiamate. Inoltre, non eliminate le chiavi di replica nelle regioni in cui la revisione è ancora distribuita. Ciò ha lo stesso effetto (Lambda non può avviare nuovi ambienti di esecuzione in quella regione). Per ripristinare il servizio, crea una nuova revisione con una chiave accessibile oppure riattiva la chiave originale e ripristina la politica della chiave.
Crittografia con MultiRegion ed endpoint PerRegion
Per Web Functions con MultiRegion o PerRegion endpoint, Lambda verifica la disponibilità delle chiavi in ogni regione durante la replica. Se la replica della chiave multiarea è mancante o inaccessibile in una regione di destinazione, la replica fallisce solo per quella regione. Le altre regioni continuano a funzionare normalmente.
Puoi visualizzare lo stato di ogni regione e aggiornare lo stato chiamandoGetWebFunctionEndpoint. La voce di ogni regione regionalEndpoints contiene state and stateReason (lo stato di distribuzione della regione) updateStatus e e updateStatusReason (il risultato dell'aggiornamento più recente). Il comportamento varia a seconda che l'endpoint venga creato o aggiornato:
-
Durante la creazione dell'endpoint: la voce relativa alla regione
regionalEndpointsmostra unstatediFailedcon astateReasonche descrive il problema principale. Viene visualizzatostateanche l'endpoint generaleFailed, chestateReasonindirizza l'utente alle voci regionali. -
Durante un aggiornamento dell'endpoint, la regione
updateStatusviene visualizzataFailedcon un messaggioupdateStatusReasonche descrive il problema principale. Viene visualizzatoupdateStatusanche l'endpoint generaleFailed, cheupdateStatusReasonindirizza l'utente alle voci regionali.
Per risolvere una regione non riuscita, crea una replica chiave in quella regione o ripristina l'accesso alla replica esistente, quindi aggiorna l'endpoint per riprovare la replica.
Monitoraggio dell'interazione di Web Functions con AWS KMS
Puoi utilizzarlo CloudTrail per tenere traccia delle AWS KMS richieste che Lambda effettua per tuo conto quando utilizzi una chiave gestita dal cliente con una funzione Web. Per informazioni sulla ricerca di AWS KMS eventi nei CloudTrail log, consulta Searching CloudTrail logs for AWS KMS API call nella Developer Guide.AWS Key Management Service
La tabella seguente elenca gli AWS KMS eventi generati da Web Functions e i valori che è possibile controllare in ogni evento.
| eventName | Quando si verifica | Valori da controllare |
|---|---|---|
DescribeKey |
Quando si crea una funzione Web o una revisione con una chiave gestita dal cliente. | userIdentityè il principale IAM che ha creato la revisione. Questo evento non ha un contesto di crittografia, perché DescribeKey è un'operazione di metadati. |
GenerateDataKey |
Quando si crea una funzione Web o una revisione. Lambda genera la chiave dati che crittografa l'artefatto del codice e le variabili di ambiente della revisione. | userIdentityè il principio IAM che ha creato la revisione. encryptionContextcontieneaws:lambda:WebFunctionRevisionArn. |
Decrypt |
Quando crei una funzione Web o una revisione, Lambda convalida l'accesso tramite chiave. Lambda chiama questa operazione anche quando distribuisce la revisione in una regione di replica, quando avvia un nuovo ambiente di esecuzione e quando un chiamante legge le variabili di ambiente della revisione con. GetWebFunctionRevision |
Per le chiamate in fase di creazione, è il principale IAM che ha creato la revisione. userIdentity Lambda effettua anche una Decrypt chiamata a secco lambda.amazonaws.com per confermare che il responsabile del servizio può utilizzare la chiave. Per le chiamate in fase di esecuzione, userIdentity è il servizio Lambda principal ()lambda.amazonaws.com. PerchéGetWebFunctionRevision, Lambda chiama Decrypt con le credenziali del chiamante. encryptionContextcontiene. aws:lambda:WebFunctionRevisionArn |
DecryptGli eventi GenerateDataKey and includono il contesto di crittografia aws:lambda:WebFunctionRevisionArn con l'ARN di revisione. Utilizzate questo valore per identificare AWS KMS le richieste per una revisione specifica di una funzione Web.