Yetkilendirme: IAM, Lambda Yetkilendiricileri ve Cognito
API uç noktalarını IAM SigV4 imzaları, özel Lambda yetkilendiricileri veya Amazon Cognito Kullanıcı Havuzu yetkilendiricileriyle güvence altına alacaksınız.
Yetkilendirme: IAM, Lambda Yetkilendiricileri ve Cognito, CoddyKit'te ücretsiz bir Cloud & IT Cert Prep dersidir. Bu, 4 dersinin 3. 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.
API Yetkilendirmenin Önemi
Yetkilendirme denetimleri olmadan, internetteki herhangi bir istemci API Gateway uç noktalarınızı çağırabilir ve verilere erişebilir veya verileri değiştirebilir. API Gateway üç yerleşik yetkilendirme mekanizması sunar: IAM (SigV4), Lambda Yetkilendiricileri ve Amazon Cognito Kullanıcı Havuzu Yetkilendiricileri. Her mekanizma farklı kullanım alanlarına hizmet eder: AWS hizmetleri arasındaki çağrılar için IAM, özel belirteç veya istek tabanlı kimlik doğrulama için Lambda yetkilendiricileri ve web/mobil kullanıcı kimlik doğrulaması için Cognito.
SigV4 ile IAM Yetkilendirmesi
IAM yetkilendirmesi, çağıranların istekleri AWS Signature Version 4 (SigV4) kullanarak imzalamasını gerektirir. Çağıranın AWS kimlik bilgilerine (erişim anahtarı + gizli anahtar veya STS'den alınan geçici kimlik bilgileri) sahip olması ve IAM politikasının API'nin ARN'si üzerinde execute-api:Invoke işlemine izin vermesi gerekir. Bu yöntem AWS içindeki makineden makineye (sunucudan sunucuya) çağrılar için idealdir: Lambda'nın başka bir API'yi çağırması, EC2'nin dahili bir API'yi çağırması veya hesaplar arası hizmet erişimi. Tarayıcı istemcileri SigV4'ü kolayca kullanamaz.
# IAM policy to allow invoking a specific API endpoint
{
'Version': '2012-10-17',
'Statement': [{
'Effect': 'Allow',
'Action': 'execute-api:Invoke',
'Resource': 'arn:aws:execute-api:us-east-1:123456789012:abc123/prod/GET/orders'
}]
}Lambda Yetkilendiricileri: Belirteç Tabanlı
Lambda yetkilendiricisi (eski adıyla Özel Yetkilendirici), yazdığınız ve API Gateway'in arka uç entegrasyonunu çağırmadan önce çalıştırdığı bir Lambda işlevidir. Belirteç tabanlı yetkilendiricilerde API Gateway, Authorization üst bilgisinden bir belirteci (JWT, OAuth, API anahtarı) çıkarır ve Lambda'nıza iletir. Lambda'nız belirteci doğrular (örneğin, JWT imzasını bir açık anahtara karşı doğrular veya üçüncü taraf bir kimlik sağlayıcısını çağırır) ve isteğe izin veren ya da isteği reddeden bir IAM politika belgesi döndürür.
def lambda_handler(event, context):
token = event['authorizationToken']
# Validate token (JWT verification, introspect OAuth, etc.)
if is_valid_token(token):
return {
'principalId': 'user123',
'policyDocument': {
'Version': '2012-10-17',
'Statement': [{'Effect': 'Allow', 'Action': 'execute-api:Invoke',
'Resource': event['methodArn']}]
},
'context': {'userId': 'user123', 'role': 'admin'}
}
raise Exception('Unauthorized')Lambda Yetkilendiricileri: İstek Tabanlı
İstek tabanlı Lambda yetkilendiricilerinde API Gateway, yalnızca bir belirteci değil, istek bağlamının tamamını (üst bilgiler, sorgu dizeleri, aşama değişkenleri, yol parametreleri) Lambda'nıza iletir. Bu, birden fazla istek özniteliğine bağlı yetkilendirme için kullanışlıdır: IP izin listeleri, üst bilgi bileşimleri veya çok faktörlü kimlik doğrulama denetimleri. İstek tabanlı yetkilendiriciler hem REST API hem de HTTP API tarafından desteklenir.
Lambda Yetkilendiricisi Önbelleğe Alma
Her API isteğinde bir Lambda yetkilendiricisini çağırmak gecikme ve maliyet ekler. Yetkilendirici sonucu önbelleğe almayı etkinleştirin: yetkilendirici tarafından döndürülen IAM politikasını, belirteç değerini anahtar olarak kullanarak yapılandırılabilir bir TTL boyunca (0–3600 saniye) önbelleğe alın. Aynı belirtece sahip sonraki istekler Lambda çağrısını atlar ve önbelleğe alınan politikayı kullanır. TTL'yi belirtecinizin sona erme süresiyle eşleştirin; belirteç 1 saat geçerliyse yetkilendirici sonucunu da aynı süre boyunca önbelleğe alın. Önbelleğe alma REST API'de kullanılabilir; HTTP API JWT yetkilendiricilerinde yerleşik önbelleğe alma bulunur.
Amazon Cognito Kullanıcı Havuzu Yetkilendiricisi
Cognito Kullanıcı Havuzu Yetkilendiricileri, Cognito tarafından verilen JWT'leri Lambda işlevi olmadan doğrudan API Gateway'de doğrular. Bir kullanıcı Cognito üzerinden (Barındırılan Kullanıcı Arabirimi, SDK veya federasyon kimlik sağlayıcısı aracılığıyla) kimlik doğrulaması yaptığında Cognito bir kimlik belirteci veya erişim belirteci verir. İstemci bu belirteci Authorization üst bilgisine ekler. API Gateway, belirteç imzasını ve sona erme süresini Cognito Kullanıcı Havuzu'na karşı doğrular. Belirteç geçerliyse istek devam eder; geçerli değilse API Gateway 401 döndürür.
aws apigateway create-authorizer \
--rest-api-id 'abc123' \
--name 'CognitoAuthorizer' \
--type COGNITO_USER_POOLS \
--provider-arns 'arn:aws:cognito-idp:us-east-1:123456789012:userpool/us-east-1_XXXXXXX' \
--identity-source 'method.request.header.Authorization'HTTP API'de JWT Yetkilendiricisi
HTTP API, Lambda olmadan yerel JWT yetkilendiricisi desteği sunar. JWT veren kuruluş URL'sini (Cognito, Auth0, Okta) ve hedef kitleyi belirtirsiniz; API Gateway JWT'leri otomatik olarak doğrular. Bu, temel olarak bir Cognito Kullanıcı Havuzu yetkilendiricisidir; ancak standartlarla uyumlu tüm OIDC sağlayıcılarıyla da çalışır. Belirteç doğrulaması (imza, sona erme süresi, hedef kitle) API Gateway tarafından dahili olarak yapılır; bu, Lambda yetkilendiricilerine göre daha düşük gecikme ve Lambda maliyeti olmaması anlamına gelir.
aws apigatewayv2 create-authorizer \
--api-id 'abc123' \
--authorizer-type JWT \
--name 'JWTAuthorizer' \
--identity-source '$request.header.Authorization' \
--jwt-configuration '{
"Issuer": "https://cognito-idp.us-east-1.amazonaws.com/us-east-1_XXXXXXX",
"Audience": ["your-client-id"]
}'Cognito Kimlik Havuzları ve Kullanıcı Havuzları
API yetkilendirmesi için Cognito Kullanıcı Havuzlarını kullanın: kullanıcı kimlik doğrulamasını yönetir ve JWT'ler verirler. Cognito Kimlik Havuzları (Federasyon Kimlikleri) farklıdır; üçüncü taraf belirteçlerini (Kullanıcı Havuzları, sosyal oturum açma, SAML kaynaklı) geçici AWS kimlik bilgileriyle (STS AssumeRoleWithWebIdentity aracılığıyla) değiş tokuş ederler. Kimlik Havuzları, uygulamanızın istemciden doğrudan AWS hizmetlerine (S3, DynamoDB) erişmesi gerektiğinde kullanılır. API Gateway kimlik doğrulaması için Kullanıcı Havuzu JWT'leri doğru seçimdir; Kimlik Havuzu kimlik bilgileri tarayıcıdan veya mobilden doğrudan AWS SDK çağrıları yapmak içindir.
API Gateway'de Kaynak Politikaları
REST API'ler, API'ye eklenen ve erişimi IP adresine, VPC uç noktasına, kaynak hesaba veya ARN'ye göre denetleyen JSON politikaları olan kaynak politikalarını destekler. Kaynak politikalarını şu amaçlarla kullanın: yalnızca belirli IP aralıklarının API'nizi çağırmasına izin vermek, erişimi belirli bir VPC uç noktası üzerinden gelen isteklerle sınırlamak (özel API) veya hesaplar arası çağrılara izin vermek. Kaynak politikaları yöntem düzeyindeki yetkilendiricilere ek olarak çalışır; isteğin başarılı olması için her ikisinin de isteğe izin vermesi gerekir.
# Allow only specific IP range to call the API
{
'Version': '2012-10-17',
'Statement': [{
'Effect': 'Allow',
'Principal': '*',
'Action': 'execute-api:Invoke',
'Resource': 'arn:aws:execute-api:us-east-1:123456789012:abc123/*',
'Condition': {'IpAddress': {'aws:SourceIp': '203.0.113.0/24'}}
}]
}Karşılıklı TLS Kimlik Doğrulaması
Karşılıklı TLS (mTLS), TLS el sıkışması sırasında hem istemcinin hem de sunucunun sertifika sunmasını gerektirir. API Gateway, özel alan adları yapılandırıldığında REST ve HTTP API'ler için mTLS'yi destekler. İstemciler, S3'teki bir güven deposuna yüklediğiniz bir Sertifika Yetkilisi (CA) tarafından imzalanmış geçerli bir sertifika sunmalıdır. mTLS; finansal hizmetlerde, IoT cihaz kimlik doğrulamasında ve belirteç tabanlı kimlik doğrulamanın ötesinde güçlü istemci kimliği doğrulamasının gerekli olduğu B2B entegrasyonlarında kullanılır.
Doğru Yetkilendirici Türünü Seçme
SAA-C03 sınavı için yetkilendirici seçimi: IAM (SigV4) → aynı hesap veya hesaplar arasındaki AWS hizmet çağrıları; Cognito Kullanıcı Havuzu → Cognito üzerinden kimlik doğrulaması yapılan web/mobil uygulama kullanıcıları; Lambda Yetkilendiricisi → özel kimlik doğrulama mantığı (üçüncü taraf kimlik sağlayıcıları, eski belirteç biçimleri, OAuth iç gözlemi, IP + belirteç birleşimi); JWT Yetkilendiricisi (HTTP API) → Lambda yetkilendiricilerine göre daha düşük maliyetle, standartlarla uyumlu herhangi bir sağlayıcıdaki OIDC/OAuth2 belirteçleri. Yetkilendirici yok → herkese açık API.
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: IAM (SigV4) yetkilendirmesi AWS kimlik bilgilerini kullanan hizmetler arası çağrılar içindir; Cognito Kullanıcı Havuzu Yetkilendiricileri, web ve mobil uygulamalar için Cognito tarafından verilen JWT'leri yerel olarak doğrular; Lambda Yetkilendiricileri ise üçüncü taraf kimlik sağlayıcıları veya isteğe bağlı sonuç önbelleğe alma özelliğine sahip karmaşık yetkilendirme mantığı için özel belirteç doğrulaması uygular. Sırada API Gateway'de hız sınırlamayı, önbelleğe almayı ve kullanım planlarını inceleyeceğiz.
Sıkça Sorulan Sorular
“Yetkilendirme: IAM, Lambda Yetkilendiricileri ve Cognito” dersi ücretsiz mi?
Evet — “Yetkilendirme: IAM, Lambda Yetkilendiricileri ve Cognito” 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.
“Yetkilendirme: IAM, Lambda Yetkilendiricileri ve Cognito” dersinde ne öğreneceğim?
API uç noktalarını IAM SigV4 imzaları, özel Lambda yetkilendiricileri veya Amazon Cognito Kullanıcı Havuzu yetkilendiricileriyle güvence altına alacaksınız. 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 3. dersidir.
“Yetkilendirme: IAM, Lambda Yetkilendiricileri ve Cognito” 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
- REST API ve HTTP API ve WebSocket API
- Entegrasyonlar: Lambda, HTTP ve Taklit
- Yetkilendirme: IAM, Lambda Yetkilendiricileri ve Cognito
- Kısıtlama, Önbelleğe Alma ve Kullanım Planları