← Blog'a dön
2026-08-05 | 0gulcandogan | Medium'dan aktar&305;ld&305; | 14 dk okuma

Vault’un Koruyucuları: Anahtarları Gerçekte Kim Elinde Tutuyor? Veri Koruma – 2. Bölüm

Guardians of the Vault: Who Really Holds the Keys, Data Protection Part-2

Merhaba arkadaşlar,

1. Bölümde Amazon S3 yetkilendirme, S3 şifreleme ve Amazon Macie konularını ele aldık. Bu sefer ise konuyu bir adım daha ileriye taşıyacağız.

İlk bakışta, bu seride ele aldığımız her şeyin tek bir amacı varmış gibi görünebilir: verileri şifrelemek. Bu doğru olsa da, çok daha büyük bir resim var. Bu makalenin sadece şifreleme anahtarlarını oluşturan, depolayan ve koruyan hizmetler hakkında olduğunu düşünebilirsiniz. Kısmen haklısınız. Amacım, size sıfırdan güvenli bir mimariyi nasıl kuracağınızı göstermek. Sadece hizmetlerin kendilerini değil, aynı zamanda bunların güçlü bir güvenlik temeli oluşturmak için nasıl birlikte çalıştıklarını da inceleyeceğiz.

Burada ele alınan her şey, AWS Certified Security Specialty (SCS-C03) sertifikasyonu için pratik bir kılavuz görevi de görüyor; bu sayede sadece sınav konularını değil, aynı zamanda bu hizmetlerin gerçek AWS ortamlarında nasıl kullanıldığını da anlamanıza yardımcı oluyor.

Bu makalede, AWS Key Management Service (AWS KMS), AWS CloudHSM, AWS Secrets Manager ve AWS Certificate Manager (ACM) hizmetlerinin iç işleyişini derinlemesine inceleyeceğiz. Umarım hazırsınızdır — hadi başlayalım.

Başlayalım! 🔥

KMS Anahtar Türleri: Aslında Kim Neye Sahip?

Sormanız gereken ilk soru şudur: Anahtar aslında nedir? Şifrelenmiş verilerin kilidini açan basit bir 1 ve 0 dizisi mi, yoksa KMS Anahtarı, Veri Anahtarı, Veri Anahtar Çifti veya HMAC Anahtarı gibi daha spesifik bir şey mi?

İkinci soru ise, o anahtarın sahibi ve yöneticisinin kim olduğudur. Daha önce “İnsan Dışı Kimlikler” başlıklı makalemi okuduysanız, sahipliğin anahtarın kendisi kadar önemli olduğunu zaten biliyorsunuzdur.

Bunlar tamamen farklı iki kavramdır ve er ya da geç muhtemelen kendinize “Hangi anahtar bana aitti?” diye sorarken bulacaksınız. Bu karışıklığı önlemek için önce anahtar sahipliğine bir göz atalım.

Sahiplik açısından KMS Anahtarları üç kategoriye ayrılır:

Simetrik ve Asimetrik KMS Anahtarları

Varsayılan olarak, bir KMS Anahtarı simetrik bir anahtardır. 256 bitlik AES-GCM algoritmasını kullanır ve AWS KMS'den asla dışarı çıkmaz. Sizin adınıza verileri şifreleyen neredeyse tüm AWS hizmetleri bu simetrik anahtar modeline dayanır.

Asimetrik bir KMS Anahtarı da oluşturabilirsiniz. Bu durumda, AWS KMS bir açık anahtar ve özel anahtar çifti oluşturur. Özellikle sertifika sınavlarında ve senaryo tabanlı sorularda sıklıkla gözden kaçan bir ayrıntı, asimetrik bir anahtarın ya şifreleme ya da dijital imzalama için kullanılabileceğidir; ancak asla her ikisi için aynı anda kullanılamaz.

Bu modelde, açık anahtar AWS KMS'den güvenli bir şekilde dışarı çıkabilir ve hatta indirilebilir. Ancak özel anahtar, hiçbir zaman düz metin olarak AWS KMS'den dışarı çıkmaz. AWS KMS, özel anahtarı her zaman hizmet içinde güvende tutar.

Veri Anahtarları ve Veri Anahtar Çiftleri (Aynı Ad, Farklı Anlam)

Veri Anahtarları bir KMS Anahtarı tarafından oluşturulabilir, ancak AWS KMS dışında kullanılmak üzere tasarlanmıştır. En yaygın kullanım alanı, AWS Şifreleme SDK'sı ile istemci tarafında şifreleme yapmaktır.

