Auktorisera tjänståtkomst med IAM

Driftsättning av applikationer på AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Nyckeln i incheckningen

  • En långlivad åtkomstnyckel checkas in i ett repo
  • En skanner hittar den och ökar kostnaden
  • Roller och minsta möjliga behörighet förhindrar detta

En AWS-åtkomstnyckel som av misstag läckt ut i ett kodincheckning och flaggats som en säkerhetsrisk

Driftsättning av applikationer på AWS

IAM-principaler: användare, roller och policyer

IAM-diagram med tre kolumner: Principal (användare, tjänst eller roll) till vänster, principdokument med Allow/Deny-åtgärder i mitten, IAM-roll med kortlivade temporära autentiseringsuppgifter till höger

  • Principal: vem som gör anropet
  • Policy: ett JSON-dokument som tilldelar behörigheter
  • Roll: en uppsättning behörigheter som en entitet kan anta
  • Roller antas tillfälligt; användare har långlivade autentiseringsuppgifter
Driftsättning av applikationer på AWS

Programmatiska autentiseringsuppgifter på rätt sätt

  • Lambda: en exekveringsroll tilldelar behörigheter
  • EC2: en instansprofil levererar rollautentiseringsuppgifter
  • ECS: uppgiftsroller begränsar behörigheter per uppgift
  • Inga långlivade åtkomstnycklar i kod eller konfiguration

Tre AWS-beräkningstjänster som använder roller utan långlivade nycklar: Lambda med exekveringsroll, EC2 med instansprofil och ECS med uppgiftsroll – alla med automatisk rotation av autentiseringsuppgifter

Driftsättning av applikationer på AWS

AssumeRole och STS

  • STS AssumeRole: hämtar temporära autentiseringsuppgifter för en roll
  • Används för kontoöverskridande åtkomst
  • Förtroendeprincipens policy styr vem som får anta rollen
  • Autentiseringsuppgifterna är kortlivade och upphör automatiskt

STS AssumeRole kontoöverskridande flöde: anroparen i konto A begär autentiseringsuppgifter från STS, förtroendepolicyn på konto B:s roll godkänner det, STS returnerar kortlivade autentiseringsuppgifter som upphör automatiskt

Driftsättning av applikationer på AWS

Minsta möjliga behörighet och policystruktur

En policydeklaration har tre obligatoriska delar (Effect, Action och Resource) samt ett valfritt Condition:

{
  "Effect": "Allow",
  "Action": "dynamodb:PutItem",
  "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/Orders",
  "Condition": {
    "Bool": { "aws:SecureTransport": "true" }
  }
}
Driftsättning av applikationer på AWS

Var IAM slutar och din kod tar vid


IAM: tjänstlagret

  • Auktoriserar AWS API-anrop: får den här rollen utföra den här åtgärden?
  • Kan inte tillämpa per-klient- eller per-post-regler

Din kod: datalagret

  • Kontrollerar den autentiserade användaren mot begärd data
  • Använd båda: IAM skyddar tjänsten, din kod skyddar datan
Driftsättning av applikationer på AWS

En exekveringsroll med minsta möjliga behörighet i praktiken

Minimal Lambda-exekveringsroll: enskild DynamoDB PutItem-behörighet beviljad endast på ett tabell-ARN, utan jokertecken för åtgärd eller resurs

  • En Lambda behöver skriva till en DynamoDB-tabell
  • Bevilja dynamodb:PutItem endast på den tabellens ARN
  • Inga jokertecken för åtgärd eller resurs
  • Lägg till mer bara om ett verkligt anrop nekas
Driftsättning av applikationer på AWS

Nu kör vi en övning!

Driftsättning av applikationer på AWS

Preparing Video For Download...