Autorizarea accesului la servicii cu IAM

Implementarea aplicațiilor pe AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Cheia din commit

  • O cheie de acces cu durată lungă este salvată într-un repo
  • Un bot de scanare o găsește și generează costuri
  • Rolurile și privilegiul minim previn asta

O cheie de acces AWS scursă accidental într-un commit de cod, marcată ca risc de securitate

Implementarea aplicațiilor pe AWS

Principali IAM: utilizatori, roluri și politici

Diagramă IAM cu trei coloane: Principal (utilizator, serviciu sau rol) la stânga, document de politică cu acțiuni Allow/Deny în centru, rol IAM cu credențiale temporare pe termen scurt la dreapta

  • Principal: cine face cererea
  • Policy: un document JSON care acordă permisiuni
  • Role: un set de permisiuni pe care o entitate le poate asuma
  • Rolurile sunt asumate; utilizatorii dețin credențiale cu durată lungă
Implementarea aplicațiilor pe AWS

Credențiale programatice folosite corect

  • Lambda: un rol de execuție acordă permisiuni
  • EC2: un profil de instanță livrează credențialele rolului
  • ECS: rolurile de task limitează permisiunile per task
  • Nicio cheie de acces cu durată lungă în cod sau configurație

Trei servicii de calcul AWS care folosesc roluri fără chei cu durată lungă: Lambda cu rol de execuție, EC2 cu profil de instanță și ECS cu rol de task, fiecare cu rotație automată a credențialelor

Implementarea aplicațiilor pe AWS

AssumeRole și STS

  • STS AssumeRole: obține credențiale temporare pentru un rol
  • Folosit pentru acces cross-account
  • Politica de trust controlează cine poate asuma rolul
  • Credențialele sunt de scurtă durată și expiră automat

Flux cross-account STS AssumeRole: apelantul din Contul A solicită credențiale de la STS, politica de trust a rolului din Contul B permite asta, STS returnează credențiale de scurtă durată care expiră automat

Implementarea aplicațiilor pe AWS

Privilegiul minim și structura politicii

O instrucțiune de politică are trei componente obligatorii (Effect, Action și Resource) plus o Condition opțională:

{
  "Effect": "Allow",
  "Action": "dynamodb:PutItem",
  "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/Orders",
  "Condition": {
    "Bool": { "aws:SecureTransport": "true" }
  }
}
Implementarea aplicațiilor pe AWS

Unde se oprește IAM și unde începe codul tău


IAM: nivelul de serviciu

  • Autorizează apelurile AWS API: poate rolul acesta să execute operațiunea?
  • Nu poate impune reguli per-tenant sau per-înregistrare

Codul tău: nivelul de date

  • Verifică utilizatorul autentificat față de datele solicitate
  • Folosește ambele: IAM protejează serviciul, codul tău protejează datele
Implementarea aplicațiilor pe AWS

Un rol de execuție cu privilegiu minim în practică

Rol de execuție Lambda minimal: permisiunea DynamoDB PutItem acordată doar pentru ARN-ul unui singur tabel, fără wildcarduri pe acțiune sau resursă

  • O funcție Lambda trebuie să scrie într-un singur tabel DynamoDB
  • Acordă dynamodb:PutItem doar pe ARN-ul acelui tabel
  • Niciun wildcard pe acțiune sau resursă
  • Adaugă mai mult doar dacă un apel real este refuzat
Implementarea aplicațiilor pe AWS

Hai să exersăm!

Implementarea aplicațiilor pe AWS

Preparing Video For Download...