AWS - Redshift Enum

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Amazon Redshift

Redshift - це повністю керований сервіс, який може масштабуватися до понад петабайта, який використовується як сховище даних для великих обсягів даних. За допомогою кластерів Redshift ви можете проводити аналітику проти ваших наборів даних, використовуючи швидкі, SQL-засновані інструменти запитів та додатки для бізнес-аналітики для отримання кращого розуміння візії для вашого бізнесу.

Redshift пропонує шифрування в спокої за допомогою чотирьохрівневої ієрархії ключів шифрування, використовуючи KMS або CloudHSM для управління верхнім рівнем ключів. Коли шифрування увімкнено для вашого кластера, його не можна вимкнути, і навпаки. Коли у вас є незашифрований кластер, його не можна зашифрувати.

Шифрування для вашого кластера може відбуватися лише під час його створення, і після шифрування дані, метадані та будь-які знімки також шифруються. Рівні ключів шифрування розподілені наступним чином: рівень один - це головний ключ, рівень два - це ключ шифрування кластера, CEK, рівень три - це ключ шифрування бази даних, DEK, і, нарешті, рівень чотири - це сами ключі шифрування даних.

KMS

Під час створення вашого кластера ви можете вибрати типовий ключ KMS для Redshift або вибрати власний CMK, що дозволяє вам більше гнучкості у керуванні ключем, зокрема з точки зору аудиту.

Типовий ключ KMS для Redshift автоматично створюється Redshift при виборі та використанні ключа вперше і повністю керується AWS.

Цей ключ KMS потім шифрується головним ключем CMK, рівень один. Цей зашифрований ключ даних KMS потім використовується як ключ шифрування кластера, CEK, рівень два. Цей CEK потім надсилається KMS до Redshift, де він зберігається окремо від кластера. Потім Redshift надсилає цей зашифрований CEK до кластера через захищений канал, де він зберігається в пам'яті.

Потім Redshift запитує KMS розшифрувати CEK, рівень два. Цей розшифрований CEK також зберігається в пам'яті. Потім Redshift створює випадковий ключ шифрування бази даних, DEK, рівень три, і завантажує його в пам'ять кластера. Розшифрований CEK в пам'яті шифрує DEK, який також зберігається в пам'яті.

Цей зашифрований DEK потім надсилається через захищений канал і зберігається в Redshift окремо від кластера. Як CEK, так і DEK тепер зберігаються в пам'яті кластера як в зашифрованій, так і розшифрованій формі. Розшифрований DEK потім використовується для шифрування ключів даних, рівень чотири, які випадково генеруються Redshift для кожного блоку даних у базі даних.

Ви можете використовувати AWS Trusted Advisor для моніторингу конфігурації ваших відрах Amazon S3 та переконатися, що журналювання відра увімкнено, що може бути корисно для проведення аудитів безпеки та відстеження шаблонів використання в S3.

CloudHSM

Використання Redshift з CloudHSM

При роботі з CloudHSM для виконання шифрування, спочатку вам потрібно налаштувати довірче з'єднання між вашим клієнтом HSM та Redshift, використовуючи клієнтські та серверні сертифікати.

Це з'єднання необхідне для забезпечення безпечних комунікацій, що дозволяє надсилати ключі шифрування між вашим клієнтом HSM та вашими кластерами Redshift. Використовуючи випадково згенеровану пару приватного та публічного ключа, Redshift створює публічний клієнтський сертифікат, який шифрується та зберігається Redshift. Його потрібно завантажити та зареєструвати на вашому клієнті HSM та призначити йому відповідний розділ HSM.

Потім вам потрібно налаштувати Redshift з наступними деталями вашого клієнта HSM: IP-адреса HSM, назва розділу HSM, пароль розділу HSM та публічний сертифікат сервера HSM, який шифрується CloudHSM за допомогою внутрішнього головного ключа. Після надання цієї інформації Redshift підтвердить та перевірить, що він може підключитися та отримати доступ до розробницького розділу.

Якщо ваші внутрішні політики безпеки або управління вимагають, щоб ви застосовували обертання ключів, то це можливо з Redshift, дозволяючи вам обертати ключі шифрування для зашифрованих кластерів, проте вам потрібно знати, що під час процесу обертання ключів кластер буде недоступний на дуже короткий період часу, тому найкраще обертати ключі лише тоді, коли вам це потрібно, або якщо ви вважаєте, що вони можуть бути компрометовані.

Під час обертання Redshift буде обертати CEK для вашого кластера та для будь-яких резервних копій цього кластера. Він оберне DEK для кластера, але неможливо обернути DEK для знімків, збережених в S3, які були зашифровані за допомогою DEK. Кластер буде переведений в стан 'обертання ключів' до завершення процесу, коли статус повернеться до 'доступний'.

Перелік

# 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

Підвищення привілеїв

pageAWS - Redshift Privesc

Наполегливість

Наступні дії дозволяють надати доступ до інших облікових записів AWS для кластера:

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated