0Pricing
Cloud & IT Cert Prep · Pelajaran

Otorisasi: IAM, Pemberi Otorisasi Lambda, dan Cognito

Amankan titik akhir API dengan tanda tangan IAM SigV4, pemberi otorisasi Lambda kustom, atau pemberi otorisasi Amazon Cognito User Pool.

Otorisasi: IAM, Pemberi Otorisasi Lambda, dan Cognito adalah pelajaran Cloud & IT Cert Prep gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Cloud & IT Cert Prep, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Cloud & IT Cert Prep mencakup 4 pelajaran total.

Mengapa Otorisasi API Penting

Tanpa kontrol otorisasi, klien internet mana pun dapat memanggil titik akhir API Gateway Anda serta mengakses atau mengubah data. API Gateway menyediakan tiga mekanisme otorisasi bawaan: IAM (SigV4), pemberi otorisasi Lambda, dan pemberi otorisasi Amazon Cognito User Pool. Setiap mekanisme melayani kasus penggunaan yang berbeda: IAM untuk panggilan antarlayanan AWS, pemberi otorisasi Lambda untuk autentikasi berbasis token atau permintaan khusus, dan Cognito untuk autentikasi pengguna web atau seluler.

Otorisasi IAM dengan SigV4

Otorisasi IAM mengharuskan pemanggil menandatangani permintaan menggunakan AWS Signature Version 4 (SigV4). Pemanggil harus memiliki kredensial AWS (kunci akses + kunci rahasia atau kredensial sementara dari STS), dan kebijakan IAM harus mengizinkan execute-api:Invoke pada ARN API. Mekanisme ini ideal untuk panggilan antarmesin (antarpeladen) di dalam AWS: Lambda memanggil API lain, EC2 memanggil API internal, atau akses layanan lintas akun. Klien browser tidak dapat menggunakan SigV4 dengan mudah.

# 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'
  }]
}

Pemberi Otorisasi Lambda: Berbasis Token

Pemberi otorisasi Lambda (sebelumnya disebut pemberi otorisasi khusus) adalah fungsi Lambda yang Anda tulis dan dipanggil oleh API Gateway sebelum memanggil integrasi backend. Untuk pemberi otorisasi berbasis token, API Gateway mengekstrak token (JWT, OAuth, kunci API) dari header Authorization dan meneruskannya ke Lambda Anda. Lambda Anda memvalidasi token tersebut (misalnya, memverifikasi tanda tangan JWT menggunakan kunci publik atau memanggil penyedia identitas pihak ketiga), lalu mengembalikan dokumen kebijakan IAM yang mengizinkan atau menolak permintaan.

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')

Pemberi Otorisasi Lambda: Berbasis Permintaan

Untuk pemberi otorisasi Lambda berbasis permintaan, API Gateway meneruskan seluruh konteks permintaan (header, string kueri, variabel tahap, parameter jalur) ke Lambda Anda—bukan hanya token. Ini berguna untuk otorisasi yang bergantung pada beberapa atribut permintaan: daftar IP yang diizinkan, kombinasi header, atau pemeriksaan autentikasi multifaktor. Pemberi otorisasi berbasis permintaan didukung oleh REST API dan HTTP API.

Penyimpanan Tembolok Pemberi Otorisasi Lambda

Memanggil pemberi otorisasi Lambda pada setiap permintaan API menambah latensi dan biaya. Aktifkan penyimpanan hasil pemberi otorisasi di tembolok: simpan kebijakan IAM yang dikembalikan pemberi otorisasi dalam tembolok selama TTL yang dapat dikonfigurasi (0–3600 detik), dengan kunci berdasarkan nilai token. Permintaan berikutnya dengan token yang sama akan melewati pemanggilan Lambda dan menggunakan kebijakan yang tersimpan di tembolok. Atur TTL agar sesuai dengan waktu kedaluwarsa token—jika token valid selama 1 jam, simpan hasil pemberi otorisasi selama periode yang sama. Penyimpanan ini tersedia di REST API; pemberi otorisasi JWT HTTP API memiliki penyimpanan bawaan.

Pemberi Otorisasi Amazon Cognito User Pool

Pemberi otorisasi Cognito User Pool memvalidasi JWT yang diterbitkan Cognito langsung di API Gateway tanpa fungsi Lambda. Ketika pengguna melakukan autentikasi melalui Cognito (melalui Hosted UI, SDK, atau penyedia identitas terfederasi), Cognito menerbitkan token ID atau token akses. Klien menyertakan token ini dalam header Authorization. API Gateway memverifikasi tanda tangan dan masa berlaku token terhadap Cognito User Pool. Jika valid, permintaan dilanjutkan; jika tidak, API Gateway mengembalikan 401.

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'

Pemberi Otorisasi JWT di HTTP API

HTTP API mendukung pemberi otorisasi JWT secara bawaan tanpa Lambda. Anda menentukan URL penerbit JWT (Cognito, Auth0, Okta) dan audiens, lalu API Gateway memvalidasi JWT secara otomatis. Pada dasarnya, mekanisme ini adalah pemberi otorisasi Cognito User Pool, tetapi juga berfungsi dengan penyedia OIDC yang mematuhi standar apa pun. Validasi token (tanda tangan, masa berlaku, audiens) dilakukan secara internal oleh API Gateway—latensinya lebih rendah daripada pemberi otorisasi Lambda dan tidak memerlukan biaya Lambda.

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 Identity Pools vs User Pools