GenerateDataKey API'si, aynı anahtarın iki sürümünü döndürür: bir düz metin sürümü ve bir şifreli sürüm. Buna karşılık, GenerateDataKeyWithoutPlaintext yalnızca şifreli sürümü döndürür. Bu, genellikle verileri hemen şifrelemeniz gerekmediğinde tercih edilir.

İki sürümün alınması, bunun asimetrik bir anahtar gibi görünmesine neden olsa da, Veri Anahtarı yine de simetrik bir anahtardır. Her iki çıktı da aynı anahtar materyalini temsil eder. Biri düz metin halindeyken, diğeri bir KMS Anahtarı ile şifrelenmiştir.

Öte yandan, bir Veri Anahtar Çifti, AWS KMS dışında kullanılmak üzere tasarlanmış asimetrik bir anahtar çifti. Bu, istemci tarafında şifreleme, dijital imzalama ve imza doğrulama için tasarlanmıştır.

Desteklenen anahtar çifti türleri şunlardır:

Bu modelde, özel anahtar, seçtiğiniz simetrik KMS Anahtarı kullanılarak şifrelenir ve güvenli bir şekilde depolanır.

Anahtar Döndürme: Arka Planda Aslında Neler Değişiyor

Otomatik Döndürme, AWS'nin önerdiği yaklaşımdır ve çoğu zaman kullanacağınız yöntem de budur. Bu özelliği etkinleştirdiğinizde, AWS tüm döndürme sürecini sizin adınıza halleder.

Unutulmaması gereken en önemli nokta şudur: Dönüşüm, KMS Anahtarının kendisini değiştirmez; yalnızca anahtar materyalini değiştirir. Uygulamalarınız aynı Anahtar Kimliğine başvurmaya devam eder, bu nedenle sizin açınızdan hiçbir şey değişmez. Anahtar Kimliği aynı kaldığından, uygulamalarınızı veya yapılandırmalarınızı güncellemenize gerek yoktur.

Peki, eski verilerinize ne olur?

İşte burada tasarım gerçekten zarif bir hal alıyor. AWS, anahtar materyalinin önceki tüm sürümlerini saklar; bu da, yıllar önce daha eski bir anahtar sürümüyle şifrelenmiş verileri hala şifresini çözebileceğiniz anlamına gelir.

Yeni verileri şifrelerken, hangi anahtar materyali sürümünün kullanılacağını seçemezsiniz. AWS, her zaman o anda etkin olan anahtar materyali kullanarak şifreleme yapar.

Son bir şey daha. AWS Yönetilen Anahtarı veya AWS'ye Ait Anahtar kullanıyorsanız, anahtar rotasyonu konusunda hiç endişelenmenize gerek yoktur. AWS bunu otomatik olarak halleder ve tüm süreci arka planda yönetir.

Anahtar İlkeleri ve Yetkiler: Erişimi Gerçekte Kim Kontrol Ediyor?

Şimdiye kadar, anahtarı kimin oluşturduğunu ve kimin sahibi olduğunu konuştuk. Peki, “Bu anahtarı aslında kim kullanabilir?” sorusuna ne demeli? İşte burada Anahtar İlkeleri devreye girer.

Anahtar Politikası, tek bir KMS Anahtarına eklenmiş, JSON tabanlı bir kaynak politikasıdır. Her KMS Anahtarının tam olarak bir Anahtar Politikası vardır ve bu politika genellikle dört ana bölümden oluşur.

İlk bölüm, AWS Hesap Kökü içindir. Bu, AWS KMS’nin en çok yanlış anlaşılan kısımlarından biridir. Kök kullanıcıya Şifrele veya Şifre Çöz gibi kriptografik işlemleri gerçekleştirme izni vermez. Bunun yerine, IAM Politikalarının o anahtar üzerinde izinler vermesine olanak tanır. Bu ifadeyi kaldırırsanız, IAM aracılığıyla verdiğiniz tüm İzin Ver (Allow) izinleri anında geçersiz hale gelir (Engelle (Deny) ifadeleri ise hâlâ çalışır). Ayrıca, kök hesabın kendisi asla silinemeyeceği için anahtarınızın kalıcı olarak erişilemez hale gelmemesini de sağlar.

