Tożsamość, zasób i granica

Bezpieczeństwo AWS dla deweloperów

Rahul Singh

Technical Product Manager

Która zasada decyduje?

Zmiana, która nic nie zmienia

  • Rozdział pierwszy: jawna odmowa albo brak zezwolenia
  • Tutaj: trzecia przyczyna

Żądanie trafiające na stos trzech kontroli zasad, ze znakiem zapytania w miejscu decyzji.

Bezpieczeństwo AWS dla deweloperów

Która zasada decyduje?

Maksymalnie trzy warstwy

  1. Zasada tożsamości na wywołującym
  2. Zasada zasobu na zasobie
  3. Granica nad nimi, tylko odejmuje

We własnym koncie wystarczy zezwolenie z jednej zasady

Odmowa z dowolnej napotkanej warstwy

Żądanie przepływa od góry do dołu przez trzy kolejne kontrole — zasadę tożsamości, zasadę zasobu i granicę uprawnień — zanim dotrze do wyniku zezwolenia.

Bezpieczeństwo AWS dla deweloperów

Dwa miejsca, w których może żyć zasada

Zasada oparta na tożsamości

  • Dołączona do wywołującego
  • Co może zrobić dana tożsamość
  • Przepustka, którą nosisz

Rola u góry ma przypisaną zasadę opartą na tożsamości, poniżej miejsce na stronę zasobu tego samego żądania.

Bezpieczeństwo AWS dla deweloperów

Dwa miejsca, w których może żyć zasada

Zasada oparta na tożsamości

  • Dołączona do wywołującego
  • Co może zrobić dana tożsamość
  • Przepustka, którą nosisz

Zasada oparta na zasobie

  • Dołączona do zasobu
  • Kto może z niego korzystać
  • Potrzebna dla wywołujących z innych kont

Rola u góry ma przypisaną zasadę opartą na tożsamości, a zasobnik S3 poniżej — zasadę opartą na zasobie, między nimi przemieszcza się żądanie.

Bezpieczeństwo AWS dla deweloperów

Zarządzane dla ciebie czy przez ciebie

Dwa rodzaje zasad opartych na tożsamości

  • Zarządzane przez AWS: należą do AWS
  • Zarządzane przez klienta: należą do ciebie

Dwie karty obok siebie porównują zasadę zarządzaną przez AWS — należącą do AWS i domyślnie szeroką — z zasadą zarządzaną przez klienta, należącą do ciebie i dopasowaną do zadania.

Bezpieczeństwo AWS dla deweloperów

Zarządzane dla ciebie czy przez ciebie

Dwa rodzaje zasad opartych na tożsamości

  • Zarządzane przez AWS: należą do AWS
  • Zarządzane przez klienta: należą do ciebie

 

Wygoda czy precyzja

  • Zarządzane przez AWS: szybkie działanie
  • Zarządzane przez klienta: minimalne uprawnienia

Dwie karty obok siebie porównują zasadę zarządzaną przez AWS — należącą do AWS i domyślnie szeroką — z zasadą zarządzaną przez klienta, należącą do ciebie i dopasowaną do zadania.

Bezpieczeństwo AWS dla deweloperów

Granica ogranicza to, co przyznaje zasada

Dlaczego konto ją dołącza

  • Deweloperzy tworzą role, nikt nie podnosi uprawnień

Granica uprawnień

  • Pułap tego, co przyznaje zasada
  • Efektywnie: zezwolenie z obu stron

Trzy uprawnienia przyznane przez zasadę tożsamości trafiają do granicy uprawnień, która dopuszcza tylko działania S3 — uprawnienie iam:CreateUser zostaje zatrzymane, a pozostałe dwa przechodzą dalej do efektywnych uprawnień poniżej.

Bezpieczeństwo AWS dla deweloperów

Granica ogranicza to, co przyznaje zasada

Dlaczego konto ją dołącza

  • Deweloperzy tworzą role, nikt nie podnosi uprawnień

