AWS - Redshift Enum

Support HackTricks

Amazon Redshift

Redshift es un servicio completamente gestionado que puede escalar hasta más de un petabyte en tamaño, que se utiliza como un almacenamiento de datos para soluciones de big data. Usando clústeres de Redshift, puedes ejecutar análisis sobre tus conjuntos de datos utilizando herramientas de consulta rápidas basadas en SQL y aplicaciones de inteligencia empresarial para obtener una mayor comprensión de la visión de tu negocio.

Redshift ofrece cifrado en reposo utilizando una jerarquía de cuatro niveles de claves de cifrado utilizando KMS o CloudHSM para gestionar el nivel superior de claves. Cuando el cifrado está habilitado para tu clúster, no se puede desactivar y viceversa. Cuando tienes un clúster sin cifrar, no se puede cifrar.

El cifrado para tu clúster solo puede ocurrir durante su creación, y una vez cifrado, los datos, metadatos y cualquier instantánea también están cifrados. Los niveles de jerarquía de las claves de cifrado son los siguientes: el nivel uno es la clave maestra, el nivel dos es la clave de cifrado del clúster, la CEK, el nivel tres, la clave de cifrado de la base de datos, la DEK, y finalmente el nivel cuatro, las claves de cifrado de datos en sí.

KMS

Durante la creación de tu clúster, puedes seleccionar la clave KMS predeterminada para Redshift o seleccionar tu propia CMK, lo que te da más flexibilidad sobre el control de la clave, específicamente desde una perspectiva auditable.

La clave KMS predeterminada para Redshift es creada automáticamente por Redshift la primera vez que se selecciona y utiliza la opción de clave, y es completamente gestionada por AWS.

Esta clave KMS se cifra luego con la clave maestra CMK, nivel uno. Esta clave de datos KMS cifrada se utiliza como la clave de cifrado del clúster, la CEK, nivel dos. Esta CEK se envía a Redshift donde se almacena por separado del clúster. Redshift luego envía esta CEK cifrada al clúster a través de un canal seguro donde se almacena en memoria.

Redshift luego solicita a KMS que descifre la CEK, nivel dos. Esta CEK descifrada también se almacena en memoria. Redshift luego crea una clave de cifrado de base de datos aleatoria, la DEK, nivel tres, y la carga en la memoria del clúster. La CEK descifrada en memoria luego cifra la DEK, que también se almacena en memoria.

Esta DEK cifrada se envía a través de un canal seguro y se almacena en Redshift por separado del clúster. Tanto la CEK como la DEK ahora se almacenan en la memoria del clúster tanto en forma cifrada como descifrada. La DEK descifrada se utiliza luego para cifrar las claves de datos, nivel cuatro, que son generadas aleatoriamente por Redshift para cada bloque de datos en la base de datos.

Puedes usar AWS Trusted Advisor para monitorear la configuración de tus buckets de Amazon S3 y asegurarte de que el registro de buckets esté habilitado, lo que puede ser útil para realizar auditorías de seguridad y rastrear patrones de uso en S3.

CloudHSM

Using Redshift with CloudHSM

Al trabajar con CloudHSM para realizar tu cifrado, primero debes establecer una conexión de confianza entre tu cliente HSM y Redshift mientras usas certificados de cliente y servidor.

Esta conexión es necesaria para proporcionar comunicaciones seguras, permitiendo que las claves de cifrado se envíen entre tu cliente HSM y tus clústeres de Redshift. Usando un par de claves privadas y públicas generadas aleatoriamente, Redshift crea un certificado de cliente público, que es cifrado y almacenado por Redshift. Este debe ser descargado y registrado en tu cliente HSM, y asignado a la partición HSM correcta.

Luego debes configurar Redshift con los siguientes detalles de tu cliente HSM: la dirección IP del HSM, el nombre de la partición HSM, la contraseña de la partición HSM y el certificado del servidor HSM público, que es cifrado por CloudHSM usando una clave maestra interna. Una vez que se ha proporcionado esta información, Redshift confirmará y verificará que puede conectarse y acceder a la partición de desarrollo.

Si tus políticas de seguridad internas o controles de gobernanza dictan que debes aplicar rotación de claves, entonces esto es posible con Redshift, permitiéndote rotar claves de cifrado para clústeres cifrados, sin embargo, debes ser consciente de que durante el proceso de rotación de claves, hará que un clúster no esté disponible por un período de tiempo muy corto, por lo que es mejor rotar claves solo cuando sea necesario, o si sientes que pueden haber sido comprometidas.

Durante la rotación, Redshift rotará la CEK para tu clúster y para cualquier respaldo de ese clúster. Rotará una DEK para el clúster, pero no es posible rotar una DEK para las instantáneas almacenadas en S3 que han sido cifradas usando la DEK. Pondrá al clúster en un estado de 'rotación de claves' hasta que el proceso se complete, momento en el cual el estado volverá a 'disponible'.

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

Persistencia

Las siguientes acciones permiten otorgar acceso a otras cuentas de AWS al clúster:

Support HackTricks

Last updated