İkinci bölüm, Anahtar Yöneticileri içindir. Bu kimlikler anahtarı yönetebilir. Anahtar Politikasını güncelleyebilir, anahtarı etkinleştirebilir veya devre dışı bırakabilir ya da silinmesi için zamanlayabilirler. Yapamayacakları şey ise, anahtarı Şifrele veya Şifre Çöz gibi kriptografik işlemler için kullanmaktır. Ancak burada önemli bir ayrıntı vardır. Anahtar Politikasını değiştirebildikleri için, ihtiyaç duydukları her an kendilerine anahtarı kullanma izni verebilirler.

Üçüncü bölüm, Anahtar Kullanıcıları içindir. Bunlar, anahtarı fiilen kullanan kimliklerdir. Şifreleme, Şifre Çözme, Yeniden Şifreleme, Veri Anahtarı Oluşturma ve Anahtar Tanımlama gibi şifreleme işlemlerini gerçekleştirebilirler.

Son bölümde ise Yetki Verme işlemleri oluşturabilirsiniz.

Bir İzin'i, birine evinizin anahtarını geçici olarak vermek olarak düşünebilirsiniz. Bu, belirli bir kimliğe, belirli bir KMS Anahtarı üzerinde belirli işlemleri gerçekleştirme konusunda geçici izin verir. Elbette, birkaç kural vardır.

İlk olarak, bir Yetki her zaman yalnızca bir KMS Anahtarı için geçerlidir. Yetki sahibi yalnızca bir IAM Kullanıcısı, IAM Rolü veya Federasyonlu Kullanıcı/Rol olabilir. Bir IAM Grubu, AWS Organizasyonu veya benzer kimlikler için Yetki oluşturamazsınız.

Bir diğer önemli kural ise, Grant'lerin yalnızca İzin (Allow) izinlerini desteklemesidir. Reddetme (Deny) Grant'i oluşturmanın bir yolu yoktur.

Ayrıca, AWS Yönetim Konsolu'ndan Grant oluşturamazsınız. Bunun yerine AWS API'sini, AWS CLI'yi veya bir AWS SDK'sını kullanmanız gerekir.

Son olarak, sertifika sınavlarında sıklıkla karşımıza çıkan küçük bir ayrıntı var. Bir Grant oluşturduktan sonra, AWS KMS’nin nihai tutarlılık modelini izlemesi nedeniyle kısa bir gecikme yaşayabilirsiniz. Grant’i hemen kullanmanız gerekiyorsa, bekleme süresini atlamak için Grant oluşturma sırasında döndürülen GrantToken’ı eklemeniz yeterlidir.

Erişim Bulmacası: Adım Adım Açıklama

Şimdi bunu basit bir senaryo ile anlayalım.

Üç farklı KMS Anahtarımız olduğunu varsayalım.

Şimdi kimin neye erişebileceğine bir bakalım.

Alana ile başlayalım. Anahtar Politikası, IAM izinlerinin değerlendirilmesine izin verdiği ve IAM ona erişim izni verdiği için A Anahtarını kullanabilir. Ayrıca, Anahtar Politikasında açıkça izin verildiği için C Anahtarını da kullanabilir. Ancak, Anahtar B'yi kullanamaz çünkü bu anahtar IAM'yi tamamen göz ardı eder ve Alana, Anahtar Politikasında listelenmemiştir.

Sırada Danny var. O, yalnızca Anahtar B'yi kullanabilir çünkü Anahtar Politikasında açıkça izin verilmiştir. Anahtar C'de ise bir Açık Reddetme tarafından engellenmiştir ve bir Açık Reddetme mevcut olduğunda, başka hiçbir izin bunu geçersiz kılamaz.

Şimdi Carlos'a bakalım. A Anahtarı'nda IAM, ona yalnızca Şifreleme işlemini gerçekleştirme izni verir. B Anahtarı'nda ise Anahtar Politikası'nda doğrudan listelendiği için tam erişime sahiptir. Bu durumda, IAM izinlerinin ne olduğu önemli değildir çünkü B Anahtarı, IAM'yi hiç değerlendirmez. Anahtar C'de ise, tıpkı Danny gibi, Açık Reddetme kuralı nedeniyle engellenir.

Son olarak Jorge'ye gelelim. A Anahtarı veya B Anahtarı üzerinde hiçbir izni yoktur. Ancak C Anahtarı üzerinde, anahtarı kullanmak için tam erişim hakkına sahiptir ve ayrıca delege edilmiş erişim için Yetki Belirlemeleri oluşturmasına da izin verilmiştir.

Bu senaryodan tek bir şey hatırlayacaksanız, şunu unutmayın:

AWS KMS'de Anahtar Politikası, kapı bekçisidir.

