AWS IAM
Security Cloud Practitioner Solutions Architect Associate SysOps Administrator

AWS IAM

AWS Identity and Access Management

Kontroluj kto ma dostęp do czego w Twoim koncie AWS. Fundamentalny serwis bezpieczeństwa - darmowy i globalny.

AWS IAM (Identity and Access Management) to serwis, który pozwala precyzyjnie zarządzać dostępem do zasobów AWS. Tworzysz użytkowników, grupy i role, a następnie przypisujesz im polityki (policies) określające co mogą - i czego nie mogą - robić.

IAM jest całkowicie darmowy i globalny - działa we wszystkich regionach jednocześnie. To pierwszy serwis, który powinieneś skonfigurować po utworzeniu konta AWS. Zasada numer jeden: nigdy nie używaj konta root do codziennej pracy. Stwórz sobie użytkownika IAM z uprawnieniami administratora i włącz MFA.

IAM opiera się na zasadzie least privilege - dawaj tylko te uprawnienia, które są absolutnie niezbędne. Jeśli Lambda potrzebuje czytać z jednego bucketa S3, nie dawaj jej dostępu do wszystkich bucketów.

Czy wiesz, ze...

IAM obsługuje do 5000 użytkowników na konto AWS i do 10 000 ról. Ale w praktyce best practice to minimalizacja użytkowników IAM na rzecz ról i federacji tożsamości. Duże firmy często mają 0 użytkowników IAM - wszyscy logują się przez SSO/Identity Center.

Pro Tip

Używaj IAM Access Analyzer do znajdowania zasobów udostępnionych na zewnątrz Twojego konta. Włącz AWS CloudTrail, żeby mieć pełny audit log kto, co i kiedy robił. Regularnie przeglądaj IAM Credential Report - pokazuje ostatnią aktywność każdego użytkownika.

Uwaga

Nigdy nie umieszczaj access keys w kodzie źródłowym, na GitHubie ani w zmiennych środowiskowych na stałe. Jeśli klucze wyciekną, atakujący może w minuty postawić farmy do kopania kryptowalut na Twoim koncie. Zawsze używaj ról IAM zamiast kluczy, gdzie to możliwe.

IAM (Identity and Access Management) kontroluje KTO moze CO robic na JAKICH zasobach w Twoim koncie AWS. Kazde wywolanie API w AWS przechodzi przez IAM - to centralny punkt kontroli bezpieczenstwa. IAM jest globalny (nie per region) i darmowy.

1

Tworzenie tozsamosci (User, Role, Group)

IAM User to tozsamosc z dlugoteminowymi credentials (haslo do konsoli, access keys do CLI/API). IAM Group to kolekcja userow z wspolnymi uprawnieniami (np. grupa "Developers"). IAM Role to tozsamosc BEZ stalych credentials - tymczasowe tokeny sa generowane przez STS. Best practice: uzywaj IAM Roles zamiast Users wszedzie gdzie to mozliwe (EC2, Lambda, ECS).

2

Polaczenie polityk (Policies)

Policy to JSON dokument definiujacy uprawnienia. Typy: AWS Managed (utrzymywane przez AWS, np. AmazonS3ReadOnlyAccess), Customer Managed (Twoje wlasne), Inline (bezposrednio w user/role/group). Polityki maja: Effect (Allow/Deny), Action (np. s3:GetObject), Resource (ARN zasobu), opcjonalnie Condition (warunki). Deny zawsze wygrywa nad Allow.

3

Definiowanie uprawnien (JSON)

Przyklad polityki: {"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":["s3:GetObject","s3:PutObject"],"Resource":"arn:aws:s3:::my-bucket/*","Condition":{"IpAddress":{"aws:SourceIp":"10.0.0.0/8"}}}]}. Klucz Version to zawsze 2012-10-17. Wildcard * mozna uzywac w Action i Resource. Condition pozwala na warunki: IP, czas, MFA, tag, VPC endpoint i wiele wiecej.

4

Assume Role - przejemowanie roli

