API'lerini koruma

AWS üzerinde Uygulama Geliştirme

Ricardo Sueiras

Principal Technologist

AWS'de API'leri güvene almak

 

API güvenliği

  • Bulut-yerel uygulamalarda API'leri güvenceye almak kritiktir.
  • Hassas işlevleri açığa çıkarırlar.
  • Genelde arka uca halka açık giriş kapısıdır.
  • API Gateway, API'leri güvenle sunmana yardım eder.
AWS üzerinde Uygulama Geliştirme

Yetkilendirme ve kimlik doğrulama

 

kimlik doğrulama ve yetkilendirme

  • İki ana kavram:
  • Authentication: kim olduğunu doğrulama.
  • Authorization: ne yapmaya yetkili olduğun.
AWS üzerinde Uygulama Geliştirme

IAM yetkilendirmesi

 

iam

  • API Gateway, kimlik doğrulama ve yetkilendirme için IAM kullanabilir.
  • Signature Version 4 (SigV4) ile API'leri korur.
  • İstemciler her isteği imzalar.
  • API Gateway, işlemden önce imzayı doğrular.
  • Sonrasında IAM ilkeleri her kimliğin neyi çağırabileceğini kontrol eder.
  • AWS servisler arası iletişim için idealdir.
AWS üzerinde Uygulama Geliştirme

Amazon Cognito yetkilendiricileri

  • Cognito, kullanıcıları JSON Web Token'larla (JWT) doğrular.
  • Yaygın kullanım: mobil/web uygulamaları, oturum açma akışları.
  • Birleşik kimlikleri destekler.
  • Google, Apple, Facebook gibi harici sağlayıcılarla çalışır.
  • Kurumsal sağlayıcılar: SAML veya OIDC.
  • JWT'leri yerel olarak doğrular, özel yetkilendirici kodu gerekmez.

 

cognito yetkilendiriciler

AWS üzerinde Uygulama Geliştirme

Lambda yetkilendiricileri

  • Bir Lambda işlevi özel yetkilendirme mantığını çalıştırır.
  • Erişimi izin veren veya reddeden bir IAM ilkesi döner.
  • Özel jetonları doğrulamak için kullan.
  • Harici kimlik sağlayıcılarıyla tümleştir.
  • Kendi özel kurallarını uygula.

 

lambda yetkilendirici

AWS üzerinde Uygulama Geliştirme

Lambda yetkilendiricileri

  • Örnek: Auth0 gibi bir sağlayıcıdan gelen JWT'yi doğrula.
  • Bir istek gelir ve API Gateway yetkilendiriciyi çağırır.
  • İşlev jetonu doğrular ve bir IAM ilkesi döner.
  • İlke erişimi belirler: izin ver veya reddet.
  • İzin verilirse istek arka uca iletilir.
  • Reddedilirse API Gateway anında 401 döndürür.

 

lambda yetkilendirici

AWS üzerinde Uygulama Geliştirme

Hangi yetkilendirici

 

hangi yetkilendirici

  • Kullanıcıya dönük uygulamalar için Cognito'yu seç.
  • Yönetilen kayıt, oturum açma ve jeton doğrulama sunar.
  • Özel kod gerekmez.
  • Özel mantık gerektiğinde Lambda'yı seç.
  • Üçüncü taraf kimlik sağlayıcıları için iyi bir seçimdir.
  • Ya da Cognito'nun ötesine geçen kurallar için.
AWS üzerinde Uygulama Geliştirme

Yetkilendirici önbellekleme

 

yetkilendirici önbellekleme

  • Yetkilendirici yanıtları önbelleğe alınır.
  • Bu, sık kullanılan uç noktalarda gecikme ve maliyeti düşürür.
  • Önbellek TTL'i yapılandırılabilir.
  • 0 ile 3600 saniye arası.
  • Varsayılan 300 saniyedir.
  • TTL'i 0 yapmak önbelleği kapatır.
AWS üzerinde Uygulama Geliştirme

