Vyhodnocování zásad IAM a explicitní zamítnutí

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

Rahul Singh

Technical Product Manager

Zásada je seznam pravidel

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

Tři pole jednoho pravidla IAM na jedné ose, očíslovaná jedna až tři: Effect je allow nebo deny, Action říká, o jaké volání API jde, a Resource určuje cíl pomocí ARN.

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

Zásada je seznam pravidel

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

Čtyři pole jednoho pravidla IAM na jedné ose, očíslovaná jedna až čtyři: Effect je allow nebo deny, Action je, o jaké volání API jde, Resource určuje cíl pomocí ARN a Condition popisuje, jaké musí být okolnosti. Závěrečný řádek zní: čtyři pole, jedno pravidlo.

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

Tři pole se ptají, jedno odpovídá

Otázka

  • Action: je to toto volání?
  • Resource: je to tento cíl?
  • Condition: odpovídají okolnosti?

Odpověď

  • Effect: allow, nebo deny

Čtyři pole pravidla IAM seřazená svisle: Action, Resource a Condition jsou spojená závorkou s označením „Otázka", a Effect je spojené druhou závorkou s označením „Odpověď".

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

Pravidla pocházejí z více míst

Dokument zásady připojený k roli, se šipkou vedoucí od role k bucketu.

Založené na identitě

  • Připojené k roli
  • Co tato role smí dělat
Zabezpečení AWS pro vývojáře

Pravidla pocházejí z více míst

Dokument zásady připojený k roli, se šipkou vedoucí od role k bucketu.

Dokument zásady připojený ke zdroji, se šipkou vedoucí od principala k bucketu.

Založené na identitě

  • Připojené k roli
  • Co tato role smí dělat

Založené na zdroji

  • Připojené k cílovému zdroji
  • Kdo se může dostat k tomuto bucketu
Zabezpečení AWS pro vývojáře

Když si pravidla odporují

{"Effect": "Allow", "Action": "s3:*", "Resource": "*"}
{"Effect": "Deny",  "Action": "s3:DeleteObject", "Resource": "*"}
Zabezpečení AWS pro vývojáře

Když si pravidla odporují

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

Požadavek: s3:DeleteObject skončí jako: Zamítnuto.

Explicitní zamítnutí přebije jakékoli allow, i to nejširší

Pravidlo typu allow a pravidlo typu deny vedou k jednomu požadavku, cesta deny je zvýrazněná a výsledek je označen jako zamítnuto.

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

Pořadí vyhodnocování a implicitní zamítnutí

Vývojový diagram vyhodnocování zásad IAM: požadavek na API se nejprve kontroluje na platné explicitní zamítnutí, poté na platné allow, a pokud nenajde ani jedno, skončí jako implicitní zamítnutí.

  • Explicitní zamítnutí: něco řeklo ne
  • Allow: něco řeklo ano a nic neřeklo ne
  • Implicitní zamítnutí: neřeklo se vůbec nic
Zabezpečení AWS pro vývojáře

Čtyři požadavky, tři výsledky

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

{"Effect": "Deny", "Action": "s3:DeleteObject",
 "Resource": "*"}
  • s3:GetObject → allow: pokrývá to široké allow
  • s3:DeleteObject → explicitní zamítnutí: pravidlo říká ne
  • kms:Decrypt, dynamodb:GetItem → implicitní zamítnutí: tato zásada tyto služby vůbec nezmiňuje
  • KMS uchovává šifrovací klíče; DynamoDB je spravovaná key-value databáze
Zabezpečení AWS pro vývojáře

Proč přidávání oprávnění často nefunguje

Stejná chyba, dvě příčiny

Explicitní zamítnutí

  • Další allow nic nezmění
  • Najdi zamítnutí a zúž ho, nebo ho odstraň

Implicitní zamítnutí

  • Jedno úzké allow
  • U identity, která volání provedla

Chyba AccessDenied se větví do dvou příčin. Vlevo bylo nalezeno zamítnutí, takže další allow nic nezmění. Vpravo nebylo nalezeno žádné allow, takže řešením je jedno úzké allow na volající identitě.

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

Pojďme cvičit!

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

Preparing Video For Download...