AWS - Redshift Enum

Apoya a HackTricks

Amazon Redshift

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

Redshift ofrece cifrado en reposo utilizando una jerarquía de cuatro niveles de claves de cifrado usando KMS o CloudHSM para gestionar el nivel superior de claves. Cuando el cifrado está habilitado para tu clúster, no se puede deshabilitar y viceversa. Cuando tienes un clúster no cifrado, 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. El nivel de jerarquía de las claves de cifrado es el siguiente, 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 propias claves de cifrado de datos.

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 usa la opción de clave, y es completamente gestionada por AWS.

Esta clave KMS es entonces cifrada con la clave maestra CMK, nivel uno. Esta clave de datos KMS cifrada se usa entonces como la clave de cifrado del clúster, la CEK, nivel dos. Esta CEK es entonces enviada por KMS 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 se almacena también 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 luego 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 usa 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 cual puede ser útil para realizar auditorías de seguridad y rastrear patrones de uso en S3.

CloudHSM

Usando Redshift con CloudHSM

Cuando trabajas 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 de servidor público HSM, 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 la 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 muy corto de tiempo, 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á el clúster en un estado de 'rotación de claves' hasta que el proceso se complete cuando el estado volverá a 'disponible'.

Enumeración

# 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:

Apoya HackTricks

Last updated