Identitas, sumber daya, dan batas

Menggunakan Keamanan AWS untuk Developer

Rahul Singh

Technical Product Manager

Kebijakan mana yang berkuasa?

Edit yang tidak mengubah apa pun

  • Bab satu: penolakan eksplisit, atau tanpa izin
  • Di sini: penyebab ketiga

Sebuah permintaan bertemu tumpukan tiga pemeriksaan kebijakan, dengan tanda tanya di tempat keputusan.

Menggunakan Keamanan AWS untuk Developer

Kebijakan mana yang berkuasa?

Hingga tiga lapis

  1. Kebijakan identitas pada pemanggil
  2. Kebijakan sumber daya pada sumber daya
  3. Batas di atas, hanya mengurangi

Di akun Anda sendiri, salah satu kebijakan yang mengizinkan sudah cukup

Ditolak oleh lapisan mana pun yang ditemui

Sebuah permintaan mengalir dari atas ke bawah melalui tiga pemeriksaan berurutan: kebijakan identitas, kebijakan sumber daya, dan batas izin, sebelum mencapai hasil diizinkan.

Menggunakan Keamanan AWS untuk Developer

Dua tempat kebijakan berada

Kebijakan berbasis identitas

  • Dilampirkan pada pemanggil
  • Apa yang boleh dilakukan identitas itu
  • Lencana yang Anda kenakan

Sebuah role di atas membawa kebijakan berbasis identitas, dengan ruang di bawahnya untuk sisi sumber daya dari permintaan yang sama.

Menggunakan Keamanan AWS untuk Developer

Dua tempat kebijakan berada

Kebijakan berbasis identitas

  • Dilampirkan pada pemanggil
  • Apa yang boleh dilakukan identitas itu
  • Lencana yang Anda kenakan

Kebijakan berbasis sumber daya

  • Dilampirkan pada sumber daya
  • Siapa yang boleh mengaksesnya
  • Diperlukan untuk pemanggil lintas akun

Sebuah role di atas membawa kebijakan berbasis identitas sementara sebuah bucket S3 di bawah membawa kebijakan berbasis sumber daya, dan sebuah permintaan mengalir turun di antaranya.

Menggunakan Keamanan AWS untuk Developer

Dikelola untuk Anda, atau oleh Anda

Dua jenis kebijakan berbasis identitas

  • Dikelola AWS: dimiliki oleh AWS
  • Dikelola pelanggan: dimiliki oleh Anda

Dua kartu bertumpuk membandingkan kebijakan yang dikelola AWS, dimiliki AWS dan luas secara default, dengan kebijakan yang dikelola pelanggan, dimiliki Anda dan dibatasi pada tugas.

Menggunakan Keamanan AWS untuk Developer

Dikelola untuk Anda, atau oleh Anda

Dua jenis kebijakan berbasis identitas

  • Dikelola AWS: dimiliki oleh AWS
  • Dikelola pelanggan: dimiliki oleh Anda

 

Kecepatan atau presisi

  • Dikelola AWS: bergerak cepat
  • Dikelola pelanggan: hak istimewa minimum

Dua kartu bertumpuk membandingkan kebijakan yang dikelola AWS, dimiliki AWS dan luas secara default, dengan kebijakan yang dikelola pelanggan, dimiliki Anda dan dibatasi pada tugas.

Menggunakan Keamanan AWS untuk Developer

Batas membatasi apa yang diberikan kebijakan

Mengapa sebuah akun melampirkannya

  • Pengembang membuat role, tak ada yang eskalasi

Permissions boundary

  • Batas atas dari apa yang diberikan kebijakan
  • Efektif: diizinkan oleh keduanya

Tiga izin yang diberikan oleh kebijakan identitas turun ke permissions boundary yang hanya mengizinkan aksi S3, di mana izin iam:CreateUser dihentikan dan dua lainnya berlanjut ke izin efektif di bawahnya.

Menggunakan Keamanan AWS untuk Developer

Batas membatasi apa yang diberikan kebijakan

Mengapa sebuah akun melampirkannya

  • Pengembang membuat role, tak ada yang eskalasi

