Autorizace přístupu ke službám pomocí IAM

Nasazování aplikací na AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Klíč v commitu

  • Do repozitáře se dostane dlouhodobý přístupový klíč
  • Skenovací bot ho najde a naběhne výdaj
  • Role a princip nejnižšího oprávnění tomu zabrání

Přístupový klíč AWS náhodně uniklý v commitu, označený jako bezpečnostní riziko

Nasazování aplikací na AWS

IAM principálové: uživatelé, role a policy

Diagram IAM se třemi sloupci: vlevo Principal (uživatel, služba nebo role), uprostřed Policy dokument s akcemi Allow/Deny, vpravo IAM Role s dočasnými krátkodobými přihlašovacími údaji

  • Principal: kdo žádost odesílá
  • Policy: JSON dokument udělující oprávnění
  • Role: sada oprávnění, kterou entita může převzít
  • Role se přebírají; uživatelé mají dlouhodobé přihlašovací údaje
Nasazování aplikací na AWS

Programatické přihlašovací údaje správně

  • Lambda: execution role uděluje oprávnění
  • EC2: instance profile předává přihlašovací údaje role
  • ECS: task roles omezují oprávnění na úrovni tasku
  • Žádné dlouhodobé přístupové klíče v kódu ani v konfiguraci

Tři výpočetní služby AWS využívající role bez dlouhodobých klíčů: Lambda s execution role, EC2 s instance profile a ECS s task role, každá s automatickou rotací přihlašovacích údajů

Nasazování aplikací na AWS

AssumeRole a STS

  • STS AssumeRole: získání dočasných přihlašovacích údajů pro roli
  • Používá se pro přístup mezi účty
  • Trust policy určuje, kdo může roli převzít
  • Přihlašovací údaje jsou krátkodobé a expirují automaticky

Cross-account tok STS AssumeRole: volající v účtu A žádá STS o přihlašovací údaje, trust policy role v účtu B to povoluje, STS vrací krátkodobé přihlašovací údaje s automatickou expirací

Nasazování aplikací na AWS

Nejnižší oprávnění a struktura policy

Policy statement má tři povinné části (Effect, Action a Resource) a volitelnou Condition:

{
  "Effect": "Allow",
  "Action": "dynamodb:PutItem",
  "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/Orders",
  "Condition": {
    "Bool": { "aws:SecureTransport": "true" }
  }
}
Nasazování aplikací na AWS

Kde IAM končí a začíná tvůj kód


IAM: vrstva služeb

  • Autorizuje volání AWS API: smí tato role volat tuto operaci?
  • Nedokáže vymáhat pravidla pro jednotlivé tenanty ani záznamy

Tvůj kód: datová vrstva

  • Ověřuje přihlášeného uživatele vůči požadovaným datům
  • Používej obojí: IAM chrání službu, tvůj kód chrání data
Nasazování aplikací na AWS

Execution role s nejnižším oprávněním v praxi

Minimální Lambda execution role: jediné oprávnění DynamoDB PutItem udělené pouze na ARN jedné tabulky, bez zástupných znaků v akci ani prostředku

  • Lambda potřebuje zapisovat do jedné tabulky DynamoDB
  • Uděl dynamodb:PutItem pouze na ARN této tabulky
  • Žádné zástupné znaky v akci ani prostředku
  • Přidávej oprávnění jen tehdy, když je skutečné volání zamítnuto
Nasazování aplikací na AWS

Pojďme cvičit!

Nasazování aplikací na AWS

Preparing Video For Download...