Roller, geçici kimlik bilgileri ve SigV4

Geliştiriciler için AWS Güvenliğini Kullanma

Rahul Singh

Technical Product Manager

Görevi aşan anahtar

İşi hızlandırmak için bir anahtar betikte oluşturulur ve bir yapılandırma dosyasında saklanır.

Dosyada bu anahtar:

  • Asla döndürülmez
  • Asla iptal edilmez
  • Asla süresi dolmaz

Sağa doğru zaman ekseniyle on sekizinci ayda hâlâ geçerli olduğunu gösteren, altı depolama yerine yayılan tek bir erişim anahtarı

Geliştiriciler için AWS Güvenliğini Kullanma

Görevi aşan anahtar

İşi hızlandırmak için bir anahtar betikte oluşturulur ve bir yapılandırma dosyasında saklanır.

Dosyada bu anahtar:

  • Asla döndürülmez
  • Asla iptal edilmez
  • Asla süresi dolmaz

 

18 ay sonra bile hâlâ geçerli

Sağa doğru zaman ekseniyle on sekizinci ayda hâlâ geçerli olduğunu gösteren, altı depolama yerine yayılan tek bir erişim anahtarı

Geliştiriciler için AWS Güvenliğini Kullanma

Kendiliğinden süresi dolan kimlik bilgileri

AWS STS ile varsayılanı süre sonu yap

  1. Bir rol iste, dahili saatli kimlik bilgileri al

  2. Security Token Service (STS): süre sonu bağlı, varsayılan bir saat

Bir uygulama AWS STS üzerinde AssumeRole çağırır ve STS dahili saat taşıyan kimlik bilgileri döndürür.

Geliştiriciler için AWS Güvenliğini Kullanma

Kendiliğinden süresi dolan kimlik bilgileri

AWS STS ile varsayılanı süre sonu yap

  1. Bir rol iste, dahili saatli kimlik bilgileri al

  2. Geçici kimlik bilgileri ASIA ile başlar ve bir oturum belirteci taşır

  3. Security Token Service (STS): süre sonu bağlı, varsayılan bir saat

Bir uygulama AWS STS üzerinde AssumeRole çağırır ve dahili saatli kimlik bilgileri alır. Altında, yan yana iki kimlik bilgisi: oturum belirteci taşımayan ve hiç süresi dolmayan AKIA ile başlayan uzun ömürlü anahtar ve bir saat içinde süresi dolan, oturum belirteci taşıyan ASIA ile başlayan geçici kimlik bilgileri.

Geliştiriciler için AWS Güvenliğini Kullanma

Kendiliğinden süresi dolan kimlik bilgileri

AWS STS ile varsayılanı süre sonu yap

  1. Bir rol iste, dahili saatli kimlik bilgileri al

  2. Geçici kimlik bilgileri ASIA ile başlar ve bir oturum belirteci taşır

  3. Aynı çağrı önce kabul edilir, sonra edilmez

  4. Security Token Service (STS): süre sonu bağlı, varsayılan bir saat

Bir uygulama AWS STS üzerinde AssumeRole çağırır ve dahili saatli kimlik bilgileri alır. Altında, hiç süresi dolmayan AKIA ile başlayan uzun ömürlü anahtar ile bir saat içinde süresi dolan, oturum belirteci taşıyan ASIA ile başlayan geçici kimlik bilgileri. En altta, aynı GetObject çağrısı saat onda 200 OK dönerken on biri beş geçe ExpiredToken döndürüyor.

Geliştiriciler için AWS Güvenliğini Kullanma

Kodun onları nasıl bulur

Kimlik bilgisi sağlayıcı zincirini kontrol etme

  • Aramayı kodundaki kütüphane, AWS SDK yapar
  • Sabit bir liste, sırayla kontrol edilir
  • İlk eşleşmede durur

Kimlik bilgisi arama sırası: koddaki bir anahtar zincirin üstünde üstü çizilmiş, ardından arama ortam değişkenleri, yapılandırma dosyası ve kapsayıcı kimlik bilgileri boyunca iner, ilk eşleşmede durur ve asla örnek meta verisine ulaşmaz

Geliştiriciler için AWS Güvenliğini Kullanma

Kodun onları nasıl bulur

Kimlik bilgisi sağlayıcı zincirini kontrol etme

  • Aramayı kodundaki kütüphane, AWS SDK yapar
  • Sabit bir liste, sırayla kontrol edilir
  • İlk eşleşmede durur

 

Koda gömülü anahtarlar ilk kontrol edilir; bu yüzden silinmeleri gerekir

Kimlik bilgisi arama sırası: koddaki bir anahtar zincirin üstünde üstü çizilmiş, ardından arama ortam değişkenleri, yapılandırma dosyası ve kapsayıcı kimlik bilgileri boyunca iner, ilk eşleşmede durur ve asla örnek meta verisine ulaşmaz

