mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-07-28 22:51:09 -07:00
Translated ['src/pentesting-cloud/aws-security/aws-services/aws-kms-enum
This commit is contained in:
@@ -4,24 +4,24 @@
|
||||
|
||||
## KMS - Usługa Zarządzania Kluczami
|
||||
|
||||
AWS Key Management Service (AWS KMS) jest przedstawiana jako zarządzana usługa, upraszczająca proces **tworzenia i zarządzania kluczami głównymi klientów** (CMK). Te CMK są integralne w szyfrowaniu danych użytkowników. Cechą wyróżniającą AWS KMS jest to, że CMK są głównie **zabezpieczane przez moduły bezpieczeństwa sprzętowego** (HSM), co zwiększa ochronę kluczy szyfrujących.
|
||||
AWS Key Management Service (AWS KMS) jest przedstawiana jako zarządzana usługa, upraszczająca proces dla użytkowników w **tworzeniu i zarządzaniu kluczami głównymi klientów** (CMK). Te CMK są integralne w szyfrowaniu danych użytkowników. Cechą wyróżniającą AWS KMS jest to, że CMK są głównie **zabezpieczone przez moduły bezpieczeństwa sprzętowego** (HSM), co zwiększa ochronę kluczy szyfrujących.
|
||||
|
||||
KMS używa **szyfrowania symetrycznego**. Jest ono używane do **szyfrowania informacji w spoczynku** (na przykład, wewnątrz S3). Jeśli potrzebujesz **szyfrować informacje w tranzycie**, musisz użyć czegoś takiego jak **TLS**.
|
||||
|
||||
KMS jest **usługą specyficzną dla regionu**.
|
||||
|
||||
**Administratorzy w Amazonie nie mają dostępu do twoich kluczy**. Nie mogą odzyskać twoich kluczy i nie pomagają w szyfrowaniu twoich kluczy. AWS po prostu zarządza systemem operacyjnym i podstawową aplikacją, to my musimy zarządzać naszymi kluczami szyfrującymi i kontrolować, jak te klucze są używane.
|
||||
**Administratorzy w Amazonie nie mają dostępu do twoich kluczy**. Nie mogą odzyskać twoich kluczy i nie pomagają w szyfrowaniu twoich kluczy. AWS po prostu zarządza systemem operacyjnym i podstawową aplikacją, to od nas zależy zarządzanie naszymi kluczami szyfrującymi i tym, jak te klucze są używane.
|
||||
|
||||
**Klucze Główne Klienta** (CMK): Mogą szyfrować dane o rozmiarze do 4KB. Zwykle są używane do tworzenia, szyfrowania i deszyfrowania DEK-ów (Kluczy Szyfrowania Danych). Następnie DEK-i są używane do szyfrowania danych.
|
||||
**Klucze Główne Klienta** (CMK): Mogą szyfrować dane o rozmiarze do 4KB. Zwykle są używane do tworzenia, szyfrowania i deszyfrowania DEK-ów (Kluczy Szyfrujących Danych). Następnie DEK-i są używane do szyfrowania danych.
|
||||
|
||||
Klucz główny klienta (CMK) jest logiczną reprezentacją klucza głównego w AWS KMS. Oprócz identyfikatorów klucza głównego i innych metadanych, w tym daty utworzenia, opisu i stanu klucza, **CMK zawiera materiał kluczowy, który jest używany do szyfrowania i deszyfrowania danych**. Gdy tworzysz CMK, domyślnie AWS KMS generuje materiał kluczowy dla tego CMK. Możesz jednak zdecydować się na utworzenie CMK bez materiału kluczowego, a następnie zaimportować własny materiał kluczowy do tego CMK.
|
||||
Klucz główny klienta (CMK) jest logiczną reprezentacją klucza głównego w AWS KMS. Oprócz identyfikatorów klucza głównego i innych metadanych, w tym daty utworzenia, opisu i stanu klucza, **CMK zawiera materiał klucza, który jest używany do szyfrowania i deszyfrowania danych**. Gdy tworzysz CMK, domyślnie AWS KMS generuje materiał klucza dla tego CMK. Możesz jednak zdecydować się na utworzenie CMK bez materiału klucza, a następnie zaimportować własny materiał klucza do tego CMK.
|
||||
|
||||
Istnieją 2 typy kluczy głównych:
|
||||
|
||||
- **CMK zarządzane przez AWS: Używane przez inne usługi do szyfrowania danych**. Są używane przez usługę, która je utworzyła w danym regionie. Są tworzone po raz pierwszy, gdy wdrażasz szyfrowanie w tej usłudze. Rotują co 3 lata i nie ma możliwości ich zmiany.
|
||||
- **CMK zarządzane przez klienta**: Elastyczność, rotacja, konfigurowalny dostęp i polityka kluczy. Włączanie i wyłączanie kluczy.
|
||||
- **CMK zarządzane przez klienta**: Elastyczność, rotacja, konfigurowalny dostęp i polityka klucza. Włączanie i wyłączanie kluczy.
|
||||
|
||||
**Szyfrowanie w Kopercie** w kontekście Usługi Zarządzania Kluczami (KMS): System hierarchii dwupoziomowej do **szyfrowania danych za pomocą klucza danych, a następnie szyfrowania klucza danych za pomocą klucza głównego**.
|
||||
**Szyfrowanie w Kopercie** w kontekście Usługi Zarządzania Kluczami (KMS): System hierarchii dwóch poziomów do **szyfrowania danych za pomocą klucza danych, a następnie szyfrowania klucza danych za pomocą klucza głównego**.
|
||||
|
||||
### Polityki Kluczy
|
||||
|
||||
@@ -29,9 +29,9 @@ Te definiują **kto może używać i uzyskiwać dostęp do klucza w KMS**.
|
||||
|
||||
**Domyślnie:**
|
||||
|
||||
- Daje dostęp **IAM konta AWS, które posiada klucz KMS, do zarządzania dostępem do klucza KMS za pośrednictwem IAM**.
|
||||
- Daje **IAM konta AWS, które posiada klucz KMS dostęp** do zarządzania dostępem do klucza KMS za pośrednictwem IAM.
|
||||
|
||||
W przeciwieństwie do innych polityk zasobów AWS, polityka **klucza KMS AWS nie przyznaje automatycznie uprawnień żadnemu z podmiotów konta**. Aby przyznać uprawnienia administratorom konta, **polityka klucza musi zawierać wyraźne oświadczenie** przyznające te uprawnienia, takie jak to.
|
||||
W przeciwieństwie do innych polityk zasobów AWS, polityka **klucza KMS nie przyznaje automatycznie uprawnień żadnemu z podmiotów konta**. Aby przyznać uprawnienia administratorom konta, **polityka klucza musi zawierać wyraźne oświadczenie** przyznające te uprawnienia, takie jak to.
|
||||
|
||||
- Bez zezwolenia dla konta (`"AWS": "arn:aws:iam::111122223333:root"`) uprawnienia IAM nie będą działać.
|
||||
|
||||
@@ -39,7 +39,7 @@ W przeciwieństwie do innych polityk zasobów AWS, polityka **klucza KMS AWS nie
|
||||
|
||||
**Bez tego zezwolenia polityki IAM, które pozwalają na dostęp do klucza, są nieskuteczne**, chociaż polityki IAM, które odmawiają dostępu do klucza, są nadal skuteczne.
|
||||
|
||||
- **Zmniejsza ryzyko, że klucz stanie się niezarządzalny**, przyznając uprawnienia do kontroli dostępu administratorom konta, w tym użytkownikowi głównemu konta, którego nie można usunąć.
|
||||
- **Zmniejsza ryzyko, że klucz stanie się niezarządzalny** poprzez przyznanie uprawnień do kontroli dostępu administratorom konta, w tym użytkownikowi głównemu konta, którego nie można usunąć.
|
||||
|
||||
**Przykład domyślnej polityki**:
|
||||
```json
|
||||
@@ -54,7 +54,7 @@ W przeciwieństwie do innych polityk zasobów AWS, polityka **klucza KMS AWS nie
|
||||
}
|
||||
```
|
||||
> [!WARNING]
|
||||
> Jeśli **konto jest dozwolone** (`"arn:aws:iam::111122223333:root"`), **podmiot** z konta **wciąż potrzebuje uprawnień IAM** do użycia klucza KMS. Jednak jeśli **ARN** roli na przykład jest **specjalnie dozwolony** w **polityce klucza**, ta rola **nie potrzebuje uprawnień IAM**.
|
||||
> Jeśli **konto jest dozwolone** (`"arn:aws:iam::111122223333:root"`), **podmiot** z konta **wciąż potrzebuje uprawnień IAM**, aby używać klucza KMS. Jednak jeśli **ARN** roli na przykład jest **specjalnie dozwolony** w **polityce klucza**, ta rola **nie potrzebuje uprawnień IAM**.
|
||||
|
||||
<details>
|
||||
|
||||
@@ -71,7 +71,7 @@ Właściwości polityki:
|
||||
|
||||
Granty:
|
||||
|
||||
- Zezwala na delegowanie swoich uprawnień innemu podmiotowi AWS w ramach twojego konta AWS. Musisz je utworzyć za pomocą interfejsów API AWS KMS. Można wskazać identyfikator CMK, podmiot granta oraz wymagany poziom operacji (Decrypt, Encrypt, GenerateDataKey...)
|
||||
- Zezwala na delegowanie swoich uprawnień innemu podmiotowi AWS w ramach twojego konta AWS. Musisz je utworzyć za pomocą interfejsów API AWS KMS. Można wskazać identyfikator CMK, podmiot uprawniony i wymagany poziom operacji (Decrypt, Encrypt, GenerateDataKey...)
|
||||
- Po utworzeniu grantu wydawany jest GrantToken i GrantID
|
||||
|
||||
**Dostęp**:
|
||||
@@ -84,19 +84,19 @@ Granty:
|
||||
|
||||
### Administratorzy kluczy
|
||||
|
||||
Administrator kluczy domyślnie:
|
||||
Administratorzy kluczy domyślnie:
|
||||
|
||||
- Ma dostęp do zarządzania KMS, ale nie do szyfrowania lub deszyfrowania danych
|
||||
- Mają dostęp do zarządzania KMS, ale nie do szyfrowania ani deszyfrowania danych
|
||||
- Tylko użytkownicy i role IAM mogą być dodawani do listy administratorów kluczy (nie grupy)
|
||||
- Jeśli używany jest zewnętrzny CMK, administratorzy kluczy mają uprawnienia do importowania materiału klucza
|
||||
|
||||
### Rotacja CMK
|
||||
|
||||
- Im dłużej ten sam klucz pozostaje na miejscu, tym więcej danych jest szyfrowanych tym kluczem, a jeśli ten klucz zostanie naruszony, tym szerszy obszar danych jest zagrożony. Oprócz tego, im dłużej klucz jest aktywny, tym większe prawdopodobieństwo jego naruszenia.
|
||||
- Im dłużej ten sam klucz pozostaje na miejscu, tym więcej danych jest szyfrowanych tym kluczem, a jeśli ten klucz zostanie naruszony, tym szerszy obszar danych jest narażony na ryzyko. Dodatkowo, im dłużej klucz jest aktywny, tym większe prawdopodobieństwo, że zostanie naruszony.
|
||||
- **KMS rotuje klucze klientów co 365 dni** (lub możesz przeprowadzić ten proces ręcznie, kiedy chcesz) oraz **klucze zarządzane przez AWS co 3 lata**, a tego czasu nie można zmienić.
|
||||
- **Starsze klucze są zachowywane** do deszyfrowania danych, które zostały zaszyfrowane przed rotacją
|
||||
- W przypadku naruszenia, rotacja klucza nie usunie zagrożenia, ponieważ możliwe będzie deszyfrowanie wszystkich danych zaszyfrowanych skompromitowanym kluczem. Jednak **nowe dane będą szyfrowane nowym kluczem**.
|
||||
- Jeśli **CMK** jest w stanie **wyłączonym** lub **oczekującym** **usunięcia**, KMS **nie przeprowadzi rotacji klucza**, dopóki CMK nie zostanie ponownie włączony lub usunięcie nie zostanie anulowane.
|
||||
- Jeśli **CMK** jest w stanie **wyłączonym** lub **oczekiwania** **na usunięcie**, KMS **nie przeprowadzi rotacji klucza**, dopóki CMK nie zostanie ponownie włączony lub usunięcie nie zostanie anulowane.
|
||||
|
||||
#### Ręczna rotacja
|
||||
|
||||
@@ -104,7 +104,7 @@ Administrator kluczy domyślnie:
|
||||
- Aby ułatwić ten proces, możesz **używać aliasów do odniesienia się do identyfikatora klucza** i następnie po prostu zaktualizować klucz, do którego odnosi się alias.
|
||||
- Musisz **zachować stare klucze, aby deszyfrować stare pliki** zaszyfrowane tym kluczem.
|
||||
|
||||
Możesz importować klucze z własnej infrastruktury kluczy lokalnych.
|
||||
Możesz importować klucze z własnej infrastruktury kluczy w siedzibie.
|
||||
|
||||
### Inne istotne informacje 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