IAM ile hizmet erişimini yetkilendirme

AWS'de Uygulama Dağıtımı

Dunieski Otano

Amazon Web Services Solutions Architect

Commit içindeki anahtar

  • Uzun ömürlü bir erişim anahtarı depoya işlenir
  • Bir tarayıcı bot bunu bulur ve faturayı şişirir
  • Roller ve asgari ayrıcalık bunu önler

Bir kod commit'inde yanlışlıkla sızdırılan ve güvenlik riski olarak işaretlenen bir AWS erişim anahtarı

AWS'de Uygulama Dağıtımı

IAM asılları: kullanıcılar, roller ve politikalar

IAM üç sütunlu diyagram: Solda Asıl (kullanıcı, hizmet veya rol), ortada İzin/Başvuru reddi eylemleri içeren Politika belgesi, sağda geçici kısa ömürlü kimlik bilgilerine sahip IAM Rolü

  • Principal: isteği yapan kim
  • Policy: izinleri veren bir JSON belgesi
  • Role: bir varlığın üstlenebileceği izinler kümesi
  • Roller üstlenilir; kullanıcılar uzun ömürlü kimlik bilgisi tutar
AWS'de Uygulama Dağıtımı

Doğru programatik kimlik bilgileri

  • Lambda: bir yürütme rolü izin tanır
  • EC2: bir örnek profili rol kimlik bilgilerini sağlar
  • ECS: görev rolleri izni görev bazında sınırlar
  • Kodda veya konfigde uzun ömürlü erişim anahtarı yok

Uzun ömürlü anahtarlar olmadan roller kullanan üç AWS hesaplama hizmeti: yürütme rolüyle Lambda, örnek profiliyle EC2 ve görev rolüyle ECS; her birinde otomatik kimlik bilgisi döndürme

AWS'de Uygulama Dağıtımı

AssumeRole ve STS

  • STS AssumeRole: bir rol için geçici kimlik bilgisi al
  • hesaplar arası erişim için kullanılır
  • Güven ilkesi, rolü kimin üstlenebileceğini kontrol eder
  • Kimlik bilgileri kısa ömürlüdür ve otomatik sona erer

STS AssumeRole hesaplar arası akış: Hesap A'daki arayan STS'den kimlik bilgisi ister, Hesap B'deki rolün güven ilkesi izin verir, STS otomatik süresi dolan kısa ömürlü kimlik bilgilerini döndürür

AWS'de Uygulama Dağıtımı

Asgari ayrıcalık ve politika yapısı

Bir politika ifadesi üç zorunlu parçaya (Effect, Action ve Resource) ve isteğe bağlı bir Conditiona sahiptir:

{
  "Effect": "Allow",
  "Action": "dynamodb:PutItem",
  "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/Orders",
  "Condition": {
    "Bool": { "aws:SecureTransport": "true" }
  }
}
AWS'de Uygulama Dağıtımı

IAM nerede biter, kodun nerede başlar


IAM: servis katmanı

  • AWS API çağrılarını yetkilendirir: bu rol bu işlemi çağırabilir mi?
  • kiracı başına veya kayıt başına kuralları dayatamaz

Kodun: veri katmanı

  • Kimliği doğrulanmış kullanıcıyı istenen veriye karşı kontrol eder
  • İkisini de kullan: IAM servisi korur, kodun veriyi korur
AWS'de Uygulama Dağıtımı

Uygulamada asgari ayrıcalıklı yürütme rolü

Asgari Lambda yürütme rolü: tek bir DynamoDB PutItem izni, yalnızca bir tablo ARN'inde verilir; eylem veya kaynakta joker karakter yok

  • Bir Lambda tek bir DynamoDB tablosuna yazmalı
  • Sadece o tablonun ARN'inde dynamodb:PutItem ver
  • Eylem veya kaynakta joker karakter yok
  • Gerçek bir çağrı reddedilirse ancak o zaman ekle
AWS'de Uygulama Dağıtımı

Hadi pratik yapalım!

AWS'de Uygulama Dağıtımı

Preparing Video For Download...