Identitate, resursă și limită

Securitatea AWS pentru dezvoltatori

Rahul Singh

Technical Product Manager

Ce politică decide?

Editarea care nu schimbă nimic

  • Capitolul unu: refuz explicit sau absența unui allow
  • Aici: o a treia cauză

O cerere întâlnind un set de trei verificări de politici, cu un semn de întrebare acolo unde ar trebui să fie decizia.

Securitatea AWS pentru dezvoltatori

Ce politică decide?

Până la trei niveluri

  1. Politica de identitate pe apelant
  2. Politica de resursă pe resursă
  3. Limita de deasupra, doar scade

În propriul tău cont, e suficient ca o singură politică să permită

Refuzat de orice nivel pe care îl întâlnește

O cerere trece de sus în jos prin trei verificări, în ordine: o politică de identitate, o politică de resursă și o limită de permisiuni, înainte să ajungă la un rezultat permis.

Securitatea AWS pentru dezvoltatori

Două locuri unde poate exista o politică

Politică bazată pe identitate

  • Atașată pe apelant
  • Ce poate face acea identitate
  • Un permis pe care îl porți

Un rol în partea de sus poartă o politică bazată pe identitate, cu spațiu dedesubt pentru partea de resursă a aceleiași cereri.

Securitatea AWS pentru dezvoltatori

Două locuri unde poate exista o politică

Politică bazată pe identitate

  • Atașată pe apelant
  • Ce poate face acea identitate
  • Un permis pe care îl porți

Politică bazată pe resursă

  • Atașată pe resursă
  • Cine poate să o acceseze
  • Necesară pentru apelanți din alte conturi

Un rol în partea de sus poartă o politică bazată pe identitate, iar un bucket S3 dedesubt poartă o politică bazată pe resursă, cu o cerere care circulă între ele.

Securitatea AWS pentru dezvoltatori

Gestionată pentru tine sau de tine

Două tipuri de politici bazate pe identitate

  • Gestionate de AWS: deținute de AWS
  • Gestionate de client: deținute de tine

Două carduri suprapuse compară o politică gestionată de AWS, deținută de AWS și largă implicit, cu o politică gestionată de client, deținută de tine și limitată la sarcina respectivă.

Securitatea AWS pentru dezvoltatori

Gestionată pentru tine sau de tine

Două tipuri de politici bazate pe identitate

  • Gestionate de AWS: deținute de AWS
  • Gestionate de client: deținute de tine

 

Comoditate sau precizie

  • Gestionate de AWS: viteză
  • Gestionate de client: privilegiu minim

Două carduri suprapuse compară o politică gestionată de AWS, deținută de AWS și largă implicit, cu o politică gestionată de client, deținută de tine și limitată la sarcina respectivă.

Securitatea AWS pentru dezvoltatori

O limită plafonează ce poate acorda o politică

De ce un cont atașează una

  • Dezvoltatorii creează roluri, nimeni nu-și ridică privilegiile

Limita de permisiuni

  • Un plafon pentru ce poate acorda o politică
  • Efectiv: permis de ambele

Trei permisiuni acordate de o politică de identitate trec printr-o limită de permisiuni care permite doar acțiuni S3, unde permisiunea iam:CreateUser este oprită, iar celelalte două continuă spre permisiunile efective de mai jos.

Securitatea AWS pentru dezvoltatori

O limită plafonează ce poate acorda o politică

De ce un cont atașează una

  • Dezvoltatorii creează roluri, nimeni nu-și ridică privilegiile

Limita de permisiuni

  • Un plafon pentru ce poate acorda o politică
  • Efectiv: permis de ambele

De ce iam:CreateUser nu a avut efect

  • Doar scade, niciodată nu acordă

Trei permisiuni acordate de o politică de identitate trec printr-o limită de permisiuni care permite doar acțiuni S3, unde permisiunea iam:CreateUser este oprită, iar celelalte două continuă spre permisiunile efective de mai jos.

Securitatea AWS pentru dezvoltatori

O limită plafonează ce poate acorda o politică

De ce un cont atașează una

  • Dezvoltatorii creează roluri, nimeni nu-și ridică privilegiile

Limita de permisiuni

  • Un plafon pentru ce poate acorda o politică
  • Efectiv: permis de ambele

De ce iam:CreateUser nu a avut efect

  • Doar scade, niciodată nu acordă

Politică de sesiune: o singură sesiune AssumeRole

Trei permisiuni acordate de o politică de identitate trec printr-o limită de permisiuni care permite doar acțiuni S3, unde permisiunea iam:CreateUser este oprită, iar celelalte două continuă spre permisiunile efective de mai jos.

Securitatea AWS pentru dezvoltatori

O condiție restrânge allow-ul

Cheie de condiție

  • Restrânge un allow la contextul cererii

  • aws:SourceIp: rețeaua din care a venit

Un allow pentru citirea unui obiect S3 trece printr-o bandă de condiții care listează o cheie de rețea sursă și o cheie de etichetă a apelantului, apoi se împarte într-o cale permisă acolo unde contextul se potrivește și o cale refuzată acolo unde nu se potrivește.

Securitatea AWS pentru dezvoltatori

O condiție restrânge allow-ul

Cheie de condiție

  • Restrânge un allow la contextul cererii

  • aws:SourceIp: rețeaua din care a venit

  • aws:PrincipalTag: o etichetă pe apelant

ABAC: control al accesului bazat pe atribute

  • O singură politică, mulți principali

Un allow pentru citirea unui obiect S3 trece printr-o bandă de condiții care listează o cheie de rețea sursă și o cheie de etichetă a apelantului, apoi se împarte într-o cale permisă acolo unde contextul se potrivește și o cale refuzată acolo unde nu se potrivește.

Securitatea AWS pentru dezvoltatori

Un tabel, un chiriaș la un moment dat

Un tabel comun

  • DynamoDB, o cheie de partiție per chiriaș
  • Nu înseamnă izolare de la sine

Un apelant al chiriașului A trece printr-o condiție de chei principale către un tabel DynamoDB comun, unde rândurile chiriașului A sunt returnate, iar rândurile chiriașilor B și C sunt blocate.

Securitatea AWS pentru dezvoltatori

Un tabel, un chiriaș la un moment dat

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

Un tabel comun

  • DynamoDB, o cheie de partiție per chiriaș
  • Nu înseamnă izolare de la sine

O condiție o restrânge

  • ForAllValues: fiecare cheie furnizată trebuie să se potrivească
Securitatea AWS pentru dezvoltatori

Un tabel, un chiriaș la un moment dat

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

Un tabel comun

  • DynamoDB, o cheie de partiție per chiriaș
  • Nu înseamnă izolare de la sine

O condiție o restrânge

  • ForAllValues: fiecare cheie furnizată trebuie să se potrivească
Lacuna rămasă: nu orice cerere specifică o partiție
  • dynamodb:Scan nu furnizează niciuna, deci nimic nu poate eșua
Securitatea AWS pentru dezvoltatori

Hai să exersăm!

Securitatea AWS pentru dezvoltatori

Preparing Video For Download...