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,21 +4,21 @@
|
||||
|
||||
## KMS - Anahtar Yönetim Servisi
|
||||
|
||||
AWS Anahtar Yönetim Servisi (AWS KMS), kullanıcıların **müşteri anahtarlarını oluşturmasını ve yönetmesini** kolaylaştıran bir yönetilen hizmet olarak sunulmaktadır. Bu müşteri anahtarları, kullanıcı verilerinin şifrelenmesinde kritik bir rol oynamaktadır. AWS KMS'in dikkat çekici bir özelliği, müşteri anahtarlarının çoğunlukla **donanım güvenlik modülleri** (HSM'ler) tarafından **güvence altına alınmasıdır**, bu da şifreleme anahtarlarının korunmasını artırır.
|
||||
AWS Anahtar Yönetim Servisi (AWS KMS), kullanıcıların **müşteri anahtarlarını oluşturmasını ve yönetmesini** kolaylaştıran yönetilen bir hizmet olarak sunulmaktadır. Bu müşteri anahtarları, kullanıcı verilerinin şifrelenmesinde kritik bir rol oynamaktadır. AWS KMS'in dikkat çekici bir özelliği, müşteri anahtarlarının çoğunlukla **donanım güvenlik modülleri** (HSM'ler) tarafından **güvence altına alınmasıdır**, bu da şifreleme anahtarlarının korunmasını artırır.
|
||||
|
||||
KMS, **simetrik kriptografi** kullanır. Bu, **verileri dinlenme halinde şifrelemek için** kullanılır (örneğin, bir S3 içinde). Eğer **verileri iletim sırasında şifrelemeniz** gerekiyorsa, **TLS** gibi bir şey kullanmalısınız.
|
||||
|
||||
KMS, **bölgeye özgü bir hizmettir**.
|
||||
|
||||
**Amazon'daki yöneticilerin anahtarlarınıza erişimi yoktur**. Anahtarlarınızı geri alamazlar ve anahtarlarınızın şifrelenmesine yardımcı olamazlar. AWS, yalnızca işletim sistemini ve altında yatan uygulamayı yönetir; şifreleme anahtarlarımızı yönetmek ve bu anahtarların nasıl kullanılacağını yönetmek bizim sorumluluğumuzdur.
|
||||
**Amazon'daki yöneticiler anahtarlarınıza erişemez**. Anahtarlarınızı geri alamazlar ve anahtarlarınızın şifrelenmesinde size yardımcı olamazlar. AWS, yalnızca işletim sistemini ve altında yatan uygulamayı yönetir; anahtarlarımızı yönetmek ve bu anahtarların nasıl kullanılacağını yönetmek bizim sorumluluğumuzdadır.
|
||||
|
||||
**Müşteri Anahtarları** (CMK): 4KB boyutuna kadar veri şifreleyebilir. Genellikle DEK'leri (Veri Şifreleme Anahtarları) oluşturmak, şifrelemek ve şifre çözmek için kullanılır. Daha sonra DEK'ler verileri şifrelemek için kullanılır.
|
||||
**Müşteri Anahtarları** (CMK): Boyutu 4KB'a kadar olan verileri şifreleyebilir. Genellikle DEK'leri (Veri Şifreleme Anahtarları) oluşturmak, şifrelemek ve şifre çözmek için kullanılır. Daha sonra DEK'ler verileri şifrelemek için kullanılır.
|
||||
|
||||
Bir müşteri anahtarının (CMK) AWS KMS'deki anahtarın mantıksal bir temsili vardır. Anahtarın tanımlayıcıları ve diğer meta verilerin yanı sıra, oluşturulma tarihi, açıklama ve anahtar durumu gibi bilgiler de içerir; **CMK, verileri şifrelemek ve şifre çözmek için kullanılan anahtar materyalini içerir**. Bir CMK oluşturduğunuzda, varsayılan olarak AWS KMS, o CMK için anahtar materyalini oluşturur. Ancak, anahtar materyali olmadan bir CMK oluşturmayı seçebilir ve ardından kendi anahtar materyalinizi o CMK'ye içe aktarabilirsiniz.
|
||||
Bir müşteri anahtarının (CMK) AWS KMS'deki anahtarın mantıksal bir temsilidir. Anahtarın tanımlayıcıları ve diğer meta verilerin yanı sıra, oluşturulma tarihi, açıklama ve anahtar durumu gibi bilgileri içerir; **CMK, verileri şifrelemek ve şifre çözmek için kullanılan anahtar materyalini içerir**. Bir CMK oluşturduğunuzda, varsayılan olarak AWS KMS, o CMK için anahtar materyalini oluşturur. Ancak, anahtar materyali olmadan bir CMK oluşturmayı seçebilir ve ardından kendi anahtar materyalinizi o CMK'ye içe aktarabilirsiniz.
|
||||
|
||||
İki tür anahtar vardır:
|
||||
|
||||
- **AWS yönetilen CMK'ler: Diğer hizmetler tarafından veri şifrelemek için kullanılır**. Oluşturulduğu bölgede, onu oluşturan hizmet tarafından kullanılır. Bu hizmette şifrelemeyi ilk kez uyguladığınızda oluşturulurlar. Her 3 yılda bir döner ve değiştirilmesi mümkün değildir.
|
||||
- **AWS yönetilen CMK'ler: Diğer hizmetler tarafından verileri şifrelemek için kullanılır**. Oluşturulduğu bölgede, onu oluşturan hizmet tarafından kullanılır. Bu hizmette şifrelemeyi ilk kez uyguladığınızda oluşturulurlar. Her 3 yılda bir döner ve değiştirilmesi mümkün değildir.
|
||||
- **Müşteri yönetici CMK'ler**: Esneklik, döngü, yapılandırılabilir erişim ve anahtar politikası. Anahtarları etkinleştirme ve devre dışı bırakma.
|
||||
|
||||
**Zarf Şifrelemesi**, Anahtar Yönetim Servisi (KMS) bağlamında: **verileri veri anahtarı ile şifrelemek ve ardından veri anahtarını anahtar ile şifrelemek için iki katmanlı hiyerarşi sistemi**.
|
||||
@@ -29,9 +29,9 @@ Bunlar, **KMS'de bir anahtarı kimin kullanabileceğini ve erişebileceğini tan
|
||||
|
||||
**Varsayılan olarak:**
|
||||
|
||||
- KMS anahtarına erişim yönetimini sağlamak için **KMS anahtarını sahip olan AWS hesabının IAM'ine** erişim verir.
|
||||
- KMS anahtarına erişimi yönetmek için **KMS anahtarını sahip olan AWS hesabının IAM'ine** erişim verir.
|
||||
|
||||
Diğer AWS kaynak politikalarından farklı olarak, bir AWS **KMS anahtar politikası, hesabın herhangi bir ilkesine otomatik olarak izin vermez**. Hesap yöneticilerine izin vermek için, **anahtar politikasının bu izni sağlayan açık bir ifade içermesi gerekir**, bu şekilde.
|
||||
Diğer AWS kaynak politikalarından farklı olarak, bir AWS **KMS anahtar politikası, hesabın herhangi bir ilkesine otomatik olarak izin vermez**. Hesap yöneticilerine izin vermek için, **anahtar politikasının bu izni sağlayan açık bir ifadeyi içermesi gerekir**, bu şekilde.
|
||||
|
||||
- Hesaba izin vermeden (`"AWS": "arn:aws:iam::111122223333:root"`) IAM izinleri çalışmaz.
|
||||
|
||||
@@ -54,7 +54,7 @@ Diğer AWS kaynak politikalarından farklı olarak, bir AWS **KMS anahtar politi
|
||||
}
|
||||
```
|
||||
> [!WARNING]
|
||||
> Eğer **hesaba izin verilmişse** (`"arn:aws:iam::111122223333:root"`), hesaptan bir **prensip** **KMS anahtarını kullanmak için IAM izinlerine ihtiyaç duyacaktır**. Ancak, eğer bir rolün **ARN**'si **Anahtar Politikasında özel olarak izin verilmişse**, o rol **IAM izinlerine ihtiyaç duymaz**.
|
||||
> Eğer **hesaba izin verilmişse** (`"arn:aws:iam::111122223333:root"`), hesabın bir **prensibi** KMS anahtarını kullanmak için **IAM izinlerine** ihtiyaç duyacaktır. Ancak, eğer bir rolün **ARN**'si **Anahtar Politikasında** **özellikle izin verilmişse**, o rol **IAM izinlerine** ihtiyaç duymaz.
|
||||
|
||||
<details>
|
||||
|
||||
@@ -63,7 +63,7 @@ Diğer AWS kaynak politikalarından farklı olarak, bir AWS **KMS anahtar politi
|
||||
Bir politikanın özellikleri:
|
||||
|
||||
- JSON tabanlı belge
|
||||
- Kaynak --> Etkilenen kaynaklar ("\*" olabilir)
|
||||
- Kaynak --> Etkilenen kaynaklar (yıldız "\*" olabilir)
|
||||
- Eylem --> kms:Encrypt, kms:Decrypt, kms:CreateGrant ... (izinler)
|
||||
- Etki --> İzin Ver / Reddet
|
||||
- Prensip --> etkilenen arn
|
||||
@@ -71,12 +71,12 @@ Bir politikanın özellikleri:
|
||||
|
||||
İzinler:
|
||||
|
||||
- AWS hesabınızdaki başka bir AWS prensibine izinlerinizi devretmenizi sağlar. Bunları AWS KMS API'lerini kullanarak oluşturmanız gerekir. CMK tanımlayıcısı, grantee prensibi ve gerekli işlem seviyesi (Decrypt, Encrypt, GenerateDataKey...) belirtilebilir.
|
||||
- AWS hesabınız içindeki başka bir AWS prensibine izinlerinizi devretmenizi sağlar. Bunları AWS KMS API'lerini kullanarak oluşturmanız gerekir. CMK tanımlayıcısı, grantee prensibi ve gerekli işlem seviyesi (Decrypt, Encrypt, GenerateDataKey...) belirtilebilir.
|
||||
- İzin oluşturulduktan sonra bir GrantToken ve GrantID verilir.
|
||||
|
||||
**Erişim**:
|
||||
|
||||
- **anahtar politikası** aracılığıyla -- Eğer bu mevcutsa, bu IAM politikasından **önceliklidir**.
|
||||
- **anahtar politikası** aracılığıyla -- Eğer bu mevcutsa, bu **IAM politikasından** önceliklidir.
|
||||
- **IAM politikası** aracılığıyla
|
||||
- **izinler** aracılığıyla
|
||||
|
||||
@@ -88,23 +88,23 @@ Varsayılan anahtar yöneticisi:
|
||||
|
||||
- KMS'yi yönetme erişimine sahiptir ancak verileri şifreleme veya şifre çözme yetkisi yoktur.
|
||||
- Sadece IAM kullanıcıları ve rolleri Anahtar Yöneticileri listesine eklenebilir (gruplar değil).
|
||||
- Harici bir CMK kullanılıyorsa, Anahtar Yöneticileri anahtar materyalini içe aktarma iznine sahiptir.
|
||||
- Harici bir CMK kullanılıyorsa, Anahtar Yöneticileri anahtar malzemesini içe aktarma iznine sahiptir.
|
||||
|
||||
### CMK'ların Döngüsü
|
||||
|
||||
- Aynı anahtar yerinde ne kadar uzun süre kalırsa, o anahtarla o kadar çok veri şifrelenir ve eğer o anahtar ihlal edilirse, o zaman veri kaybı alanı o kadar genişler. Ayrıca, anahtar aktif kaldıkça, ihlal edilme olasılığı artar.
|
||||
- Aynı anahtar yerinde ne kadar uzun süre kalırsa, o anahtarla o kadar çok veri şifrelenir ve eğer o anahtar ihlal edilirse, o zaman veri için risk alanı o kadar genişler. Ayrıca, anahtar aktif kaldıkça, ihlal edilme olasılığı artar.
|
||||
- **KMS, müşteri anahtarlarını her 365 günde bir döndürür** (veya istediğiniz zaman süreci manuel olarak gerçekleştirebilirsiniz) ve **AWS tarafından yönetilen anahtarlar her 3 yılda bir döndürülür** ve bu süre değiştirilemez.
|
||||
- **Eski anahtarlar**, döngüden önce şifrelenmiş verileri çözmek için saklanır.
|
||||
- Bir ihlal durumunda, anahtarın döndürülmesi tehdidi ortadan kaldırmaz çünkü ihlal edilen anahtarla şifrelenmiş tüm veriler çözülebilir. Ancak, **yeni veriler yeni anahtar ile şifrelenecektir**.
|
||||
- Eğer **CMK** **devre dışı** veya **silinme bekliyor** durumdaysa, KMS **anahtar döndürme işlemi yapmayacaktır** ta ki CMK yeniden etkinleştirilene veya silme iptal edilene kadar.
|
||||
- Eğer **CMK** **devre dışı** veya **silinme** **beklemede** ise, KMS **anahtar döndürme işlemi** gerçekleştirmeyecektir, ta ki CMK yeniden etkinleştirilene veya silme iptal edilene kadar.
|
||||
|
||||
#### Manuel döndürme
|
||||
|
||||
- **Yeni bir CMK oluşturulması gerekir**, ardından yeni bir CMK-ID oluşturulur, bu nedenle **uygulamanızı** yeni CMK-ID'yi **referans almak için güncellemeniz gerekecektir**.
|
||||
- Bu süreci kolaylaştırmak için **bir anahtar kimliğine atıfta bulunmak için takma adlar kullanabilirsiniz** ve ardından sadece takma adın atıfta bulunduğu anahtarı güncelleyebilirsiniz.
|
||||
- Eski dosyaları şifrelemek için **eski anahtarları saklamanız gerekir**.
|
||||
- **Yeni bir CMK oluşturulması gerekir**, ardından yeni bir CMK-ID oluşturulur, bu nedenle **uygulamanızı** yeni CMK-ID'yi **referans almak** için **güncellemeniz** gerekecektir.
|
||||
- Bu süreci daha kolay hale getirmek için **bir anahtar kimliğine atıfta bulunmak için takma adlar kullanabilirsiniz** ve ardından sadece takma adın atıfta bulunduğu anahtarı güncelleyebilirsiniz.
|
||||
- Eski dosyaları şifrelemek için **eski anahtarları saklamanız** gerekir.
|
||||
|
||||
Yerel anahtar altyapınızdan anahtarları içe aktarabilirsiniz.
|
||||
Kendi yerel anahtar altyapınızdan anahtarları içe aktarabilirsiniz.
|
||||
|
||||
### Diğer ilgili KMS bilgileri
|
||||
|
||||
@@ -115,7 +115,7 @@ KMS, **CloudTrail** ile tam denetim ve uyum **entegrasyonuna** sahiptir; burada
|
||||
KMS politikası ile şunları yapabilirsiniz:
|
||||
|
||||
- Veri anahtarlarını kimlerin oluşturabileceğini ve bu anahtarlara hangi hizmetlerin erişim iznine sahip olduğunu sınırlayın.
|
||||
- Sistemlerin yalnızca şifreleme, yalnızca şifre çözme veya her ikisine erişimini sınırlayın.
|
||||
- Sistemlerin yalnızca şifreleme, yalnızca şifre çözme veya her ikisine de erişimini sınırlayın.
|
||||
- Sistemlerin bölgeler arasında anahtarlara erişimini sağlamak için tanımlayın (ancak bu önerilmez çünkü KMS'yi barındıran bölgede bir arıza, diğer bölgelerdeki sistemlerin kullanılabilirliğini etkiler).
|
||||
|
||||
Bölgeler arasında anahtarları senkronize edemez veya taşıyamaz/kopyalayamazsınız; yalnızca bölge arasında erişimi sağlamak için kurallar tanımlayabilirsiniz.
|
||||
@@ -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
|
||||
|
||||
@@ -147,7 +152,7 @@ aws kms describe-custom-key-stores
|
||||
../aws-persistence/aws-kms-persistence.md
|
||||
{{#endref}}
|
||||
|
||||
## Referanslar
|
||||
## References
|
||||
|
||||
- [https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user