IAM İlkeleri tek başlarına kapıyı açamaz. Öncelikle Anahtar Politikası, "Evet, IAM izinleri bu anahtara erişimi kontrol edebilir" demelidir. Anahtar Politikası bir Açık Reddetme içeriyorsa, süreç burada sona erer. Kimliğin AdministratorAccess veya başka herhangi bir IAM İzin iznine sahip olması fark etmez. Kapı kapalı kalır.

Bu kuralı anladığınızda, çoğu AWS KMS yetkilendirme senaryosunu çözmek çok daha kolay hale gelir.

CloudHSM: KMS Yeterli Olmadığında

Şimdiye kadar, kriptografik anahtarlarımızı AWS KMS ile güvenli bir şekilde yönetiyorduk. Peki ya bir gün biri size, “Anahtarlarımın AWS’nin paylaşımlı altyapısında bulunmasını istemiyorum. Yalnızca bana ait özel bir donanımda depolanmasını istiyorum,” derse ne olur? İşte tam da bu noktada AWS CloudHSM devreye girer.

Donanım Güvenlik Modülü (HSM), şifreleme anahtarlarını korumak için tasarlanmış, fiziksel ve kurcalanmaya dayanıklı bir cihazdır. AWS CloudHSM, FIPS 140–2 Seviye 3 sertifikasına sahiptir; bu da dijital imza işlemi gerçekleştiriyorsanız, kendi Sertifika Yetkililiğinizi (CA) işletiyorsanız veya katı yasal gereklilikleri karşılamanız gerekiyorsa bu hizmeti ideal bir seçim haline getirir.

CloudHSM ile AWS KMS arasındaki en büyük fark tek bir cümleyle özetlenebilir:

KMS’de, altta yatan donanım paylaşılır. CloudHSM’de ise donanım tamamen size aittir.

CloudHSM ile neler yapabilirsiniz?

CloudHSM nasıl çalışır?

Her şey bir Küme oluşturmakla başlar. Bir küme, yüksek kullanılabilirlik sağlamak için farklı Kullanılabilirlik Bölgelerine dağıtılmış birden fazla HSM'den oluşur. Bir küme oluşturmadan önce bir VPC'ye ihtiyacınız olacaktır.

Ayrıca, hatırlamaya değer küçük ama önemli bir ayrıntı daha vardır.

Bir küme oluşturduğunuzda, AWS otomatik olarak:

Bir EC2 örneğini CloudHSM kümenize bağlamak istiyorsanız, yapmanız gereken sadece iki şey vardır:

  1. EC2 örneğini CloudHSM Güvenlik Grubuna ekleyin.
  2. CloudHSM İstemci yazılımını yükleyin.

CloudHSM kullanıcı rolleri

CloudHSM'de dört adet yerleşik kullanıcı rolü bulunur.

Güvenlik özellikleri

Özellikle akılda tutulması gereken iki güvenlik özelliği vardır.

İzleme ve günlük kaydı

İzleme açısından, iki CloudWatch metriği özellikle yararlıdır:

Günlük kaydı için iki ayrı hizmet vardır:

Son olarak, hatırlamaya değer bir ayrıntı daha var. CloudHSM Denetim Günlükleri devre dışı bırakılamaz. Ayrıca, bu günlüklerin CloudWatch Logs'a gönderilmesi zorunludur.

Secrets Manager: Sabit Kodlanmış Şifrelerin Kaldırılması

Secrets Manager, şifreleri, API anahtarlarını, veritabanı kimlik bilgilerini ve gizli kalması gereken diğer her şeyi merkezileştirir ve sabit kodlanmış değerleri basit bir API çağrısıyla değiştirir. Dönüşüm, RDS tarzı kimlik bilgileri için yerleşiktir ve Lambda aracılığıyla diğer her şeye genişletilebilir. Gizli bilgiler KMS ile şifrelenir ve etkinlikler CloudTrail ve CloudWatch aracılığıyla tamamen denetlenebilir.

Erişim, hem kimlik tabanlı IAM ilkeleri hem de gizli bilgiye doğrudan eklenmiş kaynak tabanlı ilkeler aracılığıyla sağlanır ve hesaplar arası paylaşımı mümkün kılan da bu ikinci seçenektir.

