Mengizinkan akses layanan dengan IAM

Mendeploy Aplikasi di AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Kunci dalam commit

  • Kunci akses jangka panjang tercantum di repo
  • Bot pemindai menemukannya dan membengkakkan tagihan
  • Role dan least privilege mencegah hal ini

Kunci akses AWS yang tak sengaja bocor dalam commit kode, ditandai sebagai risiko keamanan

Mendeploy Aplikasi di AWS

Principal IAM: pengguna, role, dan policy

Diagram tiga kolom IAM: Principal (pengguna, layanan, atau role) di kiri, dokumen Policy dengan aksi Allow/Deny di tengah, IAM Role dengan kredensial sementara berumur pendek di kanan

  • Principal: siapa yang membuat permintaan
  • Policy: dokumen JSON yang memberi izin
  • Role: himpunan izin yang dapat diassume entitas
  • Role di-assume; pengguna memegang kredensial jangka panjang
Mendeploy Aplikasi di AWS

Kredensial terprogram yang benar

  • Lambda: execution role memberi izin
  • EC2: instance profile menyuplai kredensial role
  • ECS: task role membatasi izin per task
  • Tidak ada kunci akses jangka panjang di kode/konfigurasi

Tiga layanan komputasi AWS yang menggunakan role tanpa kunci berumur panjang: Lambda dengan execution role, EC2 dengan instance profile, dan ECS dengan task role, masing-masing menunjukkan rotasi kredensial otomatis

Mendeploy Aplikasi di AWS

AssumeRole dan STS

  • STS AssumeRole: dapatkan kredensial sementara untuk sebuah role
  • Dipakai untuk akses lintas akun
  • Trust policy mengatur siapa yang boleh mengassume role
  • Kredensial berumur pendek dan kedaluwarsa otomatis

Alur lintas akun STS AssumeRole: pemanggil di Akun A meminta kredensial dari STS, trust policy pada role Akun B mengizinkan, STS mengembalikan kredensial berumur pendek yang kedaluwarsa otomatis

Mendeploy Aplikasi di AWS

Least privilege dan struktur policy

Pernyataan policy memiliki tiga bagian wajib (Effect, Action, dan Resource) plus Condition opsional:

{
  "Effect": "Allow",
  "Action": "dynamodb:PutItem",
  "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/Orders",
  "Condition": {
    "Bool": { "aws:SecureTransport": "true" }
  }
}
Mendeploy Aplikasi di AWS

Batas IAM dan awal kode Anda


IAM: lapisan layanan

  • Mengizinkan panggilan AWS API: bisakah role ini memanggil operasi ini?
  • Tidak dapat menegakkan aturan per-penyewa atau per-rekaman

Kode Anda: lapisan data

  • Memeriksa pengguna terautentikasi terhadap data yang diminta
  • Gunakan keduanya: IAM menjaga layanan, kode Anda menjaga data
Mendeploy Aplikasi di AWS

Role eksekusi least-privilege dalam praktik

Role eksekusi Lambda minimal: izin tunggal DynamoDB PutItem hanya pada satu ARN tabel, tanpa wildcard pada action atau resource

  • Lambda perlu menulis ke satu tabel DynamoDB
  • Beri dynamodb:PutItem hanya pada ARN tabel itu
  • Tanpa wildcard pada action atau resource
  • Tambahkan lagi hanya jika ada panggilan nyata yang ditolak
Mendeploy Aplikasi di AWS

Ayo berlatih!

Mendeploy Aplikasi di AWS

Preparing Video For Download...