Permissions boundary

  • Batas atas dari apa yang diberikan kebijakan
  • Efektif: diizinkan oleh keduanya

Mengapa iam:CreateUser tidak berdampak

  • Hanya mengurangi, tidak pernah memberi

Tiga izin yang diberikan oleh kebijakan identitas turun ke permissions boundary yang hanya mengizinkan aksi S3, di mana izin iam:CreateUser dihentikan dan dua lainnya berlanjut ke izin efektif di bawahnya.

Menggunakan Keamanan AWS untuk Developer

Batas membatasi apa yang diberikan kebijakan

Mengapa sebuah akun melampirkannya

  • Pengembang membuat role, tak ada yang eskalasi

Permissions boundary

  • Batas atas dari apa yang diberikan kebijakan
  • Efektif: diizinkan oleh keduanya

Mengapa iam:CreateUser tidak berdampak

  • Hanya mengurangi, tidak pernah memberi

Session policy: satu sesi AssumeRole

Tiga izin yang diberikan oleh kebijakan identitas turun ke permissions boundary yang hanya mengizinkan aksi S3, di mana izin iam:CreateUser dihentikan dan dua lainnya berlanjut ke izin efektif di bawahnya.

Menggunakan Keamanan AWS untuk Developer

Kondisi mempersempit izin

Kunci kondisi

  • Mempersempit izin berdasarkan konteks permintaan

  • aws:SourceIp: jaringan asalnya

Satu izin untuk membaca objek S3 melewati pita kondisi yang mencantumkan kunci jaringan sumber dan tag pemanggil, lalu bercabang ke jalur diizinkan saat konteks cocok dan jalur ditolak saat tidak cocok.

Menggunakan Keamanan AWS untuk Developer

Kondisi mempersempit izin

Kunci kondisi

  • Mempersempit izin berdasarkan konteks permintaan

  • aws:SourceIp: jaringan asalnya

  • aws:PrincipalTag: tag pada pemanggil

ABAC: attribute-based access control

  • Satu kebijakan, banyak prinsipal

Satu izin untuk membaca objek S3 melewati pita kondisi yang mencantumkan kunci jaringan sumber dan tag pemanggil, lalu bercabang ke jalur diizinkan saat konteks cocok dan jalur ditolak saat tidak cocok.

Menggunakan Keamanan AWS untuk Developer

Satu tabel, satu tenant tiap waktu

Satu tabel bersama

  • DynamoDB, satu kunci partisi per penyewa
  • Bukan isolasi dengan sendirinya

Pemanggil tenant A melewati kondisi kunci terdepan ke tabel DynamoDB bersama, baris tenant A dikembalikan, baris tenant B dan C diblokir.

Menggunakan Keamanan AWS untuk Developer

Satu tabel, satu tenant tiap waktu

"Condition": {
  "ForAllValues:StringEquals": {
    "dynamodb:LeadingKeys": ["${aws:PrincipalTag/tenant}"]
  }
}

Satu tabel bersama

  • DynamoDB, satu kunci partisi per penyewa
  • Bukan isolasi dengan sendirinya

Satu kondisi mempersempitnya

  • ForAllValues: setiap kunci yang diberikan harus cocok
Menggunakan Keamanan AWS untuk Developer

Satu tabel, satu tenant tiap waktu

"Action": ["dynamodb:Query", "dynamodb:GetItem", "dynamodb:Scan"],
"Condition": {
  "ForAllValues:StringEquals": {
    "dynamodb:LeadingKeys": ["${aws:PrincipalTag/tenant}"]
  }
}

Satu tabel bersama

  • DynamoDB, satu kunci partisi per penyewa
  • Bukan isolasi dengan sendirinya

Satu kondisi mempersempitnya

  • ForAllValues: setiap kunci yang diberikan harus cocok
Celah yang tersisa: tidak setiap permintaan menyebutkan partisi
  • dynamodb:Scan tidak memberi kunci, jadi tak ada yang gagal
Menggunakan Keamanan AWS untuk Developer

Ayo berlatih!

Menggunakan Keamanan AWS untuk Developer

Preparing Video For Download...