Aby uzyc IAM Role, tozsamosc "przejmuje" ja przez STS AssumeRole. Trust Policy na roli definiuje KTO moze ja przejac (np. serwis EC2, inne konto AWS, user z MFA). Po assume role STS zwraca tymczasowe credentials (Access Key + Secret Key + Session Token) wazne od 15 min do 12 godzin. Instancje EC2 automatycznie assume swouj Instance Profile role.

5

Ewaluacja polityk

Przy kazdym API call IAM ewaluuje: 1) Czy jest explicit Deny - jesli tak, DENY. 2) Czy jest explicit Allow - jesli tak, Allow. 3) Brak pasujacego statement - implicit Deny. Kolejnosc ewaluacji: SCPs (Organization) -> Resource-based policies -> Permission boundaries -> Session policies -> Identity-based policies. Zrozumienie tej kolejnosci jest kluczowe do debugowania uprawnien.

6

Przyznanie lub odmowa dostepu

Koncowy wynik to Allow lub Deny. Cross-account access wymaga Allow zarowno w identity-based policy (konto zrodlowe) JAK I resource-based policy (konto docelowe). Wyjatki: resource-based policy z Principal na konkretnego usera moze zezwalac nawet bez identity-based policy w koncie zrodlowym. IAM Policy Simulator pozwala testowac polityki bez faktycznego wykonywania operacji.

IAM to najwazniejszy serwis AWS z perspektywy bezpieczenstwa. Zle skonfigurowany IAM to przyczyna wiekszosci naruszen bezpieczenstwa w chmurze.

Least Privilege - minimum potrzebnych uprawnien

Nigdy nie nadawaj "Action": "*" ani "Resource": "*" w produkcji. Zacznij od zera i dodawaj uprawnienia w miare potrzeb. Uzywaj IAM Access Analyzer do generowania polityk na podstawie CloudTrail - analizuje jakie API calls byly faktycznie wykonywane i proponuje minimalna polityke. Regularnie przegladaj nieuzywane uprawnienia: IAM Access Advisor pokazuje kiedy uprawnienia byly ostatnio uzyte.

Poczatkujacy

Service Control Policies (SCPs) - guardrails organizacji

SCPs w AWS Organizations definiuja MAKSYMALNE uprawnienia dla calego konta lub OU (Organizational Unit). SCP nie nadaje uprawnien - ogranicza to, co identity-based policies moga zrobic. Przyklad: SCP blokujacy regiony (DenyAllOutsideEU) uniemozliwia uruchomienie zasobow poza eu-central-1 i eu-west-1, niezaleznie od uprawnien usera. SCP nie wplywa na root usera konta zarzadzajacego (management account).

Zaawansowany

Permission Boundaries - delegowanie bez ryzyka

Permission Boundary to polityka ustawiona na userze/roli, ktora definiuje MAKSYMALNE mozliwe uprawnienia. Nawet jesli identity policy daje "s3:*", a boundary pozwala tylko "s3:GetObject" - efektywnie masz tylko GetObject. Uzywaj do delegowania tworzenia ról - deweloper moze tworzyc IAM Roles, ale tylko z permission boundary, ktora Ty kontrolujesz. Zapobiega eskalacji uprawnien.

Zaawansowany

IAM Access Analyzer - wykryj publiczny dostep

Access Analyzer skanuje Twoje konto i wykrywa zasoby udostepnione publicznie lub cross-account: S3 buckety, IAM roles, KMS keys, Lambda functions, SQS queues. Darmowy w podstawowej wersji. Od 2024 wspiera tez custom policy checks - mozes zdefiniowac reguey (np. "zadna polityka nie moze dawac s3:* do *") i sprawdzac nowe polityki przed wdrozeniem w pipeline CI/CD.

Poczatkujacy

MFA - wymuszanie wielopoziomowej autentykacji

Wymus MFA dla wszystkich IAM userow z dostepem do konsoli. Dla operacji krytycznych (np. usuwanie zasobow) dodaj warunek MFA w policy: "Condition":{"Bool":{"aws:MultiFactorAuthPresent":"true"}}. Wspierane typy MFA: virtual (aplikacja np. Google Authenticator), hardware token (YubiKey), FIDO2 security key. Root user ZAWSZE powinien miec MFA. Rozwaaz AWS IAM Identity Center (SSO) zamiast IAM userow.

