AWS - Redshift Enum

Supporte HackTricks

Amazon Redshift

Redshift é um serviço totalmente gerenciado que pode escalar até mais de um petabyte em tamanho, usado como um data warehouse para soluções de big data. Usando clusters Redshift, você pode executar análises em seus conjuntos de dados usando ferramentas de consulta rápidas baseadas em SQL e aplicativos de inteligência de negócios para obter uma maior compreensão da visão para o seu negócio.

Redshift oferece criptografia em repouso usando uma hierarquia de quatro níveis de chaves de criptografia usando KMS ou CloudHSM para gerenciar o nível superior de chaves. Quando a criptografia é habilitada para o seu cluster, ela não pode ser desativada e vice-versa. Quando você tem um cluster não criptografado, ele não pode ser criptografado.

A criptografia para o seu cluster só pode ocorrer durante a sua criação e, uma vez criptografado, os dados, metadados e quaisquer snapshots também são criptografados. O nível de hierarquia das chaves de criptografia é o seguinte: o primeiro nível é a chave mestre, o segundo nível é a chave de criptografia do cluster, a CEK, o terceiro nível, a chave de criptografia do banco de dados, a DEK, e finalmente o quarto nível, as próprias chaves de criptografia de dados.

KMS

Durante a criação do seu cluster, você pode selecionar a chave KMS padrão para Redshift ou selecionar sua própria CMK, o que lhe dá mais flexibilidade sobre o controle da chave, especificamente de uma perspectiva auditável.

A chave KMS padrão para Redshift é criada automaticamente pelo Redshift na primeira vez que a opção de chave é selecionada e usada, e é totalmente gerenciada pela AWS.

Esta chave KMS é então criptografada com a chave mestre CMK, nível um. Esta chave de dados KMS criptografada é então usada como a chave de criptografia do cluster, a CEK, nível dois. Esta CEK é então enviada pelo KMS para o Redshift, onde é armazenada separadamente do cluster. O Redshift então envia esta CEK criptografada para o cluster através de um canal seguro, onde é armazenada na memória.

O Redshift então solicita ao KMS para descriptografar a CEK, nível dois. Esta CEK descriptografada é então também armazenada na memória. O Redshift então cria uma chave de criptografia de banco de dados aleatória, a DEK, nível três, e a carrega na memória do cluster. A CEK descriptografada na memória então criptografa a DEK, que também é armazenada na memória.

Esta DEK criptografada é então enviada através de um canal seguro e armazenada no Redshift separadamente do cluster. Tanto a CEK quanto a DEK agora estão armazenadas na memória do cluster, tanto em forma criptografada quanto descriptografada. A DEK descriptografada é então usada para criptografar chaves de dados, nível quatro, que são geradas aleatoriamente pelo Redshift para cada bloco de dados no banco de dados.

Você pode usar o AWS Trusted Advisor para monitorar a configuração dos seus buckets Amazon S3 e garantir que o registro de logs do bucket esteja habilitado, o que pode ser útil para realizar auditorias de segurança e rastrear padrões de uso no S3.

CloudHSM

Usando Redshift com CloudHSM

Ao trabalhar com CloudHSM para realizar sua criptografia, primeiramente você deve configurar uma conexão confiável entre seu cliente HSM e o Redshift enquanto usa certificados de cliente e servidor.

Esta conexão é necessária para fornecer comunicações seguras, permitindo que chaves de criptografia sejam enviadas entre seu cliente HSM e seus clusters Redshift. Usando um par de chaves privada e pública gerado aleatoriamente, o Redshift cria um certificado de cliente público, que é criptografado e armazenado pelo Redshift. Este deve ser baixado e registrado no seu cliente HSM, e atribuído à partição HSM correta.

Você deve então configurar o Redshift com os seguintes detalhes do seu cliente HSM: o endereço IP do HSM, o nome da partição HSM, a senha da partição HSM e o certificado de servidor público HSM, que é criptografado pelo CloudHSM usando uma chave mestre interna. Uma vez que esta informação tenha sido fornecida, o Redshift confirmará e verificará que pode conectar e acessar a partição de desenvolvimento.

Se suas políticas internas de segurança ou controles de governança determinarem que você deve aplicar a rotação de chaves, isso é possível com o Redshift, permitindo que você gire as chaves de criptografia para clusters criptografados. No entanto, você precisa estar ciente de que durante o processo de rotação de chaves, o cluster ficará indisponível por um curto período de tempo, então é melhor girar as chaves apenas quando necessário ou se você sentir que elas podem ter sido comprometidas.

Durante a rotação, o Redshift girará a CEK para o seu cluster e para quaisquer backups desse cluster. Ele girará uma DEK para o cluster, mas não é possível girar uma DEK para os snapshots armazenados no S3 que foram criptografados usando a DEK. Ele colocará o cluster em um estado de 'rotating keys' até que o processo seja concluído, quando o status retornará para 'available'.

Enumeração

# 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

Persistência

As seguintes ações permitem conceder acesso a outras contas AWS ao cluster:

Support HackTricks

Last updated