API Gateway kaynak ilkeleri

 

kaynak ilkeleri

  • Kimlerin bir API'ye erişebileceğini belirleyen ilkeler tanımla.
  • AWS hesabına göre kısıtla.
  • IP aralığına göre kısıtla.
  • VPC'ye göre kısıtla.
  • İç API'leri kilitlemeye ve maruziyeti azaltmaya yardımcı olur.
AWS üzerinde Uygulama Geliştirme

Şifreleme

  • API Gateway varsayılan olarak TLS ile HTTPS uç noktalarını destekler.
  • HTTPS, istemci ile ağ geçidi arasındaki veriyi taşırken şifreler.
  • AWS Certificate Manager (ACM) ile tümleşir.
  • ACM, özel alanlar için sertifika yönetimini kolaylaştırır.
  • Özel alan sertifikaları ücretsizdir.
  • API'leri asla şifrelenmemiş HTTP üzerinden sunma.

 

şifreleme

AWS üzerinde Uygulama Geliştirme

Karşılıklı TLS (mTLS)

 

  • API Gateway karşılıklı TLS'yi (mTLS) destekler.
  • İstemcileri sertifikalarla doğrular.
  • Yapılandırılmış alan adı gerekir.
  • Makineden makineye iletişimde yaygındır.
  • Her iki taraf da birbirinin kimliğini doğrular.

 

mTLS

AWS üzerinde Uygulama Geliştirme

API throttling ve oran sınırlama

  • Throttling, arka uç sistemlerini korur.
  • API güvenilirliğini artırır.
  • Olmazsa arka uç servisler aşırı yüklenir.
  • Oran limitleri, saniyedeki sabit istekleri sınırlar.
  • Patlama limitleri geçici trafik sıçramalarını kaldırır.
  • Limit aşılırsa 429 Too Many Requests döner.

 

throttling

AWS üzerinde Uygulama Geliştirme

Yaygın açık istismarlara karşı koruma

 

waf

  • API Gateway'e AWS WAF ekle.
  • Kötü niyetli istekleri API'ne ulaşmadan engeller.
  • SQL enjeksiyon girişimlerini durdurur.
  • Cross-site scripting'i (XSS) engeller.
  • Bilinen kötü niyetli IP aralıklarını bloklar.
AWS üzerinde Uygulama Geliştirme

Kullanım planları ve API anahtarları

 

kullanım planları

  • İstemcilerin API'lerini nasıl tüketeceğini kontrol et.
  • İstek kotaları yapılandır.
  • Oran limitleri tanımla.
  • Abonelik katmanları ayarla.
  • İstemci başına tüketim sınırları ata.
AWS üzerinde Uygulama Geliştirme

Cross-Origin Resource Sharing (CORS)

 

CORS

  • CORS, tarayıcıların kökenler arası API isteği yapmasını sağlar.
  • Olmadan, geçerli tarayıcı istekleri engellenebilir.
  • Aşırı izinli CORS bir güvenlik riski.
  • Üretimde Access-Control-Allow-Origin: * kullanmaktan kaçın.
  • CORS'u her zaman güvenilir kökenlerle sınırla.
AWS üzerinde Uygulama Geliştirme

CORS başlıkları ve ön uçuş istekleri

  • Gerçek istekten önce bir ön uçuş OPTIONS isteği çalışır.
  • API'nin kökenler arası erişime izin verdiğini doğrular.
  • API Gateway gerekli CORS yanıt başlıklarını ekler.
  • Non-Proxy tümleştirmelerde bunları otomatik yönetir.
  • Proxy tümleştirmelerde Lambda'nın CORS başlıklarını döndürmesi gerekir.
  • Lambda'nın ön uçuş OPTIONS isteğini de işlemesi gerekir.

 

CORS başlıkları

AWS üzerinde Uygulama Geliştirme

Hadi pratik yapalım!

AWS üzerinde Uygulama Geliştirme

Preparing Video For Download...