0Pricing
Cloud & IT Cert Prep · Ders

KMS, ACM ve Şifreleme Örüntüleri

Şifreleme anahtarlarını AWS KMS ile yönetin, TLS sertifikalarını ACM ile sağlayıp yenileyin ve istemci tarafı, sunucu tarafı ve aktarım sırasında şifreleme arasından seçim yapın.

KMS, ACM ve Şifreleme Örüntüleri, CoddyKit'te ücretsiz bir Cloud & IT Cert Prep dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Cloud & IT Cert Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Cloud & IT Cert Prep kursu toplamda 4 dersten oluşur.

AWS'de Şifreleme: Genel Bakış

Şifreleme, depolama ortamı ele geçirilse veya başka yollarla erişim sağlansa bile verilerin gizliliğini koruyan temel bir güvenlik kontrolüdür. AWS, rest durumundaki (veritabanlarında, S3'te ve EBS'de depolanan) ve aktarım sırasındaki (ağlar üzerinden taşınan) veriler için şifreleme sağlar. Temel hizmetler şunlardır: AWS Key Management Service (KMS), rest durumundaki şifreleme için şifreleme anahtarlarını yönetir. AWS Certificate Manager (ACM), aktarım sırasındaki şifreleme için TLS sertifikalarını sağlar ve yönetir. Her birinin ne zaman ve nasıl uygulanacağını anlamak, SAA-C03 Security Architecture alanı için kritik öneme sahiptir.

# Encryption coverage on AWS:
# At rest (KMS):
#   S3, EBS, RDS, DynamoDB, EFS, SQS,
#   Lambda env vars, Secrets Manager, SSM Parameter Store

# In transit (ACM/TLS):
#   ALB listeners (HTTPS), API Gateway, CloudFront,
#   Direct Connect, VPN, inter-service communication

# Both:
#   S3 Server-Side Encryption + HTTPS only policy

AWS KMS: Key Management Service

AWS KMS, şifreleme anahtarları oluşturmak ve bunları denetlemek için tamamen yönetilen bir hizmettir. KMS, anahtarları korumak için Hardware Security Modules (HSMs) kullanır; anahtar materyali şifrelenmeden HSM'den hiçbir zaman çıkmaz. KMS, sunucu tarafı şifreleme için AWS hizmetlerinin çoğuyla bütünleşir. Anahtar türleri şunlardır: AWS Managed Keys (ücretsizdir, her yıl otomatik olarak döndürülür ve doğrudan denetleyemezsiniz), Customer Managed Keys (CMK) (her biri ayda 1 ABD dolarıdır; döndürmeyi, anahtar politikasını ve silmeyi denetlersiniz). Custom Key Store, özel HSM gerektiren uyumluluk gereksinimleri için kendi CloudHSM kümenizi kullanır.

# Create a Customer Managed Key (CMK)
aws kms create-key \
  --description 'Production database encryption key' \
  --key-usage ENCRYPT_DECRYPT \
  --origin AWS_KMS \
  --tags TagKey=Purpose,TagValue=RDS-Encryption

# Create an alias for the key
aws kms create-alias \
  --alias-name alias/prod-db-key \
  --target-key-id arn:aws:kms:us-east-1:123:key/abc-def

# CMK costs: $1/month + $0.03 per 10,000 API calls

KMS Key Policies ve Grants

Her KMS anahtarının, anahtarı kimlerin kullanabileceğini ve yönetebileceğini denetleyen kaynak tabanlı bir politika olan bir key policy'si vardır. Kimlik tabanlı IAM policies'in aksine key policies zorunludur: IAM policies'in yürürlüğe girebilmesi için key policy'nin erişimi açıkça vermesi gerekir. En iyi uygulama, key administration (anahtarı kimlerin yönetebileceği) ile key usage (hangi hizmetlerin ve rollerin şifreleme/şifre çözme yapabileceği) görevlerini ayırmaktır. Geçici olarak devredilen erişim için key grants kullanın; örneğin key policy'yi değiştirmeden bir EMR kümesine bir iş için KMS anahtarını geçici olarak kullanma yetkisi verebilirsiniz.

# KMS key policy: grant RDS and admin access
{
  'Statement': [
    {
      'Sid': 'Enable root account full access',
      'Principal': {'AWS': 'arn:aws:iam::123:root'},
      'Action': 'kms:*',
      'Effect': 'Allow'
    },
    {
      'Sid': 'Allow RDS to use this key',
      'Principal': {'Service': 'rds.amazonaws.com'},
      'Action': ['kms:Encrypt','kms:Decrypt','kms:GenerateDataKey'],
      'Effect': 'Allow'
    }
  ]
}

KMS Envelope Encryption

