Service-toegang autoriseren met IAM

Applicaties implementeren op AWS

Dunieski Otano

Amazon Web Services Solutions Architect

De sleutel in de commit

  • Een langdurige access key wordt in een repo gecommit
  • Een scanner-bot vindt die en jaagt de rekening omhoog
  • Rollen en least privilege voorkomen dit

Een AWS-access key die per ongeluk is gelekt in een codecommit, gemarkeerd als beveiligingsrisico

Applicaties implementeren op AWS

IAM-principals: users, roles en policies

IAM-drieluik: Principal (gebruiker, service of rol) links, Policy-document met Allow/Deny-acties in het midden, IAM Role met tijdelijke kortdurende referenties rechts

  • Principal: wie doet de aanvraag
  • Policy: een JSON-document dat rechten verleent
  • Role: een set rechten die een entiteit kan aannemen
  • Rollen neem je aan; gebruikers hebben langdurige referenties
Applicaties implementeren op AWS

Programmatic credentials goed geregeld

  • Lambda: een execution role verleent rechten
  • EC2: een instance profile levert rolreferenties
  • ECS: task roles beperken rechten per taak
  • Geen langdurige access keys in code of config

Drie AWS-computeservices die rollen gebruiken zonder langdurige sleutels: Lambda met execution role, EC2 met instance profile en ECS met task role, elk met automatische referentierotatie

Applicaties implementeren op AWS

AssumeRole en STS

  • STS AssumeRole: krijg tijdelijke referenties voor een rol
  • Gebruikt voor cross-account toegang
  • De trust policy bepaalt wie de rol mag aannemen
  • Referenties zijn kortdurend en verlopen automatisch

STS AssumeRole cross-account-flow: aanroeper in Account A vraagt referenties aan STS, trust policy op rol in Account B staat dit toe, STS retourneert kortdurende referenties die automatisch verlopen

Applicaties implementeren op AWS

Least privilege en policy-structuur

Een policy statement heeft drie verplichte delen (Effect, Action en Resource) plus een optionele Condition:

{
  "Effect": "Allow",
  "Action": "dynamodb:PutItem",
  "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/Orders",
  "Condition": {
    "Bool": { "aws:SecureTransport": "true" }
  }
}
Applicaties implementeren op AWS

Waar IAM stopt en je code begint


IAM: de servicelaag

  • Autoriseert AWS API-calls: mag deze rol deze bewerking aanroepen?
  • Kan geen regels per tenant of record afdwingen

Je code: de datalaag

  • Checkt de geauthenticeerde gebruiker tegen de gevraagde data
  • Gebruik beide: IAM bewaakt de service, je code bewaakt de data
Applicaties implementeren op AWS

Een least-privilege execution role in de praktijk

Minimale Lambda-execution role: enkel DynamoDB PutItem-recht, alleen verleend op één tabel-ARN, zonder wildcards op actie of resource

  • Een Lambda moet naar één DynamoDB-tabel schrijven
  • Verleen dynamodb:PutItem alleen op de ARN van die tabel
  • Geen wildcards op actie of resource
  • Voeg pas meer toe als een echte call wordt geweigerd
Applicaties implementeren op AWS

Laten we oefenen!

Applicaties implementeren op AWS

Preparing Video For Download...