Untuk otorisasi API, gunakan Cognito User Pools: layanan ini mengelola autentikasi pengguna dan menerbitkan JWT. Cognito Identity Pools (Identitas Terfederasi) berbeda—layanan ini menukar token pihak ketiga (dari User Pools, login sosial, SAML) dengan kredensial AWS sementara (melalui STS AssumeRoleWithWebIdentity). Identity Pools digunakan ketika aplikasi Anda perlu mengakses layanan AWS secara langsung (S3, DynamoDB) dari klien. Untuk autentikasi API Gateway, JWT User Pool adalah pilihan yang tepat; kredensial Identity Pool digunakan untuk panggilan langsung SDK AWS dari browser atau perangkat seluler.

Kebijakan Resource di API Gateway

REST API mendukung kebijakan resource—kebijakan JSON yang dilampirkan ke API untuk mengontrol akses berdasarkan alamat IP, titik akhir VPC, akun sumber, atau ARN. Gunakan kebijakan resource untuk: mengizinkan hanya rentang IP tertentu memanggil API, membatasi akses ke permintaan yang masuk melalui titik akhir VPC tertentu (API privat), atau mengizinkan pemanggilan lintas akun. Kebijakan resource bekerja selain pemberi otorisasi tingkat method—keduanya harus mengizinkan permintaan agar permintaan tersebut berhasil.

# 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'}}
  }]
}

Autentikasi TLS Mutual

Mutual TLS (mTLS) mengharuskan klien dan peladen sama-sama menyajikan sertifikat selama jabat tangan TLS. API Gateway mendukung mTLS untuk REST API dan HTTP API ketika nama domain khusus dikonfigurasi. Klien harus menyajikan sertifikat valid yang ditandatangani oleh Certificate Authority (CA) yang Anda unggah ke truststore di S3. mTLS digunakan dalam layanan keuangan, autentikasi perangkat IoT, dan integrasi B2B yang memerlukan verifikasi identitas klien yang kuat, di luar autentikasi berbasis token.

Memilih Jenis Pemberi Otorisasi yang Tepat

Pemilihan pemberi otorisasi untuk ujian SAA-C03: IAM (SigV4) → panggilan antarlayanan AWS dalam akun yang sama atau lintas akun; Cognito User Pool → pengguna aplikasi web atau seluler yang diautentikasi melalui Cognito; pemberi otorisasi Lambda → logika autentikasi khusus (penyedia identitas pihak ketiga, format token lama, introspeksi OAuth, gabungan IP + token); pemberi otorisasi JWT (HTTP API) → token OIDC/OAuth2 dengan penyedia mana pun yang mematuhi standar, dengan biaya lebih rendah daripada pemberi otorisasi Lambda. Tanpa pemberi otorisasi → API publik.

Pemeriksaan Cepat

Uji pemahaman Anda tentang konsep AWS Solutions Architect (SAA-C03) dari pelajaran ini.

Rangkuman Pelajaran

Dalam pelajaran ini Anda mempelajari bahwa otorisasi IAM (SigV4) digunakan untuk panggilan antarlayanan dengan kredensial AWS, pemberi otorisasi Cognito User Pool memvalidasi JWT yang diterbitkan Cognito secara bawaan untuk aplikasi web dan seluler, dan pemberi otorisasi Lambda menerapkan validasi token khusus untuk penyedia identitas pihak ketiga atau logika otorisasi yang kompleks, dengan penyimpanan hasil opsional. Selanjutnya, kita akan membahas pembatasan laju, penyimpanan tembolok, dan paket penggunaan di API Gateway.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Otorisasi: IAM, Pemberi Otorisasi Lambda, dan Cognito” gratis?

Ya — teks lengkap “Otorisasi: IAM, Pemberi Otorisasi Lambda, dan Cognito” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Cloud & IT Cert Prep, upgrade ke CoddyKit PRO. Kursus Cloud & IT Cert Prep mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Otorisasi: IAM, Pemberi Otorisasi Lambda, dan Cognito”?

Amankan titik akhir API dengan tanda tangan IAM SigV4, pemberi otorisasi Lambda kustom, atau pemberi otorisasi Amazon Cognito User Pool. Kamu berlatih Cloud & IT Cert Prep dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Cloud & IT Cert Prep?

Tidak diperlukan pengalaman sebelumnya. Cloud & IT Cert Prep di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Otorisasi: IAM, Pemberi Otorisasi Lambda, dan Cognito” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Cloud & IT Cert Prep ini?

Ya. Setiap pelajaran Cloud & IT Cert Prep menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. REST API vs HTTP API vs WebSocket API
  2. Integrasi: Lambda, HTTP, dan Tiruan
  3. Otorisasi: IAM, Pemberi Otorisasi Lambda, dan Cognito
  4. Pembatasan, Penyimpanan Tembolok, dan Rencana Penggunaan
← Kembali ke Cloud & IT Cert Prep