KMS, büyük miktardaki veriyi verimli biçimde korumak için envelope encryption kullanır. Bir KMS anahtarıyla doğrudan 4 KB'tan daha büyük verileri şifreleyemezsiniz. Bunun yerine KMS bir Data Encryption Key (DEK) üretir; bu, gerçek verilerinizi yerel olarak şifrelemek için kullanılan rastgele bir anahtardır. Ardından DEK, KMS anahtarınız (Key Encryption Key) tarafından şifrelenir. Şifrelenmiş DEK'yi, şifrelenmiş verilerin yanında saklarsınız. Şifreyi çözmek için önce DEK'nin şifresini çözmesi amacıyla KMS'yi çağırır, ardından verilerin şifresini yerel olarak çözmek için düz metin DEK'yi kullanırsınız. S3, EBS ve RDS şifrelemesi temel olarak bu şekilde çalışır.

# Generate a Data Key (for envelope encryption)
aws kms generate-data-key \
  --key-id alias/my-key \
  --key-spec AES_256

# Response contains:
# Plaintext: base64-encoded DEK (use to encrypt data locally)
# CiphertextBlob: KMS-encrypted DEK (store alongside data)

# To decrypt:
# 1. Call kms:Decrypt(CiphertextBlob) -> plaintext DEK
# 2. Use plaintext DEK to decrypt data locally
# 3. Zeroize plaintext DEK from memory
aws kms decrypt --ciphertext-blob fileb://encrypted-dek.bin

KMS Key Rotation

Key rotation, kriptografik anahtar materyalini düzenli aralıklarla değiştiren ve bir anahtar ele geçirilirse maruz kalma süresini sınırlayan bir güvenlik en iyi uygulamasıdır. Customer Managed Keys için yıllık otomatik rotation özelliğini etkinleştirebilirsiniz; KMS yeni anahtar materyali oluşturur ve bunu yeni şifreleme işlemlerinde kullanırken mevcut verilerin şifresini çözmek için eski anahtar materyalini korur. AWS Managed Keys her yıl otomatik olarak döndürülür. Imported key material otomatik rotation'ı DESTEKLEMEZ (manuel olarak döndürmeniz gerekir). Rotation sonrasında yeni KMS işlemleri, uygulamada değişiklik yapmadan yeni anahtar materyalini otomatik olarak kullanır.

# Enable automatic annual key rotation
aws kms enable-key-rotation \
  --key-id alias/prod-db-key

# Verify rotation is enabled
aws kms get-key-rotation-status \
  --key-id alias/prod-db-key

# Manual rotation (for imported key material):
# 1. Create a new CMK
# 2. Update all services to use new key
# 3. Re-encrypt existing data with new key
# 4. Schedule old key for deletion (minimum 7-day waiting period)

S3 Server-Side Encryption Seçenekleri

S3, üç sunucu tarafı şifreleme seçeneğini destekler: SSE-S3 — S3, AES-256 kullanarak anahtarları yönetir; ücretsizdir ve en az düzeyde denetim sunar. SSE-KMS — bir KMS anahtarı (AWS managed veya CMK) kullanır, CloudTrail'de anahtar denetim izi sağlar, key policies'i destekler ve KMS API çağrısı başına ücret alır. SSE-C — anahtar materyalini her istekle birlikte sağlar ve yönetirsiniz; S3 anahtarı hiçbir zaman saklamaz. Anahtarı kimlerin, ne zaman kullandığı üzerinde denetim kaydı gerektiğinde SSE-KMS kullanın. Basitlik ve maliyetin önemli olduğu düşük hassasiyetli veriler için SSE-S3 kullanın. Şifreleme olmadan yapılan PutObject işlemlerini reddeden bir bucket policy ile şifrelemeyi zorunlu kılın.