Geliştiriciler için AWS Güvenliğini Kullanma

Zincir, halka halka

1. explicit      a key passed in your code
2. environment   AWS_* variables, and on Lambda
                 that is the execution role
3. config file   ~/.aws/credentials
4. container     ECS or EKS task role
5. instance      EC2 instance profile, via IMDS
  • İlk eşleşme kazanır
  • Saklanan anahtarı sil, arama role devam eder
Geliştiriciler için AWS Güvenliğini Kullanma

AWS dışından kimlik kanıtı

Code pipeline'ları sık sık AWS dışında çalışır; bu yüzden kimlik bilgisi zinciri eklenemez

  • GitHub veya GitLab'da çalışır
  • Zincirin bulacağı bir şey yok

AWS sınırının dışında çizilmiş bir CI runner ve platformu; runner'a eklenecek rol yok olarak işaretlenmiş ve platform, bir depo ve bir iş akışını adlandıran bir OIDC belirteci imzalıyor

Geliştiriciler için AWS Güvenliğini Kullanma

AWS dışından kimlik kanıtı

Code pipeline'ları sık sık AWS dışında çalışır; bu yüzden kimlik bilgisi zinciri eklenemez

  • GitHub veya GitLab'da çalışır
  • Zincirin bulacağı bir şey yok

 

OIDC belirteci (OpenID Connect)

  • İmzalı ve kısa ömürlü
  • Kimlik beyanı, kimlik bilgisi değil

AWS sınırının dışında çizilmiş bir CI runner ve platformu; runner'a eklenecek rol yok olarak işaretlenmiş ve platform, bir depo ve bir iş akışını adlandıran bir OIDC belirteci imzalıyor

Geliştiriciler için AWS Güvenliğini Kullanma

Saklı anahtar yerine kural

Bir depoyu adlandıran bir OIDC belirteci, AssumeRoleWithWebIdentity ile bir saat içinde süresi dolan geçici kimlik bilgileriyle değiştirilir; çünkü rolün güven ilkesi o yayıncıyı ve o depoyu önceden adlandırmıştır

Belirteci kimlik bilgileriyle takas etme

Geliştiriciler için AWS Güvenliğini Kullanma

Saklı anahtar yerine kural

Bir depoyu adlandıran bir OIDC belirteci, AssumeRoleWithWebIdentity ile bir saat içinde süresi dolan geçici kimlik bilgileriyle değiştirilir; çünkü rolün güven ilkesi o yayıncıyı ve o depoyu önceden adlandırmıştır

Belirteci kimlik bilgileriyle takas etme

  • AssumeRoleWithWebIdentity: AssumeRole, dış bir belirteç kanıt olarak
  • Güven ilkesi: role önceden yazılır, pipeline'da saklanmaz
  • Claim: belirteç içindeki tek bir bilgi
  • Yayıncı platformdaki tüm depolarca paylaşılır; depoyu da sabitle

Depo sırları: artık boş

Geliştiriciler için AWS Güvenliğini Kullanma

Her istek imzalanır

Signature Version 4, yani SigV4

  • İsteği hangi kimlik bilgisinin yaptığını kanıtlar
  • İsteğin iletimde değişmediğini kanıtlar
  • Her çağrıda CLI ve SDK tarafından imzalanır

Bir istek ve kimlik bilgilerinin Authorization başlığında gönderilen bir imza ürettiği imzalama akışı; AWS bunu yeniden hesaplar ve karşılaştırır, eşleşmede kabul eder, eşleşmezse SignatureDoesNotMatch döner

Geliştiriciler için AWS Güvenliğini Kullanma

Devredebileceğin bir imza

Geçici kimlik bilgileri

  • Rolün kapsamıyla birçok işlem
  • Kodun tarafından tutulur

Kodunun, geçici kimlik bilgileriyle dört farklı AWS hizmetini (S3, DynamoDB, SQS ve KMS) çağırması

Geliştiriciler için AWS Güvenliğini Kullanma

Devredebileceğin bir imza

Geçici kimlik bilgileri

  • Rolün kapsamıyla birçok işlem
  • Kodun tarafından tutulur

Önceden imzalı URL

  • Tek bir nesne, tek bir işlem ve bağlantıya sahip olan herkes
  • Senin seçtiğin bir süre sonu; sonra erişim yok
  • Taşıdığı izinler seninkidir, bağlantıyı tutanın değil

Kodunun, geçici kimlik bilgileriyle dört farklı AWS hizmetini (S3, DynamoDB, SQS ve KMS) çağırması

Başkasının tarayıcısının, senin belirlediğin süre sonu etiketi olan bir saat tarafından kesilen tek bir yoldan tam bir nesneye ulaşması

Geliştiriciler için AWS Güvenliğini Kullanma

Hadi pratik yapalım!

Geliştiriciler için AWS Güvenliğini Kullanma

Preparing Video For Download...