Poczatkujacy

Cross-account roles - bezpieczny dostep miedzy kontami

Zamiast tworzyc IAM userow w kazdym koncie, stworz role cross-account. W koncie docelowym: IAM Role z Trust Policy wskazujaca na konto zrodlowe. W koncie zrodlowym: polityke pozwalajaca na sts:AssumeRole. Uzytkownik przejmuje role przez STS i dostaje tymczasowe credentials. Mozesz wymagac MFA do assume role (Condition: aws:MultiFactorAuthPresent). External ID chroni przed "confused deputy" w scenariuszach third-party.

Zaawansowany

Screenshoty z AWS Console

Wkrotce pojawia sie tu zrzuty ekranu pokazujace jak korzystac z AWS IAM bezposrednio w konsoli AWS.

Do czego sluzy AWS IAM?

01

Kontrola dostępu (RBAC)

Określ precyzyjnie kto może uruchamiać EC2, czytać z S3, tworzyć bazy danych. Grupy ułatwiają zarządzanie - dodajesz użytkownika do grupy "Developers" i automatycznie dostaje odpowiednie uprawnienia.

02

Federacja tożsamości i SSO

Logowanie do AWS przez firmowy Active Directory, Google Workspace, Okta lub GitHub. Pracownicy nie potrzebują osobnych haseł do AWS - używają istniejących firmowych kont.

03

Role dla serwisów (Service Roles)

Pozwól Lambda czytać z S3, EC2 korzystać z SSM Parameter Store, ECS pobierać obrazy z ECR - bez hardcodowanych kluczy API. Role automatycznie rotują credentials.

04

Cross-account access

Bezpiecznie udostępniaj zasoby między kontami AWS. Np. konto produkcyjne ma rolę, którą mogą założyć developerzy z konta dev - bez kopiowania danych.

Co musisz wiedziec?

IAM User

Tożsamość osoby lub aplikacji z własnymi credentials. Może mieć login/hasło (konsola) i/lub access keys (CLI/API). Best practice: minimalizuj liczbę Users, preferuj Role.

IAM Group

Logiczny zbiór użytkowników z tymi samymi uprawnieniami. Np. "Developers" (EC2 + S3 + Lambda), "DBAdmins" (RDS + DynamoDB). Użytkownik może być w wielu grupach.

IAM Role

Tożsamość z uprawnieniami, ale BEZ stałych credentials. Credentials są tymczasowe (STS). Idealny dla serwisów AWS, federacji, cross-account access. Zawsze bezpieczniejszy niż User.

IAM Policy

