Autoryzacja dostępu do usług z IAM

Wdrażanie aplikacji na AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Klucz w commicie

  • Klucz dostępu o długim czasie życia trafia do repozytorium
  • Bot skanujący go znajduje i generuje ogromne koszty
  • Role i zasada najmniejszych uprawnień temu zapobiegają

Klucz dostępu AWS przypadkowo ujawniony w commicie kodu, oznaczony jako zagrożenie bezpieczeństwa

Wdrażanie aplikacji na AWS

Podmioty IAM: użytkownicy, role i polityki

Diagram IAM z trzema kolumnami: Principal (użytkownik, usługa lub rola) po lewej, dokument Policy z akcjami Allow/Deny pośrodku, rola IAM z krótkotrwałymi poświadczeniami tymczasowymi po prawej

  • Principal: kto wysyła żądanie
  • Policy: dokument JSON nadający uprawnienia
  • Role: zestaw uprawnień, które może przyjąć dany podmiot
  • Role są przyjmowane tymczasowo; użytkownicy mają trwałe poświadczenia
Wdrażanie aplikacji na AWS

Poświadczenia programowe — jak to robić poprawnie

  • Lambda: rola wykonawcza nadaje uprawnienia
  • EC2: profil instancji dostarcza poświadczenia roli
  • ECS: role zadań ograniczają uprawnienia do konkretnego zadania
  • Żadnych trwałych kluczy dostępu w kodzie ani konfiguracji

Trzy usługi obliczeniowe AWS używające ról bez trwałych kluczy: Lambda z rolą wykonawczą, EC2 z profilem instancji i ECS z rolą zadania — każda z automatyczną rotacją poświadczeń

Wdrażanie aplikacji na AWS

AssumeRole i STS

  • STS AssumeRole: pobiera tymczasowe poświadczenia dla roli
  • Służy do dostępu między kontami
  • Polityka zaufania kontroluje, kto może przyjąć daną rolę
  • Poświadczenia są krótkotrwałe i wygasają automatycznie

Przepływ STS AssumeRole między kontami: wywołujący z konta A żąda poświadczeń od STS, polityka zaufania roli na koncie B zezwala na to, STS zwraca krótkotrwałe poświadczenia wygasające automatycznie

Wdrażanie aplikacji na AWS

Zasada najmniejszych uprawnień i struktura polityki

Instrukcja polityki ma trzy wymagane elementy (Effect, Action i Resource) oraz opcjonalny Condition:

{
  "Effect": "Allow",
  "Action": "dynamodb:PutItem",
  "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/Orders",
  "Condition": {
    "Bool": { "aws:SecureTransport": "true" }
  }
}
Wdrażanie aplikacji na AWS

Gdzie kończy się IAM, a zaczyna twój kod


IAM: warstwa usługi

  • Autoryzuje wywołania AWS API: czy ta rola może wykonać tę operację?
  • Nie obsługuje reguł per-tenant ani per-rekord

Twój kod: warstwa danych

  • Weryfikuje uwierzytelnionego użytkownika w kontekście żądanych danych
  • Używaj obu: IAM chroni usługę, twój kod chroni dane
Wdrażanie aplikacji na AWS

Rola wykonawcza z najmniejszymi uprawnieniami w praktyce

Minimalna rola wykonawcza Lambda: pojedyncze uprawnienie DynamoDB PutItem nadane tylko na jeden ARN tabeli, bez użycia symboli wieloznacznych dla akcji ani zasobu

  • Lambda musi zapisywać do jednej tabeli DynamoDB
  • Nadaj dynamodb:PutItem wyłącznie na ARN tej tabeli
  • Żadnych symboli wieloznacznych dla akcji ani zasobu
  • Dodawaj kolejne uprawnienia tylko wtedy, gdy wywołanie zostanie odrzucone
Wdrażanie aplikacji na AWS

Czas na praktykę!

Wdrażanie aplikacji na AWS

Preparing Video For Download...