mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-01 15:35:51 -08:00
Translated ['src/pentesting-cloud/aws-security/aws-services/aws-kms-enum
This commit is contained in:
@@ -2,9 +2,9 @@
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## KMS - Служба управління ключами
|
||||
## KMS - Key Management Service
|
||||
|
||||
AWS Служба управління ключами (AWS KMS) представлена як керована служба, що спрощує процес для користувачів **створювати та керувати основними ключами клієнта** (CMK). Ці CMK є невід'ємною частиною шифрування даних користувачів. Помітною особливістю AWS KMS є те, що CMK переважно **захищені апаратними модулями безпеки** (HSM), що підвищує захист шифрувальних ключів.
|
||||
AWS Key Management Service (AWS KMS) представлений як керована служба, що спрощує процес для користувачів **створювати та керувати основними ключами клієнтів** (CMKs). Ці CMKs є невід'ємною частиною шифрування даних користувачів. Помітною особливістю AWS KMS є те, що CMKs переважно **захищені апаратними модулями безпеки** (HSMs), що підвищує захист шифрувальних ключів.
|
||||
|
||||
KMS використовує **симетричну криптографію**. Це використовується для **шифрування інформації в спокої** (наприклад, всередині S3). Якщо вам потрібно **шифрувати інформацію в русі**, вам потрібно використовувати щось на зразок **TLS**.
|
||||
|
||||
@@ -12,14 +12,14 @@ KMS є **сервісом, специфічним для регіону**.
|
||||
|
||||
**Адміністратори Amazon не мають доступу до ваших ключів**. Вони не можуть відновити ваші ключі і не допомагають вам з шифруванням ваших ключів. AWS просто адмініструє операційну систему та основний додаток, нам потрібно адмініструвати наші шифрувальні ключі та контролювати, як ці ключі використовуються.
|
||||
|
||||
**Основні ключі клієнта** (CMK): Можуть шифрувати дані розміром до 4KB. Вони зазвичай використовуються для створення, шифрування та розшифрування DEK (Ключі шифрування даних). Потім DEK використовуються для шифрування даних.
|
||||
**Основні ключі клієнтів** (CMK): Можуть шифрувати дані розміром до 4KB. Вони зазвичай використовуються для створення, шифрування та розшифрування DEKs (Ключів Шифрування Даних). Потім DEKs використовуються для шифрування даних.
|
||||
|
||||
Основний ключ клієнта (CMK) є логічним представленням основного ключа в AWS KMS. На додаток до ідентифікаторів основного ключа та іншої метаданих, включаючи дату створення, опис та стан ключа, **CMK містить матеріал ключа, який використовується для шифрування та розшифрування даних**. Коли ви створюєте CMK, за замовчуванням AWS KMS генерує матеріал ключа для цього CMK. Однак ви можете вибрати створити CMK без матеріалу ключа, а потім імпортувати свій власний матеріал ключа в цей CMK.
|
||||
|
||||
Існує 2 типи основних ключів:
|
||||
|
||||
- **CMK, керовані AWS: Використовуються іншими службами для шифрування даних**. Вони використовуються службою, яка їх створила в регіоні. Вони створюються перший раз, коли ви реалізуєте шифрування в цій службі. Обертаються кожні 3 роки, і змінити їх неможливо.
|
||||
- **CMK, керовані клієнтом**: Гнучкість, ротація, налаштовуваний доступ і політика ключів. Увімкнення та вимкнення ключів.
|
||||
- **AWS керовані CMKs: Використовуються іншими службами для шифрування даних**. Вони використовуються службою, яка їх створила в регіоні. Вони створюються перший раз, коли ви реалізуєте шифрування в цій службі. Обертаються кожні 3 роки, і змінити їх неможливо.
|
||||
- **Клієнтські керовані CMKs**: Гнучкість, ротація, налаштовуваний доступ і політика ключів. Увімкнення та вимкнення ключів.
|
||||
|
||||
**Шифрування конвертів** в контексті Служби управління ключами (KMS): Система з двох рівнів для **шифрування даних за допомогою ключа даних, а потім шифрування ключа даних за допомогою основного ключа**.
|
||||
|
||||
@@ -35,11 +35,11 @@ KMS є **сервісом, специфічним для регіону**.
|
||||
|
||||
- Без дозволу облікового запису (`"AWS": "arn:aws:iam::111122223333:root"`) дозволи IAM не працюватимуть.
|
||||
|
||||
- Вона **дозволяє обліковому запису використовувати політики IAM** для надання доступу до ключа KMS, на додаток до політики ключа.
|
||||
- Це **дозволяє обліковому запису використовувати політики IAM** для надання доступу до ключа KMS, на додаток до політики ключа.
|
||||
|
||||
**Без цього дозволу політики IAM, які дозволяють доступ до ключа, є неефективними**, хоча політики IAM, які забороняють доступ до ключа, все ще є ефективними.
|
||||
|
||||
- Вона **зменшує ризик того, що ключ стане некерованим**, надаючи дозвіл на контроль доступу адміністраторам облікового запису, включаючи кореневого користувача облікового запису, який не може бути видалений.
|
||||
- Це **зменшує ризик того, що ключ стане некерованим**, надаючи дозвіл на контроль доступу адміністраторам облікового запису, включаючи кореневого користувача облікового запису, якого не можна видалити.
|
||||
|
||||
**Приклад політики за замовчуванням**:
|
||||
```json
|
||||
@@ -54,7 +54,7 @@ KMS є **сервісом, специфічним для регіону**.
|
||||
}
|
||||
```
|
||||
> [!WARNING]
|
||||
> Якщо **обліковий запис дозволено** (`"arn:aws:iam::111122223333:root"`), **основний суб'єкт** з облікового запису **все ще потребуватиме IAM дозволів** для використання KMS ключа. Однак, якщо **ARN** ролі, наприклад, **спеціально дозволено** в **Політиці ключа**, ця роль **не потребує IAM дозволів**.
|
||||
> Якщо **обліковий запис дозволено** (`"arn:aws:iam::111122223333:root"`), **суб'єкт** з облікового запису **все ще потребуватиме IAM дозволів** для використання KMS ключа. Однак, якщо **ARN** ролі, наприклад, **специфічно дозволено** в **Політиці ключа**, ця роль **не потребує IAM дозволів**.
|
||||
|
||||
<details>
|
||||
|
||||
@@ -66,12 +66,12 @@ KMS є **сервісом, специфічним для регіону**.
|
||||
- Ресурс --> Підлягаючі ресурси (може бути "\*")
|
||||
- Дія --> kms:Encrypt, kms:Decrypt, kms:CreateGrant ... (дозволи)
|
||||
- Ефект --> Дозволити/Відмовити
|
||||
- Основний суб'єкт --> arn, що підлягає
|
||||
- Суб'єкт --> arn, що підлягає
|
||||
- Умови (необов'язково) --> Умова для надання дозволів
|
||||
|
||||
Гранти:
|
||||
|
||||
- Дозволяє делегувати ваші дозволи іншому AWS основному суб'єкту у вашому обліковому записі AWS. Вам потрібно створити їх, використовуючи AWS KMS API. Можна вказати ідентифікатор CMK, основний суб'єкт гранту та необхідний рівень операції (Decrypt, Encrypt, GenerateDataKey...)
|
||||
- Дозволяє делегувати ваші дозволи іншому AWS суб'єкту у вашому AWS обліковому записі. Вам потрібно створити їх, використовуючи AWS KMS API. Можна вказати ідентифікатор CMK, суб'єкта гранту та необхідний рівень операції (Decrypt, Encrypt, GenerateDataKey...)
|
||||
- Після створення гранту видається GrantToken та GrantID
|
||||
|
||||
**Доступ**:
|
||||
@@ -87,13 +87,13 @@ KMS є **сервісом, специфічним для регіону**.
|
||||
Адміністратори ключів за замовчуванням:
|
||||
|
||||
- Мають доступ для управління KMS, але не для шифрування або дешифрування даних
|
||||
- Тільки користувачі та ролі IAM можуть бути додані до списку адміністраторів ключів (не групи)
|
||||
- Якщо використовується зовнішній CMK, адміністратори ключів мають дозвіл на імпорт матеріалів ключа
|
||||
- Тільки користувачі та ролі IAM можуть бути додані до списку Адміністраторів ключів (не групи)
|
||||
- Якщо використовується зовнішній CMK, Адміністратори ключів мають дозвіл на імпорт матеріалів ключа
|
||||
|
||||
### Ротація CMK
|
||||
|
||||
- Чим довше той самий ключ залишається на місці, тим більше даних шифрується цим ключем, і якщо цей ключ буде зламано, то ширша зона ризику даних. Крім того, чим довше ключ активний, тим більше ймовірність його зламу.
|
||||
- **KMS ротує ключі клієнтів кожні 365 днів** (або ви можете виконати процес вручну, коли захочете) і **ключі, що управляються AWS, кожні 3 роки**, і цього разу змінити не можна.
|
||||
- **KMS ротує ключі клієнтів кожні 365 днів** (або ви можете виконати процес вручну, коли захочете) і **ключі, що керуються AWS, кожні 3 роки**, і цей термін не може бути змінено.
|
||||
- **Старі ключі зберігаються** для дешифрування даних, які були зашифровані до ротації
|
||||
- У разі зламу, ротація ключа не усуне загрозу, оскільки буде можливість дешифрувати всі дані, зашифровані зламаним ключем. Однак, **нові дані будуть зашифровані новим ключем**.
|
||||
- Якщо **CMK** знаходиться в стані **вимкнено** або **в очікуванні** **видалення**, KMS **не виконає ротацію ключа**, поки CMK не буде повторно активовано або видалення не буде скасовано.
|
||||
@@ -108,13 +108,13 @@ KMS є **сервісом, специфічним для регіону**.
|
||||
|
||||
### Інша релевантна інформація KMS
|
||||
|
||||
KMS оцінюється за кількістю запитів на шифрування/дешифрування, отриманих від усіх служб за місяць.
|
||||
KMS оцінюється за кількістю запитів на шифрування/дешифрування, отриманих від усіх сервісів за місяць.
|
||||
|
||||
KMS має повну аудиторську та комплаєнс **інтеграцію з CloudTrail**; тут ви можете перевірити всі зміни, виконані в KMS.
|
||||
|
||||
З політикою KMS ви можете зробити наступне:
|
||||
|
||||
- Обмежити, хто може створювати ключі даних і які служби мають доступ до використання цих ключів
|
||||
- Обмежити, хто може створювати ключі даних і які сервіси мають доступ до використання цих ключів
|
||||
- Обмежити доступ систем до шифрування лише, дешифрування лише або обидва
|
||||
- Визначити, щоб системи могли отримувати доступ до ключів через регіони (хоча це не рекомендується, оскільки збій у регіоні, що хостить KMS, вплине на доступність систем в інших регіонах).
|
||||
|
||||
@@ -128,6 +128,11 @@ aws kms list-grants --key-id <id>
|
||||
aws kms describe-key --key-id <id>
|
||||
aws kms get-key-policy --key-id <id> --policy-name <name> # Default policy name is "default"
|
||||
aws kms describe-custom-key-stores
|
||||
|
||||
# This script enumerates AWS KMS keys across all available regions.
|
||||
for region in $(aws ec2 describe-regions --query "Regions[].RegionName" --output text); do
|
||||
echo -e "\n### Region: $region ###"; aws kms list-keys --region $region --query "Keys[].KeyId" --output text | tr '\t' '\n';
|
||||
done
|
||||
```
|
||||
### Privesc
|
||||
|
||||
|
||||
Reference in New Issue
Block a user