Melindungi API Anda

Mengembangkan Aplikasi di AWS

Ricardo Sueiras

Principal Technologist

Mengamankan API di AWS

 

mengamankan api

  • Mengamankan API sangat penting untuk aplikasi cloud-native.
  • API mengekspos fungsi bisnis sensitif.
  • Sering jadi pintu masuk publik ke sistem back-end.
  • API Gateway membantu mengekspos API secara aman.
Mengembangkan Aplikasi di AWS

Authorization dan authentication

 

autentikasi dan otorisasi

  • Dua konsep kunci:
  • Authentication: siapa Anda.
  • Authorization: apa yang boleh Anda lakukan.
Mengembangkan Aplikasi di AWS

Otorisasi IAM

 

iam

  • API Gateway dapat memakai IAM untuk authentication dan authorization.
  • Mengamankan API dengan Signature Version 4 (SigV4).
  • Klien menandatangani setiap permintaan.
  • API Gateway memvalidasi tanda tangan sebelum memproses.
  • Kebijakan IAM mengendalikan apa yang boleh dipanggil tiap identitas.
  • Terbaik untuk komunikasi layanan-ke-layanan AWS.
Mengembangkan Aplikasi di AWS

Amazon Cognito authorizer

  • Cognito mengautentikasi pengguna dengan JSON Web Token (JWT).
  • Use case umum: aplikasi mobile, web, alur masuk.
  • Mendukung identitas terfederasi.
  • Bekerja dengan penyedia eksternal seperti Google, Apple, dan Facebook.
  • Penyedia enterprise via SAML atau OIDC.
  • Memvalidasi JWT secara native, tanpa kode authorizer kustom.

 

otorisasi cognito

Mengembangkan Aplikasi di AWS

Lambda authorizer

  • Fungsi Lambda menjalankan logika otorisasi kustom Anda.
  • Mengembalikan kebijakan IAM untuk mengizinkan atau menolak akses.
  • Gunakan untuk memvalidasi token kustom.
  • Integrasikan dengan penyedia identitas eksternal.
  • Terapkan aturan kustom Anda sendiri.

 

lambda authorizer

Mengembangkan Aplikasi di AWS

Lambda authorizer

  • Contoh: validasi JWT dari penyedia seperti Auth0.
  • Permintaan datang dan API Gateway memanggil authorizer.
  • Fungsi memvalidasi token dan mengembalikan kebijakan IAM.
  • Kebijakan menentukan akses: allow atau deny.
  • Jika diizinkan, permintaan diteruskan ke back-end.
  • Jika ditolak, API Gateway segera mengembalikan 401.

 

lambda authorizer

Mengembangkan Aplikasi di AWS

Memilih authorizer

 

memilih authorizer

  • Pilih Cognito untuk aplikasi yang menghadap pengguna.
  • Menyediakan sign-up, sign-in, dan validasi token terkelola.
  • Tanpa perlu kode kustom.
  • Pilih Lambda saat Anda butuh logika kustom.
  • Cocok untuk penyedia identitas pihak ketiga.
  • Atau aturan di luar kemampuan Cognito.
Mengembangkan Aplikasi di AWS

Caching authorizer

 

cache otorisasi

  • Respons authorizer di-cache.
  • Mengurangi latensi dan biaya pada endpoint sering diakses.
  • TTL cache dapat dikonfigurasi.
  • Rentang 0 hingga 3.600 detik.
  • Bawaan 300 detik.
  • Menyetel TTL ke 0 menonaktifkan cache.
Mengembangkan Aplikasi di AWS

Kebijakan resource API Gateway

 

kebijakan resource

  • Definisikan kebijakan untuk mengatur siapa yang dapat mengakses API.
  • Batasi berdasarkan akun AWS.
  • Batasi berdasarkan rentang alamat IP.
  • Batasi berdasarkan VPC.
  • Membantu mengunci API internal dan membatasi eksposur.
Mengembangkan Aplikasi di AWS

Enkripsi

  • API Gateway mendukung endpoint HTTPS dengan TLS secara default.
  • HTTPS mengenkripsi data saat transit antara klien dan gateway.
  • Terintegrasi dengan AWS Certificate Manager (ACM).
  • ACM mempermudah pengelolaan sertifikat untuk domain kustom.
  • Sertifikat domain kustom gratis.
  • JANGAN pernah mengekspos API lewat HTTP yang tidak terenkripsi.

 

enkripsi

Mengembangkan Aplikasi di AWS

Mutual TLS (mTLS)

 

  • API Gateway mendukung mutual TLS (mTLS).
  • Mengautentikasi klien menggunakan sertifikat.
  • Memerlukan nama domain yang dikonfigurasi
  • Umum untuk komunikasi mesin-ke-mesin.
  • Kedua pihak saling memverifikasi identitas.

 

mtls

Mengembangkan Aplikasi di AWS

Throttling API dan pembatasan laju

  • Throttling melindungi sistem back-end.
  • Meningkatkan keandalan API.
  • Tanpanya, layanan back-end bisa kelebihan beban.
  • Rate limit mengatur laju permintaan per detik.
  • Burst limit mengizinkan lonjakan lalu lintas sementara.
  • Melebihi batas mengembalikan 429 Too Many Requests.

 

throttling

Mengembangkan Aplikasi di AWS

Perlindungan dari eksploit umum

 

waf

  • Lampirkan AWS WAF ke API Gateway.
  • Memblokir permintaan berbahaya sebelum mencapai API Anda.
  • Menghentikan upaya injeksi SQL.
  • Menghentikan cross-site scripting (XSS).
  • Memblokir lalu lintas dari rentang IP berbahaya yang diketahui.
Mengembangkan Aplikasi di AWS

Rencana penggunaan dan kunci API

 

usage plans

  • Kendalikan cara klien menggunakan API Anda.
  • Konfigurasikan kuota permintaan.
  • Tentukan rate limit.
  • Tetapkan tier langganan.
  • Tetapkan batas konsumsi per klien.
Mengembangkan Aplikasi di AWS

Cross-Origin Resource Sharing (CORS)

 

CORS

  • CORS memungkinkan browser membuat permintaan API lintas origin.
  • Tanpanya, permintaan browser yang valid bisa diblokir.
  • CORS yang terlalu permisif berisiko keamanan.
  • Hindari Access-Control-Allow-Origin: * di produksi.
  • Selalu batasi CORS ke origin tepercaya.
Mengembangkan Aplikasi di AWS

Header CORS dan permintaan preflight

  • Permintaan preflight OPTIONS berjalan sebelum permintaan utama.
  • Mengonfirmasi API mengizinkan akses lintas origin.
  • API Gateway menambahkan header respons CORS yang diperlukan.
  • Untuk integrasi Non-Proxy, ditangani otomatis.
  • Untuk integrasi Proxy, Lambda Anda harus mengembalikan header CORS.
  • Lambda Anda juga harus menangani preflight OPTIONS.

 

header CORS

Mengembangkan Aplikasi di AWS

Ayo berlatih!

Mengembangkan Aplikasi di AWS

Preparing Video For Download...