Dokument JSON z regułami Allow/Deny. Określa: kto (Principal), co (Action, np. s3:GetObject), na czym (Resource, np. arn:aws:s3:::moj-bucket/*), kiedy (Condition). Domyślnie: wszystko jest Deny.

MFA (Multi-Factor Authentication)

Dodatkowa warstwa bezpieczeństwa - oprócz hasła wymagany kod z aplikacji (Google Authenticator, Authy) lub klucza sprzętowego (YubiKey). Obowiązkowe dla konta root i zalecane dla wszystkich.

Identity Center (dawniej AWS SSO)

Centralny punkt logowania do wielu kont AWS i aplikacji chmurowych. Integruje się z Active Directory, Okta, Google. Recommended way do zarządzania dostępem w organizacji.

Architektura: Bezpieczny dostep z IAM Roles

Wzorzec produkcyjny gdzie kazdy komponent ma minimalny zestaw uprawnien przez dedykowana IAM Role. Zero dlugoteminowych credentials, pelna audytowalnosc przez CloudTrail.

Developer Loguje sie przez IAM Identity Center (SSO), assume role do konta docelowego
AssumeRole + MFA
IAM + STS
IAM + STS Weryfikacja tozsamosci, ewaluacja polityk, generowanie tymczasowych credentials
Temporary credentials
EC2 z Instance Profile
EC2 z Instance Profile Aplikacja uzywa IAM Role zamiast access keys, credentials rotowane automatycznie co 6h
Scoped permissions
S3 + DynamoDB
S3 + DynamoDB Zasoby z resource-based policies ograniczajacymi dostep do konkretnych ról
Audit log
CloudTrail
CloudTrail Loguje KAZDE wywolanie API: kto, co, kiedy, skad. Niezbedny do audytu i compliance
EC2 Instance Profile automatycznie rotuje tymczasowe credentials - aplikacja pobiera je z IMDS (169.254.169.254). Uzyaj AWS SDK, ktory automatycznie obsluguje credential chain.
Ewaluacja IAM: SCP (Organization) -> Permission Boundary -> Identity Policy -> Resource Policy. Deny na KAZDYM poziomie blokuje dostep. Uzywaj IAM Policy Simulator do testowania zlozonych scenariuszy.
CloudTrail powinien byc wlaczony w KAZDYM koncie i regionie. Wysylaj logi do centralnego bucketu S3 w koncie security z Object Lock (WORM) - zapobiega modyfikacji logow nawet przez admina.

Porownanie IAM Users vs Roles vs SSO

Cecha IAM Users IAM Roles IAM Identity Center (SSO)
Przypadek uzycia Konta serwisowe, CLI Serwisy AWS, cross-account Ludzie, wiele kont AWS
Bezpieczenstwo Klucze dlugoterminowe (ryzyko) Tymczasowe credentiale (bezpieczne) Tymczasowe credentiale + MFA
Zarzadzanie Per-user w kazdym koncie Centralne policy, assume role Centralny portal, grupy, permission sets
Rotacja kluczy Reczna (wymagana!) Automatyczna (STS) Automatyczna
Best practice 2024+ Unikaj dla ludzi Preferowane dla serwisow Preferowane dla ludzi

Ile kosztuje AWS IAM?

Darmowy

IAM jest całkowicie bezpłatny. Nie ma żadnych opłat za tworzenie użytkowników, grup, ról, polityk czy certyfikatów.

$0.00 - zawsze, bez limitu

IAM Identity Center

Również darmowy. SSO do wielu kont AWS i aplikacji SAML 2.0 bez dodatkowych kosztów.

Nielimitowana liczba użytkowników SSO

IAM Roles Anywhere

Dla workloadów on-premises korzystających z ról IAM. Płacisz za certyfikaty i żądania.

$0.15 za 1000 wydanych credentials

Free Tier

IAM nie wymaga Free Tier - jest darmowy na stałe dla każdego konta AWS. Twórz dowolną liczbę zasobów IAM.

Zawsze darmowy, bez ograniczeń

Przyklady AWS CLI

Lista użytkowników IAM

Wyświetl wszystkich IAM users z datą utworzenia

aws iam list-users \
 --query 'Users[].{Name:UserName,Created:CreateDate}' \
 --output table

Kto ja jestem?

Sprawdź aktualną tożsamość AWS (User/Role, konto)

aws sts get-caller-identity

Utwórz użytkownika

Nowy IAM user z dostępem do konsoli i CLI

aws iam create-user --user-name jan-kowalski

# Dodaj do grupy
aws iam add-user-to-group \
 --user-name jan-kowalski \
 --group-name Developers

Sprawdź uprawnienia roli

Lista polityk przypiętych do roli Lambda

aws iam list-attached-role-policies \
 --role-name lambda-execution-role \
 --output table

Quiz: AWS IAM

Sprawdz czy dobrze rozumiesz podstawy. Kliknij odpowiedz — feedback pojawi sie od razu.

Twoj wynik: 0 / 4

1. Co jest bezpieczniejsze - IAM User z access keys czy IAM Role?

2. Jaka jest domyślna reguła w IAM (jeśli nic nie skonfigurujesz)?

3. Czy IAM jest serwisem regionalnym czy globalnym?

4. Co powinieneś zrobić jako PIERWSZE po utworzeniu konta AWS?

Chcesz poznac AWS IAM w praktyce?

Darmowy kurs "AWS od podstaw" pokazuje jak uzywac AWS IAM krok po kroku. Teoria + praktyka od zera.

Zacznij darmowy kurs Wszystkie serwisy