Identita, prostředek a hranice

Zabezpečení AWS pro vývojáře

Rahul Singh

Technical Product Manager

Která zásada rozhoduje?

Úprava, která nic nezmění

  • Kapitola 1: explicitní zákaz, nebo chybějící povolení
  • Teď: třetí příčina

Požadavek narážející na sadu tří kontrol zásad, s otazníkem místo rozhodnutí.

Zabezpečení AWS pro vývojáře

Která zásada rozhoduje?

Až tři vrstvy

  1. Identitní zásada na volajícím
  2. Zásada prostředku na cílovém prostředku
  3. Hranice nad nimi, pouze odečítá

Ve vlastním účtu stačí povolení z jedné zásady

Zamítnuto, pokud zamítne kterákoli vrstva

Požadavek prochází shora dolů třemi kontrolami v pořadí – identitní zásadou, zásadou prostředku a hranicí oprávnění – než dosáhne povoleného výsledku.

Zabezpečení AWS pro vývojáře

Dvě místa, kde může zásada existovat

Zásada založená na identitě

  • Připojená k volajícímu
  • Co daná identita smí dělat
  • Propustka, kterou nosíš

Role nahoře nese zásadu založenou na identitě, pod ní je místo pro stranu prostředku téhož požadavku.

Zabezpečení AWS pro vývojáře

Dvě místa, kde může zásada existovat

Zásada založená na identitě

  • Připojená k volajícímu
  • Co daná identita smí dělat
  • Propustka, kterou nosíš

Zásada založená na prostředku

  • Připojená k prostředku
  • Kdo se ho smí dotknout
  • Potřebná pro volající z jiných účtů

Role nahoře nese zásadu založenou na identitě, zatímco S3 bucket pod ní nese zásadu založenou na prostředku, a požadavek mezi nimi putuje směrem dolů.

Zabezpečení AWS pro vývojáře

Spravovaná pro tebe, nebo tebou

Dva typy zásad založených na identitě

  • Spravované AWS: vlastní je AWS
  • Spravované zákazníkem: vlastníš je ty

Dvě karty nad sebou porovnávají zásadu spravovanou AWS, kterou vlastní AWS a je ve výchozím nastavení široká, se zásadou spravovanou zákazníkem, kterou vlastníš ty a je omezená na konkrétní úkol.

Zabezpečení AWS pro vývojáře

Spravovaná pro tebe, nebo tebou

Dva typy zásad založených na identitě

  • Spravované AWS: vlastní je AWS
  • Spravované zákazníkem: vlastníš je ty

 

Pohodlí, nebo přesnost

  • Spravované AWS: rychlý postup
  • Spravované zákazníkem: princip nejmenších oprávnění

Dvě karty nad sebou porovnávají zásadu spravovanou AWS, kterou vlastní AWS a je ve výchozím nastavení široká, se zásadou spravovanou zákazníkem, kterou vlastníš ty a je omezená na konkrétní úkol.

Zabezpečení AWS pro vývojáře

Hranice omezuje, co zásada uděluje

Proč ji účet připojuje

  • Vývojáři vytvářejí role, nikdo si nenavýší oprávnění

Hranice oprávnění

  • Strop toho, co zásada uděluje
  • Výsledná oprávnění: povoleno oběma

Tři oprávnění udělená identitní zásadou procházejí do hranice oprávnění, která povoluje pouze akce S3 – oprávnění iam:CreateUser je zastaveno a zbylá dvě pokračují do výsledných oprávnění níže.

Zabezpečení AWS pro vývojáře

Hranice omezuje, co zásada uděluje

Proč ji účet připojuje

  • Vývojáři vytvářejí role, nikdo si nenavýší oprávnění

Hranice oprávnění

  • Strop toho, co zásada uděluje
  • Výsledná oprávnění: povoleno oběma

Proč iam:CreateUser nic neudělalo

  • Pouze odečítá, nikdy neuděluje

Tři oprávnění udělená identitní zásadou procházejí do hranice oprávnění, která povoluje pouze akce S3 – oprávnění iam:CreateUser je zastaveno a zbylá dvě pokračují do výsledných oprávnění níže.

Zabezpečení AWS pro vývojáře

Hranice omezuje, co zásada uděluje

Proč ji účet připojuje

  • Vývojáři vytvářejí role, nikdo si nenavýší oprávnění

Hranice oprávnění

  • Strop toho, co zásada uděluje
  • Výsledná oprávnění: povoleno oběma

Proč iam:CreateUser nic neudělalo

  • Pouze odečítá, nikdy neuděluje

Zásada relace: jedna relace AssumeRole

Tři oprávnění udělená identitní zásadou procházejí do hranice oprávnění, která povoluje pouze akce S3 – oprávnění iam:CreateUser je zastaveno a zbylá dvě pokračují do výsledných oprávnění níže.

Zabezpečení AWS pro vývojáře

Podmínka zužuje povolení

Podmínkový klíč

  • Zužuje povolení na kontext požadavku

  • aws:SourceIp: síť, ze které požadavek přišel

Jedno povolení ke čtení objektu S3 prochází pásmem podmínek se seznamem klíče zdrojové sítě a klíče tagu volajícího, poté se rozděluje na povolenou cestu, kde kontext souhlasí, a zamítnutou cestu, kde nesouhlasí.

Zabezpečení AWS pro vývojáře

Podmínka zužuje povolení

Podmínkový klíč

  • Zužuje povolení na kontext požadavku

  • aws:SourceIp: síť, ze které požadavek přišel

  • aws:PrincipalTag: tag na volajícím

ABAC: řízení přístupu podle atributů

  • Jedna zásada, mnoho entit

Jedno povolení ke čtení objektu S3 prochází pásmem podmínek se seznamem klíče zdrojové sítě a klíče tagu volajícího, poté se rozděluje na povolenou cestu, kde kontext souhlasí, a zamítnutou cestu, kde nesouhlasí.

Zabezpečení AWS pro vývojáře

Jedna tabulka, jeden tenant najednou

Jedna sdílená tabulka

  • DynamoDB, jeden partition key pro každého tenanta
  • Samo o sobě to izolaci nezajistí

Volající tenanta A prochází podmínkou leading keys do sdílené tabulky DynamoDB, kde se vrátí řádky tenanta A a řádky tenanta B a tenanta C jsou blokovány.

Zabezpečení AWS pro vývojáře

Jedna tabulka, jeden tenant najednou

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

Jedna sdílená tabulka

  • DynamoDB, jeden partition key pro každého tenanta
  • Samo o sobě to izolaci nezajistí

Jedna podmínka ji zužuje

  • ForAllValues: každý zadaný klíč musí odpovídat
Zabezpečení AWS pro vývojáře

Jedna tabulka, jeden tenant najednou

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

Jedna sdílená tabulka

  • DynamoDB, jeden partition key pro každého tenanta
  • Samo o sobě to izolaci nezajistí

Jedna podmínka ji zužuje

  • ForAllValues: každý zadaný klíč musí odpovídat
Mezera, která zůstává: ne každý požadavek uvádí partition
  • dynamodb:Scan žádný neuvádí, takže nemá co selhat
Zabezpečení AWS pro vývojáře

Pojďme cvičit!

Zabezpečení AWS pro vývojáře

Preparing Video For Download...