Bir sırrı hesaplar arasında paylaşmak üç adımda gerçekleşir. İlk olarak, kullanıcının bulunduğu hesapta, sırrın ARN'sine secretsmanager:GetSecretValue ve KMS anahtarının ARN'sine kms:Decrypt izni veren bir satır içi ilke ekleyin. İkinci olarak, sırrı barındıran hesapta, KMS anahtarı ilkesini düzenleyerek söz konusu kullanıcıya kms:Decrypt ve kms:DescribeKey izinlerini verin. Üçüncü olarak, yine sırrı barındıran hesapta, sırrın kendisine GetSecretValue izni veren kaynak tabanlı bir ilke ekleyin; ancak bu son adımın CLI aracılığıyla gerçekleştirilmesi gerekir, çünkü konsol bunu desteklemez.

Sertifika Yöneticisi: Otomatik Güven

Şimdiye kadar, kriptografik anahtarlarımızı nasıl oluşturacağımızı, yöneteceğimizi ve koruyacağımızı öğrendik. Peki, bu anahtarları kullanan sunucunun gerçekten güvenilir olduğunu nasıl anlarız? İşte burada Dijital Sertifikalar devreye girer.

Dijital sertifika, bir Açık Anahtara güvenebileceğimizi kanıtlar. Bu güven, bir Sertifika Yetkilisi (CA) tarafından sağlanır.

İki ana Sertifika Yetkilisi türü vardır.

Hatırlamaya değer başka bir kavram daha vardır: Sertifika İptal Listesi (CRL).

Her Sertifika Yetkilisi, artık güvenilir olmayan sertifikaların bir listesini yayınlar. Bu sayede, iptal edilmiş veya güvenliği ihlal edilmiş sertifikalar istemciler tarafından otomatik olarak reddedilir.

İşte tam da bu noktada AWS Sertifika Yöneticisi (ACM), işleri çok daha kolaylaştırır.

ACM ile şunları yapabiliriz:

İşte kolayca unutulabilen ve sertifika sınavlarında sıklıkla karşımıza çıkan bir ayrıntı.

AWS Certificate Manager bölgesel bir hizmettir!!!!

Örneğin, eu-west-2 bölgesindeki bir Uygulama Yük Dengeleyicisi (ALB) için sertifika talep ediyorsak, sertifikanın da eu-west-2 bölgesinde oluşturulması gerekir.

Bununla ilgili önemli bir istisna vardır.

Amazon CloudFront kullanıyorsak, dağıtımın trafiği gerçekte nereden sunduğuna bakılmaksızın sertifika her zaman us-east-1 (Kuzey Virginia) bölgesinde bulunmalıdır.

Peki, bir Genel Sertifika talep ederken nelere ihtiyacımız var?

Sadece iki şeye:

Etki alanı sahipliğini doğrulamanın iki yolu vardır.

Peki ya kendi Özel Sertifikalarımızı vermek istersek?

Bu durumda, önce ACM Özel Sertifika Otoritesini (Özel CA) devreye almamız gerekir.

Bunun için basit bir sertifika hiyerarşisi oluşturmamız gerekir.

Son olarak, hatırlanması gereken bir nokta daha var.

ACM Özel CA ücretsiz değildir. Oluşturduğumuz her Sertifika Yetkilisi için aylık bir ücret öderiz; ayrıca, bu yetkilinin verdiği her sertifika için ek bir ücret de öderiz.

Bu nedenle Özel CA, müşteriye yönelik internet uygulamaları için değil, bir kuruluş içindeki iç güven için tasarlanmıştır.

Son Dans

Bu bölümde ele aldığımız her hizmet, aynı temel soruyu farklı bir bakış açısıyla yanıtlar: Anahtarlarımızı kime emanet etmeliyiz ve bu güvenin ne kadarını devretmeye hazırız?

Şimdiye kadar, veri korumanın sadece verileri şifrelemekten çok daha fazlası olduğunu gördük. Aynı zamanda şifreleme anahtarlarımızı, gizli bilgilerimizi ve sertifikalarımızı doğru şekilde yönetmek anlamına da gelir.

Bu noktaya kadar okuduğunuz ve bu makaleyi okumak için zaman ayırdığınız için çok teşekkür ederim.

Bir sonraki bölümde görüşmek üzere. O zamana kadar kendinize iyi bakın. 💛

Kaynakça

Orijinal: https://medium.com/@0gulcandogan/guardians-of-the-vault-who-really-holds-the-keys-data-protection-part-2-e1f58382d933?source=rss-746132cb79a8------2

Okuduğunuz için teşekkürler

Bu yazı işinize yaradıysa paylaşmayı veya logdaki diğer yazıları keşfetmeyi düşünebilirsiniz.

← Tüm yaz&305;lar Yazar hakk&305;nda