AWS - Redshift Enum

Supporta HackTricks

Amazon Redshift

Redshift è un servizio completamente gestito che può scalare fino a oltre un petabyte di dimensioni, utilizzato come data warehouse per soluzioni di big data. Utilizzando i cluster Redshift, è possibile eseguire analisi sui tuoi dataset utilizzando strumenti di query SQL veloci e applicazioni di business intelligence per ottenere una maggiore comprensione della visione per la tua azienda.

Redshift offre 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 qualsiasi snapshot sono anche crittografati. I livelli di gerarchia delle chiavi di crittografia sono i seguenti, il primo livello è la chiave master, il secondo livello è la chiave di crittografia del cluster, il CEK, il terzo livello, la chiave di crittografia del database, il DEK, e infine il quarto livello, le chiavi di crittografia dei dati stesse.

KMS

Durante la creazione del tuo cluster, puoi selezionare la chiave KMS predefinita per Redshift o selezionare la tua CMK, che ti dà maggiore flessibilità nel controllo della chiave, specificamente da una prospettiva di auditabilità.

La chiave KMS predefinita per Redshift è creata automaticamente da Redshift la prima volta che l'opzione della chiave è selezionata e utilizzata, ed è completamente gestita da AWS.

Questa chiave KMS è quindi crittografata con la chiave master CMK, livello uno. Questa chiave dati KMS crittografata è quindi utilizzata come chiave di crittografia del cluster, il CEK, livello due. Questo CEK è quindi inviato da KMS a Redshift dove è memorizzato separatamente dal cluster. Redshift quindi invia questo CEK crittografato al cluster tramite un canale sicuro dove è memorizzato in memoria.

Redshift quindi richiede a KMS di decrittografare il CEK, livello due. Questo CEK decrittografato è quindi anche 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 quindi crittografa il DEK, che è anche memorizzato in memoria.

Questo DEK crittografato è quindi inviato tramite 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 è quindi utilizzato per crittografare le chiavi dei dati, livello quattro, che sono generate casualmente da Redshift per ogni 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

Utilizzare Redshift con CloudHSM

Quando lavori con CloudHSM per eseguire la tua crittografia, innanzitutto devi impostare una connessione fidata tra il tuo client HSM e Redshift utilizzando certificati client e server.

Questa connessione è necessaria per fornire comunicazioni sicure, permettendo alle chiavi di crittografia di essere inviate tra il tuo client HSM e i tuoi cluster Redshift. Utilizzando una coppia di chiavi privata e pubblica generata casualmente, Redshift crea un certificato client pubblico, che è crittografato e memorizzato da Redshift. Questo deve essere scaricato e registrato sul tuo client HSM, e assegnato alla partizione HSM corretta.

Devi quindi configurare Redshift con i seguenti dettagli del tuo client HSM: l'indirizzo IP dell'HSM, il nome della partizione HSM, la password della partizione HSM, e il certificato server pubblico HSM, che è crittografato da CloudHSM utilizzando una chiave master interna. Una volta che queste informazioni sono state fornite, Redshift confermerà e verificherà che può connettersi e accedere alla partizione di sviluppo.

Se le tue politiche di sicurezza interne o i controlli di governance stabiliscono che devi applicare la rotazione delle chiavi, allora questo è possibile con Redshift permettendoti di ruotare le chiavi di crittografia per i cluster crittografati, tuttavia, devi essere consapevole che durante il processo di rotazione delle chiavi, renderà un cluster non disponibile per un periodo di tempo molto breve, quindi è meglio ruotare le chiavi solo quando necessario, o se ritieni che possano essere state 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 quando lo stato tornerà a 'disponibile'.

Enumeration

# Get clusters
aws redshift describe-clusters
## Get if publicly accessible
aws redshift describe-clusters | jq -r ".Clusters[].PubliclyAccessible"
## Get DB username to login
aws redshift describe-clusters | jq -r ".Clusters[].MasterUsername"
## Get endpoint
aws redshift describe-clusters | jq -r ".Clusters[].Endpoint"
## Public addresses of the nodes
aws redshift describe-clusters | jq -r ".Clusters[].ClusterNodes[].PublicIPAddress"
## Get IAM roles of the clusters
aws redshift describe-clusters | jq -r ".Clusters[].IamRoles"

# Endpoint access & authorization
aws redshift describe-endpoint-access
aws redshift describe-endpoint-authorization

# Get credentials
aws redshift get-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).
aws redshift get-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 profiles
aws redshift describe-authentication-profiles

# Snapshots
aws redshift describe-cluster-snapshots

# Scheduled actions
aws redshift describe-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 -h redshift-cluster-1.sdflju3jdfkfg.us-east-1.redshift.amazonaws.com -U admin -d dev -p 5439

Privesc

AWS - Redshift Privesc

Persistence

Le seguenti azioni consentono di concedere l'accesso ad altri account AWS al cluster:

Supporta HackTricks

Last updated