diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-kms-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-kms-enum.md index 8793a0a0f..50b99789e 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-kms-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-kms-enum.md @@ -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**.
@@ -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 aws kms describe-key --key-id aws kms get-key-policy --key-id --policy-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