# Enforce SSE-KMS on all new S3 objects
aws s3api put-bucket-policy \
  --bucket my-secure-bucket \
  --policy '{
    "Statement": [{
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::my-secure-bucket/*",
      "Condition": {
        "StringNotEquals": {
          "s3:x-amz-server-side-encryption": "aws:kms"
        }
      }
    }]
  }'

# Set default encryption for bucket
aws s3api put-bucket-encryption \
  --bucket my-secure-bucket \
  --server-side-encryption-configuration '{"Rules":[{"ApplyServerSideEncryptionByDefault":{"SSEAlgorithm":"aws:kms","KMSMasterKeyID":"alias/my-key"}}]}'

AWS Certificate Manager (ACM)

AWS Certificate Manager (ACM), AWS hizmetleri için SSL/TLS certificates sağlar, yönetir ve bunları ücretsiz olarak otomatik yeniler. ACM certificates, ALB, NLB, CloudFront, API Gateway, and AppSync ile kullanılabilir. ACM, certificate lifecycle'ını otomatik olarak yönetir; certificates'ı sürelerinin dolmasından 60 gün önce yeniler ve yenilenen certificates'ı sorunsuz biçimde dağıtır. Sahip olduğunuz alan adları için (DNS veya e-posta yoluyla doğrulanmış) certificates isteyebilir ya da üçüncü taraf certificates içe aktarabilirsiniz. ACM certificates NOT indirilebilir; ilişkilendirildikleri AWS hizmetine bağlıdırlar.

# Request a public ACM certificate
aws acm request-certificate \
  --domain-name app.example.com \
  --subject-alternative-names '*.example.com' \
  --validation-method DNS

# ACM returns a CNAME record to add to Route 53
# Add the CNAME -> ACM validates domain ownership
# Certificate is issued and auto-renews annually

# Attach to ALB listener (HTTPS:443)
aws elbv2 create-listener \
  --load-balancer-arn <ALB-ARN> \
  --protocol HTTPS --port 443 \
  --certificates CertificateArn=arn:aws:acm:us-east-1:123:certificate/abc \
  --default-actions Type=forward,TargetGroupArn=<TG-ARN>

ACM Private Certificate Authority

ACM Private CA (Certificate Authority), dahili kaynaklar (EC2 örnekleri, kapsayıcılar, dahili API'ler ve IoT cihazları) için sertifika düzenlemenizi sağlayan, tamamen yönetilen özel bir CA hiyerarşisi oluşturmanıza olanak tanır. İnternete açık hizmetlerle kullanılan genel ACM sertifikalarının aksine, özel CA sertifikaları herhangi bir dahili ana bilgisayar adı veya IP adresi için düzenlenebilir. Private CA'yı şu amaçlarla kullanabilirsiniz: mikro hizmetler arasında karşılıklı TLS (mTLS), VPN için sertifika tabanlı kimlik doğrulama ve dahili PKI için uyumluluk gereksinimleri. Private CA için CA başına aylık 400 ABD doları ve düzenlenen sertifika başına 0,75 ABD doları ücret alınır.

# Create ACM Private Certificate Authority
aws acm-pca create-certificate-authority \
  --certificate-authority-type ROOT \
  --certificate-authority-configuration '{
    "KeyAlgorithm": "RSA_2048",
    "SigningAlgorithm": "SHA256WITHRSA",
    "Subject": {
      "Country": "US",
      "Organization": "Example Corp",
      "CommonName": "Example Corp Internal CA"
    }
  }'

# Issue certificate from private CA
aws acm request-certificate \
  --domain-name internal-service.example.internal \
  --certificate-authority-arn arn:aws:acm-pca:us-east-1:123:certificate-authority/xxx

EBS ve RDS Şifrelemesi

EBS birimi şifrelemesi için şifrelemeyi birim oluşturulurken etkinleştirin (veya mevcut bir birimi şifreleme etkin olacak şekilde kopyalayın). Anlık görüntüler de dahil olmak üzere birimdeki tüm veriler, belirttiğiniz KMS anahtarı kullanılarak şifrelenir. EBS şifrelemesi işletim sistemi açısından saydamdır; uygulamada değişiklik yapmanız gerekmez. RDS şifrelemesi için bu özelliği DB örneğini oluştururken etkinleştirin; mevcut şifrelenmemiş bir RDS örneğini doğrudan şifreleyemezsiniz. Geçici çözüm olarak, şifrelenmemiş bir örnekten şifrelenmiş bir anlık görüntü oluşturun ve ardından bunu yeni bir şifrelenmiş örneğe geri yükleyin. Hem EBS hem de RDS için şifrelenmiş anlık görüntüler kopyalandıklarında da şifrelenmiş olarak kalır.

# Enable account-level EBS default encryption
aws ec2 enable-ebs-encryption-by-default
aws ec2 modify-ebs-default-kms-key-id \
  --kms-key-id alias/prod-ebs-key

# Encrypt an existing unencrypted RDS instance:
# 1. Create unencrypted snapshot
aws rds create-db-snapshot \
  --db-instance-identifier mydb \
  --db-snapshot-identifier mydb-plain-snapshot

# 2. Copy snapshot with encryption
aws rds copy-db-snapshot \
  --source-db-snapshot-identifier mydb-plain-snapshot \
  --target-db-snapshot-identifier mydb-encrypted-snapshot \
  --kms-key-id alias/prod-db-key

İstemci Tarafı ve Sunucu Tarafı Şifrelemesi

Sunucu tarafı ve istemci tarafı şifrelemesi arasındaki farkı anlamak SAA-C03 sınavı için önemlidir. Sunucu tarafı şifrelemesi: AWS, verileri aldıktan sonra şifreler ve teslim etmeden önce şifresini çözer; veriler uygulamanız ile AWS arasında düz metin hâlindedir. İstemci tarafı şifrelemesi: verileri AWS'ye göndermeden önce siz şifrelersiniz; AWS yalnızca şifreli metni depolar ve düz metni hiçbir zaman görmez. Sağlık kayıtları veya katı düzenlemelere tabi finansal veriler gibi, bulut sağlayıcısının düz metni işlemesine güvenemeyeceğiniz en yüksek hassasiyetteki veriler için istemci tarafı şifrelemesini kullanın.

# Client-side encryption with AWS Encryption SDK
# (conceptual Python example)

# 1. Application encrypts data locally using KMS DEK
# from aws_encryption_sdk import KmsKeyProvider, encrypt

# key_provider = KmsKeyProvider(key_ids=['alias/my-key'])
# ciphertext, _ = encrypt(
#     source=b'Sensitive patient data',
#     key_provider=key_provider
# )

# 2. Send ciphertext to S3
# s3.put_object(Bucket='hipaa-data', Key='record.enc', Body=ciphertext)

# AWS only stores ciphertext - cannot decrypt without your key policy

KMS Hesaplar Arası Erişim

KMS anahtarları, hesaplar arası şifreleme senaryoları için AWS hesapları arasında paylaşılabilir. Örneğin, Account A uygulaması Account B'nin sahibi olduğu bir S3 bucket'a şifrelenmiş veri yazıyorsa Account A'nın KMS anahtarı, Account B'nin sorumlusunun bu anahtarı kullanmasına izin vermelidir. Hesaplar arası erişim izni vermek için Account A'daki KMS key policy'yi yapılandırın, ardından rolün Account A'nın anahtarını kullanmasına izin vermek için Account B'de bir IAM policy oluşturun. Bu yaklaşım, merkezi bir hesabın şifreleme anahtarlarını yönettiği veri paylaşımı ve çok hesaplı mimarilerde yaygın olarak kullanılır.

# KMS key policy: allow cross-account access
# (in Account A's key policy)
{
  'Sid': 'Allow Account B to use this key',
  'Effect': 'Allow',
  'Principal': {
    'AWS': 'arn:aws:iam::999999999999:root'
  },
  'Action': [
    'kms:Encrypt',
    'kms:Decrypt',
    'kms:ReEncrypt*',
    'kms:GenerateDataKey*',
    'kms:DescribeKey'
  ],
  'Resource': '*'
}

# Account B IAM policy also needed to allow the role to use it

Hızlı Kontrol

Bu dersteki AWS Solutions Architect (SAA-C03) kavramlarını anlayıp anlamadığınızı test edin.

Ders Özeti

Bu derste şunları öğrendiniz: KMS, şifreleme anahtarlarını HSM korumasıyla yönetir ve ayrıntılı erişim denetimi ile denetim izleri için CMK'leri destekler; ACM, TLS sertifikalarını AWS hizmetleri için ücretsiz olarak sağlar ve otomatik yeniler; şifreleme sunucu tarafında (KMS) veya istemci tarafında uygulanabilir ve AWS'ye özgü iş yüklerinde en yaygın yaklaşım sunucu tarafı şifrelemesidir. Şifrelenmemiş işlemleri reddeden bucket policy'lerle şifrelemeyi zorunlu kılın. Sırada GuardDuty, Inspector ve Macie'yi inceleyeceğiz.

Sıkça Sorulan Sorular

“KMS, ACM ve Şifreleme Örüntüleri” dersi ücretsiz mi?

Evet — “KMS, ACM ve Şifreleme Örüntüleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Cloud & IT Cert Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Cloud & IT Cert Prep kursu toplamda 4 dersten oluşur.

“KMS, ACM ve Şifreleme Örüntüleri” dersinde ne öğreneceğim?

Şifreleme anahtarlarını AWS KMS ile yönetin, TLS sertifikalarını ACM ile sağlayıp yenileyin ve istemci tarafı, sunucu tarafı ve aktarım sırasında şifreleme arasından seçim yapın. Cloud & IT Cert Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Cloud & IT Cert Prep öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Cloud & IT Cert Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“KMS, ACM ve Şifreleme Örüntüleri” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Cloud & IT Cert Prep dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Cloud & IT Cert Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. KMS, ACM ve Şifreleme Örüntüleri
  2. GuardDuty, Inspector ve Macie
  3. Secrets Manager ve Parameter Store
  4. WAF, Shield ve Network Firewall
← Cloud & IT Cert Prep Sayfasına Dön