AWS - Redshift Enum

Support HackTricks

Amazon Redshift

Redshift é um serviço totalmente gerenciado que pode escalar para mais de um petabyte em tamanho, utilizado 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 aplicações 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 camadas de chaves de criptografia, utilizando KMS ou CloudHSM para gerenciar o nível superior de chaves. Quando a criptografia é ativada para seu cluster, 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 seu cluster só pode ocorrer durante sua criação, e uma vez criptografado, os dados, metadados e quaisquer instantâneas também são criptografados. Os níveis de hierarquia das chaves de criptografia são os seguintes: a camada um é a chave mestre, a camada dois é a chave de criptografia do cluster, a CEK, a camada três, a chave de criptografia do banco de dados, a DEK, e finalmente a camada quatro, as chaves de criptografia de dados em si.

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 utilizada, e é totalmente gerenciada pela AWS.

Essa chave KMS é então criptografada com a chave mestre CMK, camada um. Essa chave de dados KMS criptografada é então usada como a chave de criptografia do cluster, a CEK, camada dois. Essa CEK é então enviada pelo KMS para o Redshift, onde é armazenada separadamente do cluster. O Redshift então envia essa 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, camada dois. Essa 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, camada 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.

Essa 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, camada 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 do Amazon S3 e garantir que o registro de bucket esteja ativado, 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, utilizando certificados de cliente e servidor.

Essa 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 público do servidor HSM, que é criptografado pelo CloudHSM usando uma chave mestre interna. Uma vez que essas informações tenham sido fornecidas, o Redshift confirmará e verificará se pode conectar e acessar a partição de desenvolvimento.

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

Durante a rotação, o Redshift irá girar a CEK para seu cluster e para quaisquer backups desse cluster. Ele irá girar uma DEK para o cluster, mas não é possível girar uma DEK para as instantâneas armazenadas no S3 que foram criptografadas usando a DEK. Ele colocará o cluster em um estado de 'girando chaves' até que o processo seja concluído, quando o status retornará a 'disponível'.

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

Persistência

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

Support HackTricks

Last updated