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 dei dati a riposo in Step Functions
Leggi il blog
Scopri di più sulle chiavi gestite dai clienti in Rafforzare la sicurezza dei dati con una chiave gestita dal cliente AWS KMS
AWS Step Functions crittografa sempre i dati inattivi utilizzando una crittografia trasparente lato server. La crittografia dei dati inattivi per impostazione predefinita riduce il sovraccarico operativo e la complessità associati alla protezione dei dati sensibili. È possibile creare applicazioni sensibili alla sicurezza che soddisfino i rigorosi requisiti normativi e di conformità alla crittografia.
Sebbene non sia possibile disabilitare questo livello di crittografia o selezionare un tipo di crittografia alternativo, è possibile aggiungere un secondo livello di crittografia rispetto alle chiavi di crittografia di AWS proprietà esistenti scegliendo una chiave gestita dal cliente quando si creano la macchina a stati e le risorse per le attività:
-
Chiavi gestite dal cliente: Step Functions supporta l'uso di una chiave simmetrica gestita dal cliente che è possibile creare, possedere e gestire per aggiungere un secondo livello di crittografia rispetto alla crittografia di AWS proprietà esistente. Avendo il pieno controllo di questo livello di crittografia, è possibile eseguire operazioni quali:
-
Stabilire e mantenere le policy delle chiavi
-
Stabilire e mantenere IAM politiche e sovvenzioni
-
Abilitare e disabilitare le policy delle chiavi
-
Ruotare i materiali crittografici delle chiavi
-
Aggiungere tag
-
Creare alias delle chiavi
-
Pianificare l’eliminazione delle chiavi
Per informazioni, consulta la chiave gestita dal cliente nella Guida per gli AWS Key Management Service sviluppatori.
-
È possibile crittografare i dati utilizzando una chiave gestita dal cliente per macchine e attività a AWS Step Functions stati. È possibile configurare una AWS KMS chiave simmetrica e un periodo di riutilizzo delle chiavi dati durante la creazione o l'aggiornamento di una State Machine e durante la creazione di un'attività. La cronologia di esecuzione e la definizione della macchina a stati verranno crittografate con la chiave applicata alla State Machine. Gli input delle attività verranno crittografati con la chiave applicata all'attività.
Con AWS KMS le chiavi gestite dai clienti, puoi proteggere i dati dei clienti, che includono informazioni sanitarie protette (PHI), da accessi non autorizzati. Step Functions è integrato con CloudTrail, quindi puoi visualizzare e controllare gli eventi più recenti nella CloudTrail console nella cronologia degli eventi.
Per informazioni su AWS KMS, vedi Cos'è AWS Key Management Service?
Nota
Step Functions abilita automaticamente la crittografia a riposo utilizzando chiavi AWS di proprietà senza alcun costo. Tuttavia, quando si utilizza una chiave gestita dal cliente, vengono applicati dei AWS KMS costi. Per informazioni sui prezzi, consultare Prezzi di AWS Key Management Service
Crittografia con una chiave gestita dal cliente
Step Functions decrittografa i dati del payload con la AWS KMS chiave gestita dal cliente prima di passarli a un altro servizio per eseguire un'operazione. I dati vengono crittografati in transito utilizzando Transport Layer Security (). TLS
Quando i dati vengono restituiti da un servizio integrato, Step Functions li crittografa con la AWS KMS chiave gestita dal cliente. È possibile utilizzare la stessa chiave per applicare la crittografia in modo coerente su più AWS servizi.
È possibile utilizzare una chiave gestita dal cliente con le seguenti risorse:
-
State Machine: tipi di flusso di lavoro Standard ed Express
-
Attività
È possibile specificare la chiave dati inserendo un ID KMS chiave, che Step Functions utilizza per crittografare i dati.
-
KMSID chiave: identificatore di chiave per una chiave gestita dal AWS KMS cliente sotto forma di ID chiave, chiaveARN, nome alias o alias. ARN
Crea una State Machine con una chiave gestita dal cliente
Prerequisito: prima di poter creare una macchina a stati con AWS KMS chiavi gestite dal cliente, l'utente o il ruolo devono disporre AWS KMS delle autorizzazioni per DescribeKey
e. GenerateDataKey
È possibile eseguire i seguenti passaggi nella AWS console, tramite o effettuando il API provisioning dell'infrastruttura tramite risorse. AWS CloudFormation (CloudFormation gli esempi sono presentati più avanti in questa guida).
Fase 1: Creare una AWS KMS chiave
Puoi creare una chiave simmetrica gestita dal cliente con la AWS KMS console o. AWS KMS APIs
Per creare una chiave simmetrica gestita dal cliente
Segui la procedura riportata in Creazione di una chiave simmetrica gestita dal cliente nella Guida per gli sviluppatori di AWS Key Management Service .
Nota
Facoltativo: quando crei una chiave, puoi scegliere Amministratori chiave. Agli utenti o ai ruoli selezionati verrà concesso l'accesso alla gestione della chiave, ad esempio abilitando o disabilitando la chiave tramite. API Puoi anche scegliere Utenti chiave. A questi utenti o ruoli verrà concessa la possibilità di utilizzare la AWS KMS chiave nelle operazioni crittografiche.
Fase 2: Impostare AWS KMS la politica chiave
Le policy della chiave controllano l'accesso alla chiave gestita dal cliente. Ogni chiave gestita dal cliente deve avere esattamente una policy della chiave, che contiene istruzioni che determinano chi può usare la chiave e come la possono usare. Quando crei la chiave gestita dal cliente, puoi specificare una policy della chiave. Per informazioni, consulta Gestire l'accesso alle chiavi gestite dal cliente nella Guida per gli AWS Key Management Service sviluppatori.
Di seguito è riportato un esempio di policy AWS KMS chiave da console, senza amministratori chiave o utenti chiave:
{ "Version": "2012-10-17", "Id": "key-consolepolicy-1", "Statement": [ { "Sid": "Enable IAM User Permissions for the key", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:root" }, "Action": "kms:*", "Resource": "*" } ] }
Consulta la Guida per gli AWS Key Management Service sviluppatori per informazioni sulla specificazione delle autorizzazioni in una policy e sulla risoluzione dei problemi di accesso tramite chiave.
Passaggio 3: (Facoltativo) Aggiungi una politica chiave per crittografare i log CloudWatch
Step Functions è integrato CloudWatch per la registrazione e il monitoraggio. Hai la possibilità di crittografare i dati inviati ai CloudWatch registri. Per utilizzare la registrazione crittografata, è necessario fornire l'accesso al servizio di consegna dei log nella macchina a stati. La politica chiave per le azioni. AWS KMS È possibile crittografare i gruppi di log utilizzando la chiave della macchina di stato oppure è possibile scegliere un'altra chiave specifica per il gruppo di log (ad esempio, «Log Group Key»).
Per abilitare l'integrazione dei CloudWatch log crittografati per una macchina a stati, è necessario aggiungere quanto segue alla politica delle AWS KMS chiavi:
{ "Id": "key-consolepolicy-logging", "Version": "2012-10-17", "Statement": [ { "Sid": "Enable log service for a single log group", "Effect": "Allow", "Principal": { "Service": "logs.
region
.amazonaws.com" }, "Action": [ "kms:Encrypt*", "kms:Decrypt*", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:Describe*" ], "Resource": "*", "Condition": { "ArnEquals": { "kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:region
:account-id
:log-group:log-group-name
" } } } ] }
Nota
La Condition
sezione limita la AWS KMS chiave a un singolo gruppo ARN di log.
È inoltre necessario abilitare l'erogazione del servizio di registro per le integrazioni con la seguente politica chiave:
{ "Sid": "Enable log service delivery for integrations", "Effect": "Allow", "Principal": { "Service": "delivery.logs.amazonaws.com" }, "Action": "kms:Decrypt*", "Resource": "*" }
Nota
Consulta la documentazione sui CloudWatch log per ulteriori informazioni sull'impostazione delle autorizzazioni sulla AWS KMS chiave per il tuo gruppo di log.
Fase 4: Creare una macchina a stati
Dopo aver creato una chiave e impostato la politica, è possibile utilizzare la chiave per creare una nuova macchina a stati.
Quando crei la macchina a stati, scegli Configurazione aggiuntiva, quindi scegli di crittografare con una chiave gestita dal cliente. È quindi possibile selezionare la chiave e impostare il periodo di riutilizzo della chiave dati da 1 minuto a 15 minuti.
Facoltativamente, puoi abilitare la registrazione impostando un livello di registro e scegliendo di crittografare il gruppo di log con la tua chiave. AWS KMS
Nota
È possibile abilitare la crittografia solo su un nuovo gruppo di log nella console Step Functions. Per informazioni su come associare una AWS KMS chiave a un gruppo di log esistente, consulta Associare una AWS KMS chiave a un gruppo di log.
Passaggio 5: richiama la macchina a stati crittografata con la tua chiave AWS KMS
Puoi richiamare la tua macchina a stati crittografata come faresti normalmente e i tuoi dati verranno crittografati con la tua chiave gestita dal cliente.
Per avviare un'esecuzione per i flussi di lavoro Standard e i flussi di lavoro Asynchronous Express con chiavi gestite dal cliente, il ruolo di esecuzione richiede e autorizzazioni. kms:Decrypt
kms:GenerateDataKey
Il ruolo di esecuzione per l'esecuzione di Synchronous Express richiede. kms:Decrypt
Quando crei una macchina a stati nella console e scegli di creare un nuovo ruolo, queste autorizzazioni vengono incluse automaticamente.
Crea un'attività con una chiave gestita dal cliente
La creazione di un'attività Step Functions con una chiave gestita dal cliente è simile alla creazione di una macchina a stati con una chiave gestita dal cliente. Prima di poter creare un'attività con AWS KMS chiavi gestite dal cliente, all'utente o al ruolo servono solo le AWS KMS autorizzazioni per DescribeKey
farlo. Durante la creazione dell'attività, scegli la chiave e imposti i parametri di configurazione della crittografia.
Tieni presente che le risorse Step Functions Activity rimangono immutabili. Non è possibile aggiornare la risorsa encryptionConfiguration
relativa a un'attività ARN esistente; è necessario creare una nuova risorsa Activity. I chiamanti agli API endpoint Activity devono disporre kms:DescribeKey
delle autorizzazioni per creare correttamente un'attività con una chiave. AWS KMS
Quando la crittografia a chiave gestita dal cliente è abilitata su un Activity Task, il ruolo di esecuzione della macchina a stati kms:GenerateDataKey
richiederà l'kms:Decrypt
autorizzazione per la chiave di attività. Se stai creando questa macchina a stati dalla console Step Functions, la funzione di creazione automatica dei ruoli aggiungerà queste autorizzazioni.
Definisci le politiche di AWS KMS autorizzazione con le condizioni
È possibile utilizzare il contesto di crittografia nelle politiche e IAM nelle politiche chiave conditions
per controllare l'accesso alla chiave simmetrica gestita dal cliente. Per limitare l'uso di una AWS KMS chiave alle richieste di Step Functions per conto di un ruolo specifico, puoi utilizzare la kms:ViaService
condizione.
Ambito con contesto di crittografia
Un contesto di crittografia è un set facoltativo di coppie chiave-valore che contengono ulteriori informazioni contestuali sui dati.
AWS KMS utilizza il contesto di crittografia come dati autenticati aggiuntivi per supportare la crittografia autenticata. Quando includi un contesto di crittografia in una richiesta di crittografia dei dati, AWS KMS associa il contesto di crittografia ai dati crittografati. Per decrittografare i dati, nella richiesta deve essere incluso lo stesso contesto di crittografia.
Step Functions fornisce un contesto di AWS KMS crittografia nelle operazioni crittografiche, in cui la chiave è aws:states:stateMachineArn
per le macchine a stato o aws:states:activityArn
per le attività e il valore è la risorsa Amazon Resource Name (ARN).
"encryptionContext": {"aws:states:stateMachineArn": "arn:aws:states:region
:123456789012:stateMachine:state_machine_name
"}
"encryptionContext": {"aws:states:activityArn": "arn:aws:states:region
:123456789012:activity:activity_name
"}
L'esempio seguente mostra come limitare l'uso di una AWS KMS chiave per i ruoli di esecuzione a macchine a stati specifiche con kms:EncryptionContext
e la chiave di aws:states:stateMachineArn
contesto:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow KMS Permissions for StepFunctionsWorkflowExecutions", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:aa-example-1:1234567890:key/a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa" ], "Condition": { "StringEquals": { "kms:EncryptionContext:aws:states:stateMachineArn": "arn:aws:states:aa-example-1:1234567890:stateMachine:MyStateMachine" } } } ] }
Ambito con kms: ViaService
La chiave kms:ViaService
condizionale limita l'uso di una AWS Key Management Service chiave alle richieste provenienti da servizi specifici AWS .
La seguente politica di esempio utilizza la kms:ViaService
condizione per consentire l'utilizzo della AWS KMS chiave per azioni specifiche solo quando la richiesta proviene da Step Functions nella ca-central-1
regione, che agisce per conto di: ExampleRole
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Allow access for Key Administrators in a region", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::1234567890:role/ExampleRole" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "states.ca-central-1.amazonaws.com" } } } ] }
Nota
La kms:ViaService
condizione è applicabile solo quando AWS KMS le autorizzazioni sono richieste dal API chiamante (ad esempio, CreateStateMachine
CreateActivity
GetActivityTask
, ecc.). L'aggiunta di una kms:ViaService
condizione a un ruolo di esecuzione può impedire l'avvio di una nuova esecuzione o causare il fallimento di un'esecuzione in esecuzione.
Autorizzazioni richieste per i chiamanti API
Per richiamare le azioni di Step API Functions che restituiscono dati crittografati, i chiamanti necessitano di AWS KMS
autorizzazioni. In alternativa, alcune API azioni hanno un'opzione (METADATA_ONLY
) per restituire solo i metadati, eliminando la necessità di autorizzazioni. AWS KMS Per informazioni, fare riferimento a Step FunctionsAPI.
Affinché un'esecuzione venga completata correttamente quando si utilizza la crittografia a chiave gestita dal cliente, è necessario concedere il ruolo di esecuzione kms:GenerateDataKey
e utilizzare kms:Decrypt
le autorizzazioni per AWS KMS le chiavi dalla macchina a stati.
La tabella seguente mostra le AWS KMS autorizzazioni necessarie per fornire ai API chiamanti Step Functions State Machine. È possibile fornire le autorizzazioni nella politica o IAM nella politica chiave per il ruolo.
APIsutilizzando la chiave di State Machine AWS KMS | Richiesto dal chiamante |
CreateStateMachine | km:DescribeKey, km: GenerateDataKey |
UpdateStateMachine | km:, km: DescribeKey GenerateDataKey |
DescribeStateMachine | kms:Decrypt |
DescribeStateMachineForExecution | kms:Decrypt |
StartExecution | -- |
StartSyncExecution | kms:Decrypt |
SendTaskSuccess | -- |
SendTaskFailure | -- |
StopExecution | -- |
RedriveExecution | -- |
DescribeExecution | kms:Decrypt |
GetExecutionHistory | kms:Decrypt |
La tabella seguente mostra le AWS KMS autorizzazioni necessarie per fornire ai API chiamanti Step Functions Activity. È possibile fornire le autorizzazioni nella politica o IAM nella politica chiave per il ruolo.
APIsutilizzando la chiave di Activity AWS KMS | Richiesto dal chiamante |
CreateActivity | km: DescribeKey |
GetActivityTask | kms:Decrypt |
Quando concedo le autorizzazioni al chiamante o al ruolo di esecuzione?
Quando un IAM ruolo o un utente chiama Step FunctionsAPI, il servizio Step Functions chiama per AWS KMS conto del API chiamante. In questo caso, è necessario concedere AWS KMS l'autorizzazione al API chiamante. Quando un ruolo di esecuzione chiama AWS KMS direttamente, è necessario concedere AWS KMS le autorizzazioni per il ruolo di esecuzione.
AWS CloudFormation risorse per la configurazione della crittografia
AWS CloudFormation i tipi di risorse per Step Functions possono fornire a macchine a stati e risorse di attività configurazioni di crittografia.
Per impostazione predefinita, Step Functions fornisce una crittografia trasparente lato server. Entrambi AWS::StepFunctions::Activity
AWS::StepFunctions::StateMachine
accettano una EncryptionConfiguration
proprietà opzionale che consente di configurare una AWS KMS chiave gestita dal cliente per la crittografia lato server.
Prerequisito: prima di poter creare una macchina a stati con AWS KMS chiavi gestite dal cliente, l'utente o il ruolo devono disporre delle AWS KMS autorizzazioni per e. DescribeKey
GenerateDataKey
Gli aggiornamenti a non StateMachine richiedono interruzioni. Gli aggiornamenti alle risorse Activity richiedono: Sostituzione.
Per dichiarare una EncryptionConfiguration
proprietà nel AWS CloudFormation modello, utilizzate la seguente sintassi:
JSON
{ "KmsKeyId" : String, "KmsDataKeyReusePeriodSeconds" : Integer, "Type" : String }
YAML
KmsKeyId: String KmsDataKeyReusePeriodSeconds: Integer Type: String
Proprietà
-
Tipo: opzione di crittografia per la macchina a stati o l'attività. Valori consentiti:
CUSTOMER_MANAGED_KMS_KEY
|AWS_OWNED_KEY
-
KmsKeyId- Alias, aliasARN, ID chiave o chiave ARN della chiave di crittografia simmetrica che crittografa la AWS KMS chiave dati. Per specificare una AWS KMS chiave in un AWS account diverso, il cliente deve utilizzare la chiave o l'alias. ARN ARN Per informazioni in merito kmsKeyId, consulta KeyIdnei AWS KMS documenti.
-
KmsDataKeyReusePeriodSeconds- Durata massima per la quale SFN verranno riutilizzate le chiavi dati. Alla scadenza del periodo, Step Functions
GenerateDataKey
chiamerà. Questa impostazione può essere impostata solo quando Type èCUSTOMER_MANAGED_KMS_KEY
. Il valore può variare da 60 a 900 secondi. Il valore predefinito è 300 secondi.
AWS CloudFormation esempi
Esempio: StateMachine con chiave gestita dal cliente
AWSTemplateFormatVersion: '2010-09-09' Description: An example template for a Step Functions State Machine. Resources: MyStateMachine: Type: AWS::StepFunctions::StateMachine Properties: StateMachineName: HelloWorld-StateMachine Definition: StartAt: PassState States: PassState: Type: Pass End: true RoleArn: !Sub "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/example" EncryptionConfiguration: KmsKeyId: !Ref MyKmsKey KmsDataKeyReusePeriodSeconds: 100 Type: CUSTOMER_MANAGED_KMS_KEY MyKmsKey: Type: AWS::KMS::Key Properties: Description: Symmetric KMS key used for encryption/decryption
Esempio: attività con chiave gestita dal cliente
AWSTemplateFormatVersion: '2010-09-09' Description: An example template for a Step Functions Activity. Resources: Activity: Type: AWS::StepFunctions::Activity Properties: Name: ActivityWithKmsEncryption EncryptionConfiguration: KmsKeyId: !Ref MyKmsKey KmsDataKeyReusePeriodSeconds: 100 Type: CUSTOMER_MANAGED_KMS_KEY MyKmsKey: Type: AWS::KMS::Key Properties: Description: Symmetric KMS key used for encryption/decryption
L'aggiornamento della crittografia per un'attività richiede la creazione di una nuova risorsa
La configurazione delle attività è immutabile e i nomi delle risorse devono essere univoci. Per impostare le chiavi gestite dal cliente per la crittografia, devi creare una nuova attività. Se tenti di modificare la configurazione nel CFN modello per un'attività esistente, riceverai un'ActivityAlreadyExists
eccezione.
Per aggiornare la tua attività in modo da includere le chiavi gestite dai clienti, imposta un nuovo nome di attività all'interno del CFN modello. Di seguito viene illustrato un esempio di creazione di una nuova attività con una configurazione a chiave gestita dal cliente:
Definizione dell'attività esistente
AWSTemplateFormatVersion: '2010-09-09'
Description: An example template for a new Step Functions Activity.
Resources:
Activity:
Type: AWS::StepFunctions::Activity
Properties:
Name: ActivityName
EncryptionConfiguration:
Type: AWS_OWNED_KEY
Nuova definizione di attività
AWSTemplateFormatVersion: '2010-09-09' Description: An example template for a Step Functions Activity. Resources: Activity: Type: AWS::StepFunctions::Activity Properties: Name: ActivityWithKmsEncryption EncryptionConfiguration: KmsKeyId: !Ref MyKmsKey KmsDataKeyReusePeriodSeconds: 100 Type: CUSTOMER_MANAGED_KMS_KEY MyKmsKey: Type: AWS::KMS::Key Properties: Description: Symmetric KMS key used for encryption/decryption
Monitoraggio dell'utilizzo delle chiavi di crittografia
Quando utilizzi una chiave gestita AWS KMS dal cliente per crittografare le tue risorse Step Functions, puoi utilizzarla CloudTrail per tenere traccia delle richieste a cui Step Functions invia. AWS KMS
È inoltre possibile utilizzare il contesto di crittografia nei record e nei log di audit per identificare come viene utilizzata la chiave gestita dal cliente. Il contesto di crittografia appare anche nei log generati da. AWS CloudTrail
Gli esempi seguenti sono CloudTrail eventi per Decrypt
e per GenerateDataKey
monitorare AWS KMS le operazioni chiamate da Step Functions per accedere ai dati crittografati dalla chiave gestita dal cliente: DescribeKey
FAQs
Cosa succede se la mia chiave viene contrassegnata per l'eliminazione o eliminata AWS KMS?
Se la chiave viene eliminata o contrassegnata per l'eliminazione in AWS KMS, tutte le relative esecuzioni in esecuzione avranno esito negativo. Le nuove esecuzioni non possono essere avviate finché non si rimuove o si modifica la chiave associata al flusso di lavoro. Dopo l'eliminazione di una AWS KMS chiave, tutti i dati crittografati associati all'esecuzione del flusso di lavoro rimarranno crittografati e non potranno più essere decrittografati, rendendo i dati irrecuperabili.
Cosa succede se una chiave è disattivata AWS KMS ? AWS KMS
Se una AWS KMS chiave è disabilitata in AWS KMS, tutte le relative esecuzioni in esecuzione falliranno. Non è possibile avviare nuove esecuzioni. Non è più possibile decrittografare i dati crittografati con quella AWS KMS chiave disattivata finché non viene riattivata.
Cosa succede agli eventi di modifica dello stato di esecuzione inviati a? EventBridge
L'input, l'output, l'errore e la causa di esecuzione non verranno inclusi per gli eventi di modifica dello stato di esecuzione per i flussi di lavoro crittografati utilizzando la AWS KMS chiave gestita dal cliente.
Ulteriori informazioni
Per informazioni sulla crittografia dei dati inattivi, consulta AWS Key Management Service i concetti e le migliori pratiche di sicurezza AWS Key Management Service nella Guida per gli AWS Key Management Service sviluppatori.