Ocena polityki IAM i jawna odmowa

Bezpieczeństwo AWS dla deweloperów

Rahul Singh

Technical Product Manager

Polityka to lista reguł

{
  "Effect": "Allow",
  "Action": "s3:GetObject",
  "Resource": "arn:aws:s3:::reports/*",
  "Condition": {
    "Bool": {
      "aws:SecureTransport": "true"
    },
    "IpAddress": {
      "aws:SourceIp": "203.0.113.0/24"
    }
  }
}

Trzy pola jednej reguły IAM ułożone jedna pod drugą i ponumerowane od jeden do trzy: Effect to zezwolenie lub odmowa, Action to wywołanie API, a Resource to element, do którego się odnosi, określony przez ARN.

Bezpieczeństwo AWS dla deweloperów

Polityka to lista reguł

{
  "Effect": "Allow",
  "Action": "s3:GetObject",
  "Resource": "arn:aws:s3:::reports/*",
  "Condition": {
    "Bool": {
      "aws:SecureTransport": "true"
    },
    "IpAddress": {
      "aws:SourceIp": "203.0.113.0/24"
    }
  }
}

Cztery pola jednej reguły IAM ułożone jedna pod drugą i ponumerowane od jeden do cztery: Effect to zezwolenie lub odmowa, Action to wywołanie API, Resource to element, do którego się odnosi, określony przez ARN, a Condition to warunki, jakie muszą być spełnione. Na dole napis: cztery pola, jedna reguła.

Bezpieczeństwo AWS dla deweloperów

Trzy pola pytają, jedno odpowiada

Pytanie

  • Action: czy to to wywołanie
  • Resource: czy to ten cel
  • Condition: czy warunki się zgadzają

Odpowiedź

  • Effect: zezwolenie czy odmowa

Cztery pola reguły IAM ułożone pionowo: Action, Resource i Condition objęte jednym nawiasem z etykietą „Pytanie", a Effect objęty drugim nawiasem z etykietą „Odpowiedź".

Bezpieczeństwo AWS dla deweloperów

Reguły pochodzą z więcej niż jednego miejsca

Dokument polityki dołączony do roli, ze strzałką prowadzącą od roli do bucketu.

Oparte na tożsamości

  • Dołączone do roli
  • Co może robić ta rola
Bezpieczeństwo AWS dla deweloperów

Reguły pochodzą z więcej niż jednego miejsca

Dokument polityki dołączony do roli, ze strzałką prowadzącą od roli do bucketu.

Dokument polityki dołączony do zasobu, ze strzałką prowadzącą od podmiotu wywołującego do bucketu.

Oparte na tożsamości

  • Dołączone do roli
  • Co może robić ta rola

Oparte na zasobie

  • Dołączone do elementu, do którego kierowany jest dostęp
  • Kto może uzyskać dostęp do tego bucketu
Bezpieczeństwo AWS dla deweloperów

Gdy reguły są sprzeczne

{"Effect": "Allow", "Action": "s3:*", "Resource": "*"}
{"Effect": "Deny",  "Action": "s3:DeleteObject", "Resource": "*"}
Bezpieczeństwo AWS dla deweloperów

Gdy reguły są sprzeczne

{"Effect": "Allow", "Action": "s3:*", "Resource": "*"}
{"Effect": "Deny",  "Action": "s3:DeleteObject", "Resource": "*"}

Żądanie: s3:DeleteObject kończy się wynikiem: odmowa.

Jawna odmowa zawsze wygrywa z zezwoleniem, nawet najszerszym

Reguła zezwalająca i reguła odmawiająca prowadzące do jednego żądania, ze ścieżką odmowy zaznaczoną grubą linią i wynikiem oznaczonym jako odmowa.

Bezpieczeństwo AWS dla deweloperów

Kolejność oceny i domyślna odmowa

Schemat oceny polityki IAM: żądanie API sprawdza najpierw obowiązującą jawną odmowę, potem obowiązujące zezwolenie, a gdy nie znajdzie żadnego z nich, kończy się domyślną odmową.

  • Jawna odmowa: coś powiedziało nie
  • Zezwolenie: coś powiedziało tak, a nic nie powiedziało nie
  • Domyślna odmowa: żadna reguła się nie odezwała
Bezpieczeństwo AWS dla deweloperów

Cztery żądania, trzy wyniki

{"Effect": "Allow", "Action": "s3:*",
 "Resource": "*"}

{"Effect": "Deny", "Action": "s3:DeleteObject",
 "Resource": "*"}
  • s3:GetObject → zezwolenie: obejmuje je szerokie zezwolenie
  • s3:DeleteObject → jawna odmowa: jedna z reguł mówi nie
  • kms:Decrypt, dynamodb:GetItem → domyślna odmowa: ta polityka w ogóle nie wspomina o tych usługach
  • KMS przechowuje klucze szyfrujące, DynamoDB to zarządzana baza danych typu klucz-wartość
Bezpieczeństwo AWS dla deweloperów

Dlaczego dodawanie uprawnień często nie pomaga

Ten sam błąd, dwie przyczyny

Jawna odmowa

  • Kolejne zezwolenie niczego nie zmienia
  • Znajdź odmowę, a potem ogranicz ją lub usuń

Domyślna odmowa

  • Jedno wąskie zezwolenie
  • Na tożsamości, która wykonała wywołanie

Błąd AccessDenied rozgałęziający się na dwie przyczyny. Po lewej: znaleziono odmowę, więc kolejne zezwolenia niczego nie zmieniają. Po prawej: nie znaleziono zezwolenia, więc rozwiązaniem jest jedno wąskie zezwolenie na tożsamości wywołującej.

Bezpieczeństwo AWS dla deweloperów

Czas na praktykę!

Bezpieczeństwo AWS dla deweloperów

Preparing Video For Download...