AWS - Redshift Enum

Support HackTricks

Amazon Redshift

Redshift to w pełni zarządzana usługa, która może skalować się do ponad petabajta, używana jako hurtownia danych dla rozwiązań big data. Używając klastrów Redshift, możesz przeprowadzać analizy na swoich zbiorach danych, korzystając z szybkich narzędzi zapytań opartych na SQL i aplikacji analitycznych, aby lepiej zrozumieć wizję swojego biznesu.

Redshift oferuje szyfrowanie w spoczynku, używając czteropoziomowej hierarchii kluczy szyfrujących, korzystając z KMS lub CloudHSM do zarządzania najwyższym poziomem kluczy. Gdy szyfrowanie jest włączone dla twojego klastra, nie można go wyłączyć i odwrotnie. Gdy masz nieszyfrowany klaster, nie można go zaszyfrować.

Szyfrowanie dla twojego klastra może odbyć się tylko podczas jego tworzenia, a po zaszyfrowaniu dane, metadane i wszelkie migawki są również szyfrowane. Poziomy hierarchii kluczy szyfrujących są następujące: poziom pierwszy to klucz główny, poziom drugi to klucz szyfrowania klastra, CEK, poziom trzeci to klucz szyfrowania bazy danych, DEK, a na końcu poziom czwarty to same klucze szyfrowania danych.

KMS

Podczas tworzenia klastra możesz wybrać domyślny klucz KMS dla Redshift lub wybrać swój własny CMK, co daje ci większą elastyczność w kontroli klucza, szczególnie z perspektywy audytowalnej.

Domyślny klucz KMS dla Redshift jest automatycznie tworzony przez Redshift za pierwszym razem, gdy opcja klucza jest wybrana i używana, i jest w pełni zarządzany przez AWS.

Ten klucz KMS jest następnie szyfrowany kluczem głównym CMK, poziom pierwszy. Ten zaszyfrowany klucz danych KMS jest następnie używany jako klucz szyfrowania klastra, CEK, poziom drugi. Ten CEK jest następnie wysyłany przez KMS do Redshift, gdzie jest przechowywany oddzielnie od klastra. Redshift następnie wysyła ten zaszyfrowany CEK do klastra przez bezpieczny kanał, gdzie jest przechowywany w pamięci.

Redshift następnie prosi KMS o odszyfrowanie CEK, poziom drugi. Ten odszyfrowany CEK jest następnie również przechowywany w pamięci. Redshift następnie tworzy losowy klucz szyfrowania bazy danych, DEK, poziom trzeci, i ładuje go do pamięci klastra. Odszyfrowany CEK w pamięci następnie szyfruje DEK, który również jest przechowywany w pamięci.

Ten zaszyfrowany DEK jest następnie wysyłany przez bezpieczny kanał i przechowywany w Redshift oddzielnie od klastra. Zarówno CEK, jak i DEK są teraz przechowywane w pamięci klastra zarówno w formie zaszyfrowanej, jak i odszyfrowanej. Odszyfrowany DEK jest następnie używany do szyfrowania kluczy danych, poziom czwarty, które są losowo generowane przez Redshift dla każdego bloku danych w bazie danych.

Możesz użyć AWS Trusted Advisor, aby monitorować konfigurację swoich koszy Amazon S3 i upewnić się, że logowanie koszy jest włączone, co może być przydatne do przeprowadzania audytów bezpieczeństwa i śledzenia wzorców użycia w S3.

CloudHSM

Using Redshift with CloudHSM

Pracując z CloudHSM w celu przeprowadzenia szyfrowania, najpierw musisz skonfigurować zaufane połączenie między swoim klientem HSM a Redshift, używając certyfikatów klienta i serwera.

To połączenie jest wymagane do zapewnienia bezpiecznej komunikacji, umożliwiając przesyłanie kluczy szyfrujących między twoim klientem HSM a klastrami Redshift. Używając losowo wygenerowanej pary kluczy prywatnych i publicznych, Redshift tworzy publiczny certyfikat klienta, który jest szyfrowany i przechowywany przez Redshift. Musi być on pobrany i zarejestrowany w twoim kliencie HSM oraz przypisany do odpowiedniej partycji HSM.

Następnie musisz skonfigurować Redshift z następującymi danymi swojego klienta HSM: adres IP HSM, nazwa partycji HSM, hasło partycji HSM oraz publiczny certyfikat serwera HSM, który jest szyfrowany przez CloudHSM przy użyciu wewnętrznego klucza głównego. Po podaniu tych informacji, Redshift potwierdzi i zweryfikuje, że może połączyć się i uzyskać dostęp do partycji deweloperskiej.

Jeśli twoje wewnętrzne polityki bezpieczeństwa lub kontrole zarządzania nakazują, abyś zastosował rotację kluczy, to jest to możliwe z Redshift, umożliwiając ci rotację kluczy szyfrujących dla zaszyfrowanych klastrów, jednak musisz być świadomy, że podczas procesu rotacji kluczy klaster będzie niedostępny przez bardzo krótki czas, dlatego najlepiej jest rotować klucze tylko wtedy, gdy jest to konieczne, lub jeśli uważasz, że mogły zostać skompromitowane.

Podczas rotacji Redshift obróci CEK dla twojego klastra oraz dla wszelkich kopii zapasowych tego klastra. Obróci DEK dla klastra, ale nie jest możliwe obrócenie DEK dla migawek przechowywanych w S3, które zostały zaszyfrowane przy użyciu DEK. Umieści klaster w stanie 'rotacji kluczy', aż proces zostanie zakończony, kiedy status powróci do 'dostępny'.

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

Utrzymywanie dostępu

Następujące działania umożliwiają przyznanie dostępu do klastra innym kontom AWS:

Wsparcie dla HackTricks

Last updated