Redshift è un servizio completamente gestito che può scalare fino a oltre un petabyte di dimensione, utilizzato come data warehouse per soluzioni big data. Utilizzando cluster Redshift, è possibile eseguire analisi sui tuoi set di dati utilizzando strumenti di query veloci basati su SQL e applicazioni di business intelligence per ottenere una maggiore comprensione della visione per la tua attività.
Redshift offre la crittografia a riposo utilizzando una gerarchia a quattro livelli di chiavi di crittografia utilizzando KMS o CloudHSM per gestire il livello superiore delle chiavi. Quando la crittografia è abilitata per il tuo cluster, non può essere disabilitata e viceversa. Quando hai un cluster non crittografato, non può essere crittografato.
La crittografia per il tuo cluster può avvenire solo durante la sua creazione e, una volta crittografato, i dati, i metadati e gli snapshot sono anche crittografati. I livelli di gerarchia delle chiavi di crittografia sono i seguenti, il livello uno è la chiave principale, il livello due è la chiave di crittografia del cluster, il CEK, il livello tre, la chiave di crittografia del database, il DEK, e infine il livello quattro, le chiavi di crittografia dei dati stessi.
KMS
Durante la creazione del tuo cluster, puoi selezionare la chiave KMS predefinita per Redshift o selezionare la tua CMK, che ti offre maggiore flessibilità sul controllo della chiave, specificamente da un punto di vista verificabile.
La chiave KMS predefinita per Redshift viene creata automaticamente da Redshift la prima volta che viene selezionata e utilizzata l'opzione della chiave ed è completamente gestita da AWS.
Questa chiave KMS viene quindi crittografata con la chiave principale CMK, livello uno. Questa chiave di dati KMS crittografata viene quindi utilizzata come chiave di crittografia del cluster, il CEK, livello due. Questo CEK viene quindi inviato da KMS a Redshift dove viene memorizzato separatamente dal cluster. Redshift invia quindi questo CEK crittografato al cluster su un canale sicuro dove viene memorizzato in memoria.
Redshift quindi richiede a KMS di decrittografare il CEK, livello due. Questo CEK decrittografato viene quindi anch'esso memorizzato in memoria. Redshift quindi crea una chiave di crittografia del database casuale, il DEK, livello tre, e la carica nella memoria del cluster. Il CEK decrittografato in memoria crittografa il DEK, che viene anch'esso memorizzato in memoria.
Questo DEK crittografato viene quindi inviato su un canale sicuro e memorizzato in Redshift separatamente dal cluster. Sia il CEK che il DEK sono ora memorizzati in memoria del cluster sia in forma crittografata che decrittografata. Il DEK decrittografato viene quindi utilizzato per crittografare le chiavi di dati, livello quattro, che vengono generate casualmente da Redshift per ciascun blocco di dati nel database.
Puoi utilizzare AWS Trusted Advisor per monitorare la configurazione dei tuoi bucket Amazon S3 e assicurarti che il logging del bucket sia abilitato, il che può essere utile per eseguire audit di sicurezza e tracciare i modelli di utilizzo in S3.
CloudHSM
Utilizzo di Redshift con CloudHSM
Quando si lavora con CloudHSM per eseguire la crittografia, innanzitutto è necessario configurare una connessione attendibile tra il client HSM e Redshift utilizzando certificati client e server.
Questa connessione è necessaria per fornire comunicazioni sicure, consentendo alle chiavi di crittografia di essere inviate tra il client HSM e i cluster Redshift. Utilizzando una coppia di chiavi privata e pubblica generata casualmente, Redshift crea un certificato client pubblico, che viene crittografato e memorizzato da Redshift. Questo deve essere scaricato e registrato al client HSM e assegnato alla partizione HSM corretta.
È quindi necessario configurare Redshift con i seguenti dettagli del client HSM: l'indirizzo IP HSM, il nome della partizione HSM, la password della partizione HSM e il certificato server HSM pubblico, che viene crittografato da CloudHSM utilizzando una chiave principale interna. Una volta fornite queste informazioni, Redshift confermerà e verificherà che possa connettersi e accedere alla partizione di sviluppo.
Se le politiche di sicurezza interne o i controlli di governance impongono di applicare la rotazione delle chiavi, allora è possibile con Redshift consentendo di ruotare le chiavi di crittografia per i cluster crittografati, tuttavia, è necessario essere consapevoli che durante il processo di rotazione delle chiavi, renderà un cluster non disponibile per un periodo molto breve, quindi è meglio ruotare le chiavi solo quando è necessario, o se si ritiene che possano essere compromesse.
Durante la rotazione, Redshift ruoterà il CEK per il tuo cluster e per qualsiasi backup di quel cluster. Ruoterà un DEK per il cluster ma non è possibile ruotare un DEK per gli snapshot memorizzati in S3 che sono stati crittografati utilizzando il DEK. Metterà il cluster in uno stato di 'rotazione delle chiavi' fino a quando il processo non sarà completato, momento in cui lo stato tornerà a 'disponibile'.
Enumerazione
# Get clustersawsredshiftdescribe-clusters## Get if publicly accessibleawsredshiftdescribe-clusters|jq-r".Clusters[].PubliclyAccessible"## Get DB username to loginawsredshiftdescribe-clusters|jq-r".Clusters[].MasterUsername"## Get endpointawsredshiftdescribe-clusters|jq-r".Clusters[].Endpoint"## Public addresses of the nodesawsredshiftdescribe-clusters|jq-r".Clusters[].ClusterNodes[].PublicIPAddress"## Get IAM roles of the clustersawsredshiftdescribe-clusters|jq-r".Clusters[].IamRoles"# Endpoint access & authorizationawsredshiftdescribe-endpoint-accessawsredshiftdescribe-endpoint-authorization# Get credentialsawsredshiftget-cluster-credentials--db-user<username>--cluster-identifier<cluster-id>## By default, the temporary credentials expire in 900 seconds. You can optionally specify a duration between 900 seconds (15 minutes) and 3600 seconds (60 minutes).
awsredshiftget-cluster-credentials-with-iam--cluster-identifier<cluster-id>## Gives creds to access redshift with the IAM redshift permissions given to the current AWS account## More in https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-access-control-identity-based.html# Authentication profilesawsredshiftdescribe-authentication-profiles# Snapshotsawsredshiftdescribe-cluster-snapshots# Scheduled actionsawsredshiftdescribe-scheduled-actions# Connect# The redshift instance must be publicly available (not by default), the sg need to allow inbounds connections to the port and you need creds
psql-hredshift-cluster-1.sdflju3jdfkfg.us-east-1.redshift.amazonaws.com-Uadmin-ddev-p5439