Key Management Service (KMS)

Temeller

Anahtar Tipleri

  • Simetrik (AES-256 anahtarlar)

    • Şifreleme ve çözme işlemleri için kullanılan tek bir şifreleme anahtarı vardır.

    • KMS ile entegre edilmiş AWS servisleri Simetrik CMK’ları kullanır.

    • KMS anahtarına şifrelenmemiş şekilde asla erişemezsiniz (kullanmak için KMS API çağrısı yapmanız gerekir).

  • Asimetrik (RSA ve ECC anahtar çiftleri)

    • Açık Anahtar (Şifreleme) ve Özel Anahtar (Şifre Çözme) çifti.

    • Şifreleme/Çözme veya İmzalama/Doğrulama işlemlerinde kullanılır.

    • Açık anahtar indirilebilir, ancak özel anahtara şifrelenmemiş şekilde erişemezsiniz.

    • Kullanım örneği: KMS API’sini çağıramayan kullanıcılar için AWS dışında şifreleme işlemleri.

Veri İletiminde Şifreleme (SSL/TLS)

  • Veri, gönderilmeden önce şifrelenir ve alındıktan sonra çözülür.

  • TLS sertifikaları, şifrelemeye yardımcı olur (HTTPS).

  • Aktarım sırasında şifreleme, ortadaki adam saldırılarını (MITM) engeller.

TLS şifrelemenin anlatımı

AWS KMS (Key Management Service)

  • AWS hizmetlerinde “şifreleme” ifadesini duyduğunuzda, büyük olasılıkla KMS kullanılıyordur.

  • AWS, şifreleme anahtarlarını bizim için yönetir.

  • IAM ile yetkilendirme için tamamen entegredir.

  • Verilerinize erişimi kontrol etmenin kolay bir yolunu sunar.

  • CloudTrail kullanarak KMS anahtar kullanımını denetleyebilirsiniz.

  • Çoğu AWS hizmetiyle (EBS, S3, RDS, SSM vb.) sorunsuz şekilde entegredir.

Önemli Not:

  • Sırlarınızı asla düz metin (plaintext) olarak, özellikle de kodunuzda saklamayın!

  • KMS anahtar şifrelemesi API çağrılarıyla (SDK, CLI) da kullanılabilir.

  • Şifrelenmiş sırlar, kodda veya ortam değişkenlerinde saklanabilir.

KMS Anahtar Türleri:

  • AWS Owned Keys (ücretsiz): SSE-S3, SSE-SQS, SSE-DDB (varsayılan anahtar)

  • AWS Managed Key (ücretsiz): aws/service-name (örnek: aws/rds veya aws/ebs)

  • Müşteri tarafından KMS’de oluşturulan anahtarlar: 1 $ / ay

  • Müşteri tarafından içe aktarılan anahtarlar: 1 $ / ay

  • Ek olarak: KMS API çağrısı ücreti (0.03 $ / 10.000 çağrı)

Otomatik Anahtar Rotasyonu:

  • AWS tarafından yönetilen KMS anahtarı: Her yıl otomatik yenileme

  • Müşteri tarafından yönetilen KMS anahtarı: (etkinleştirilmesi gerekir) otomatik veya isteğe bağlı yenileme

KMS ile snapshot şifreleme

KMS Anahtar Poliçeleri

  • KMS anahtarlarına erişimi kontrol eder, S3 bucket politikalarına benzer.

  • Farkı: Bu politikalar olmadan erişimi kontrol edemezsiniz.

Varsayılan KMS Anahtar Politikası (Default KMS Key Policy):

  • Belirli bir KMS Anahtar Politikası sağlamazsanız otomatik olarak oluşturulur.

  • Root kullanıcıya (yani tüm AWS hesabına) anahtara tam erişim izni verir.

Özel KMS Anahtar Politikası (Custom KMS Key Policy):

  • KMS anahtarına erişebilecek kullanıcıları ve rollerini tanımlar.

  • Anahtarı yönetebilecek kişileri tanımlar.

Hesaplar Arasında Snapshot Kopyalama

  1. Kendi KMS Anahtarınız (Customer Managed Key) ile şifrelenmiş bir snapshot oluşturun.

  2. Hesaplar arası erişime yetki vermek için bir KMS Anahtar Politikası ekleyin.

  3. Şifrelenmiş snapshot’ı paylaşın.

  4. Hedef hesapta, snapshot’ın bir kopyasını oluşturun ve kendi hesabınızdaki bir CMK ile şifreleyin.

KMS Key Policy Örneği:

  • Belirli bir hedef hesap ve rolün bu anahtarı kullanmasına izin verir.

  • kms:Decrypt ve kms:CreateGrant yetkilerini tanımlar.

  • Koşullar (Condition) ile yalnızca belirli servis ve hesaplardan kullanım kısıtlanır.

Bir KMS Poliçesi örneği

S3 Replikalarında Şifreleme:

  • Şifrelenmemiş nesneler ve SSE-S3 ile şifrelenmiş nesneler varsayılan olarak replikasyon yapılır.

  • SSE-C (müşteri tarafından sağlanan anahtar) ile şifrelenmiş nesneler de replikasyon yapılabilir.

SSE-KMS ile şifrelenmiş nesneler için:

  • Hedef bucket içinde hangi KMS anahtarının kullanılacağını belirtin.

  • Hedef anahtar için KMS Anahtar Politikasını uyarlayın.

  • Kaynak KMS anahtarı için kms:Decrypt ve hedef KMS anahtarı için kms:Encrypt yetkilerine sahip bir IAM rolü tanımlayın.

  • KMS throttling hataları alabilirsiniz; bu durumda Service Quotas artırımı talep edebilirsiniz.

Multi-region KMS anahtarları:

  • Kullanılabilir, ancak Amazon S3 bunları bağımsız anahtarlar olarak değerlendirir.

  • Nesne yine de çözülüp yeniden şifrelenir.

KMS ile Şifrelenmiş AMI Paylaşım Süreci

  1. Kaynak hesapta AMI, o hesaba ait bir KMS anahtarı ile şifrelenir.

  2. Hedef AWS hesabına karşılık gelen Launch Permission (başlatma izni) eklemek için AMI’nin görüntü özelliği değiştirilmelidir.

  3. AMI’nin referans verdiği snapshot’ı şifrelemek için kullanılan KMS anahtarları, hedef hesap veya IAM rolü ile paylaşılmalıdır.

  4. Hedef hesaptaki IAM kullanıcı/rol, aşağıdaki izinlere sahip olmalıdır:

    • DescribeKey

    • ReEncrypt*

    • CreateGrant

    • Decrypt

  5. AMI’den bir EC2 instance başlatırken, isteğe bağlı olarak hedef hesap kendi KMS anahtarını belirterek hacimleri yeniden şifreleyebilir.

AMI İle Cross-Account işlemlerde KMS keyi karşıya aktarılmaz

Last updated