Granica uprawnień

  • Pułap tego, co przyznaje zasada
  • Efektywnie: zezwolenie z obu stron

Dlaczego iam:CreateUser nic nie dało

  • Tylko odejmuje, nigdy nie przyznaje

Trzy uprawnienia przyznane przez zasadę tożsamości trafiają do granicy uprawnień, która dopuszcza tylko działania S3 — uprawnienie iam:CreateUser zostaje zatrzymane, a pozostałe dwa przechodzą dalej do efektywnych uprawnień poniżej.

Bezpieczeństwo AWS dla deweloperów

Granica ogranicza to, co przyznaje zasada

Dlaczego konto ją dołącza

  • Deweloperzy tworzą role, nikt nie podnosi uprawnień

Granica uprawnień

  • Pułap tego, co przyznaje zasada
  • Efektywnie: zezwolenie z obu stron

Dlaczego iam:CreateUser nic nie dało

  • Tylko odejmuje, nigdy nie przyznaje

Zasada sesji: jedna sesja AssumeRole

Trzy uprawnienia przyznane przez zasadę tożsamości trafiają do granicy uprawnień, która dopuszcza tylko działania S3 — uprawnienie iam:CreateUser zostaje zatrzymane, a pozostałe dwa przechodzą dalej do efektywnych uprawnień poniżej.

Bezpieczeństwo AWS dla deweloperów

Warunek zawęża zezwolenie

Klucz warunku

  • Zawęża zezwolenie do kontekstu żądania

  • aws:SourceIp: sieć, z której przyszło żądanie

Jedno zezwolenie na odczyt obiektu S3 przechodzi przez warstwę warunków z kluczem sieci źródłowej i kluczem tagu wywołującego, po czym rozdziela się na ścieżkę dozwoloną, gdy kontekst pasuje, i ścieżkę odmowy, gdy nie pasuje.

Bezpieczeństwo AWS dla deweloperów

Warunek zawęża zezwolenie

Klucz warunku

  • Zawęża zezwolenie do kontekstu żądania

  • aws:SourceIp: sieć, z której przyszło żądanie

  • aws:PrincipalTag: tag na wywołującym

ABAC: kontrola dostępu oparta na atrybutach

  • Jedna zasada, wiele podmiotów

Jedno zezwolenie na odczyt obiektu S3 przechodzi przez warstwę warunków z kluczem sieci źródłowej i kluczem tagu wywołującego, po czym rozdziela się na ścieżkę dozwoloną, gdy kontekst pasuje, i ścieżkę odmowy, gdy nie pasuje.

Bezpieczeństwo AWS dla deweloperów

Jedna tabela, jeden najemca naraz

Jedna współdzielona tabela

  • DynamoDB, jeden klucz partycji na najemcę
  • Sama w sobie nie zapewnia izolacji

Wywołujący najemcy A przechodzi przez warunek kluczy wiodących do współdzielonej tabeli DynamoDB, gdzie zwracane są wiersze najemcy A, a wiersze najemców B i C są blokowane.

Bezpieczeństwo AWS dla deweloperów

Jedna tabela, jeden najemca naraz

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

Jedna współdzielona tabela

  • DynamoDB, jeden klucz partycji na najemcę
  • Sama w sobie nie zapewnia izolacji

Jeden warunek to zawęża

  • ForAllValues: każdy podany klucz musi pasować
Bezpieczeństwo AWS dla deweloperów

Jedna tabela, jeden najemca naraz

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

Jedna współdzielona tabela

  • DynamoDB, jeden klucz partycji na najemcę
  • Sama w sobie nie zapewnia izolacji

Jeden warunek to zawęża

  • ForAllValues: każdy podany klucz musi pasować
Luka, która zostaje: nie każde żądanie wskazuje partycję
  • dynamodb:Scan nie podaje żadnej, więc nic nie może nie przejść
Bezpieczeństwo AWS dla deweloperów

Czas na praktykę!

Bezpieczeństwo AWS dla deweloperów

Preparing Video For Download...