Amazon DVA-C02: Bezpieczeństwo, IAM, KMS i zarządzanie sekretami (Cognito, Secrets Manager, SSM) — Przewodnik do nauki

Część AWS Developer Associate DVA-C02 — Przewodnik do nauki. Ćwicz ze zweryfikowanymi odpowiedziami w centrum egzaminów Amazon, albo rozwiąż testy na czas na ExamRoll.io.

IAM, Role, Polityki i Dostęp Międzykontowy

Zarządzanie tożsamością i dostępem powinno być projektowane w oparciu o zasadę najmniejszych uprawnień, krótkotrwałe poświadczenia oraz wyraźne oddzielenie tożsamości usługowych od ludzkich. Dla aplikacji działających na EC2, ECS lub Lambda preferuj role instancji/zadania/funkcji zamiast osadzania kluczy dostępu; zestawy AWS SDK automatycznie wykorzystują łańcuch dostawców poświadczeń (credential provider chain) dostarczany przez środowisko i odświeżają tymczasowe poświadczenia. Dostęp międzykontowy powinien wykorzystywać AWS STS AssumeRole (API: sts:AssumeRole) z jawną polityką zaufania (trust policy) roli na koncie docelowym oraz polityką IAM na koncie wywołującym, która ogranicza, które numery ARN ról mogą być przyjmowane. Gdy wymagasz MFA dla wrażliwych operacji, wymuszaj je za pomocą warunku w polityce roli lub zasobu, używając aws:MultiFactorAuthPresent lub wymagając sts:GetSessionToken dla użytkowników ludzkich. Dla klientów webowych lub mobilnych używaj AssumeRoleWithWebIdentity (sts:AssumeRoleWithWebIdentity) za pośrednictwem Cognito Identity lub dostawców sfederowanych, aby uniknąć długoterminowych poświadczeń. Uważaj na częste pułapki: zbyt liberalne akcje/zasoby z użyciem symboli wieloznacznych (wildcard), poleganie na politykach opartych na zasobach bez dopasowania warunków dla podmiotu (principal) oraz zapominanie o dołączeniu warunków SourceAccount lub aws:SourceVpc dla dostępu międzykontowego do S3 lub KMS. Do debugowania używaj symulatora polityk IAM oraz sts:GetCallerIdentity. Rozważ użycie polityk kontroli usług (SCP) na poziomie organizacji, aby wymuszać zabezpieczenia (guardrails) i jawne odmawianie ryzykownych akcji, takich jak kms:CreateGrant lub iam:CreateAccessKey, tam gdzie jest to stosowne.

KMS, Wzorce Szyfrowania i Kontrola Dostępu do Kluczy

Używaj AWS KMS do szyfrowania kopertowego (envelope encryption): wywołaj GenerateDataKey/GenerateDataKeyWithoutPlaintext, aby wygenerować klucz danych do szyfrowania po stronie klienta lub serwera, a następnie wywołaj Encrypt/Decrypt dla małych ładunków (payloads) lub użyj klucza danych do szyfrowania masowego. Wybierz odpowiedni klucz CMK: zarządzany przez AWS (AWS owned) dla wygody, zarządzany przez AWS dla usług (AWS managed, aws/*) dla integracji z usługami lub zarządzany przez klienta (customer-managed) dla pełnej kontroli i rotacji. Polityki kluczy (key policies) są podstawowym mechanizmem kontroli dla KMS; dołączaj polityki IAM, które zezwalają na kms:Decrypt, kms:Encrypt i używaj grantów, gdy potrzebujesz tymczasowego, delegowanego użycia klucza dla usług takich jak operacje wspierane przez CloudHSM lub międzykontowe wywołania Lambda. Dołącz EncryptionContext, aby powiązać zaszyfrowany tekst (ciphertext) z kontekstem użycia i wymagaj go za pomocą warunku kms:EncryptionContextEquals dla większej pewności. Międzykontowe użycie KMS wymaga jawnych wpisów w polityce klucza, przyznających uprawnienia zewnętrznemu podmiotowi (principal) lub roli oraz, w niektórych przypadkach, uprawnień CreateGrant/RetireGrant. Dla celów audytu i informatyki śledczej (forensics), włącz zdarzenia danych (data events) CloudTrail dla KMS i S3, aby przechwytywać wywołania GenerateDataKey i Decrypt; logi CloudTrail będą zawierać arn:aws:kms i szczegóły dotyczące tego, który podmiot (principal) użył klucza. Częste pułapki to zapominanie o zezwoleniu na kms:CreateGrant dla usług, które używają grantów „pod maską”, brak rotacji kluczy zarządzanych przez klienta oraz zakładanie, że same polityki IAM mogą autoryzować operacje KMS bez odpowiednich wpisów w polityce klucza.

Zarządzanie Sekretami: Secrets Manager vs Parameter Store

Zarówno Secrets Manager, jak i Systems Manager Parameter Store zapewniają szyfrowane przechowywanie sekretów, ale różnią się funkcjami i profilem kosztów: Secrets Manager obsługuje automatyczną rotację (z szablonami rotacji Lambda), wbudowane wersjonowanie i zintegrowaną replikację, a opłaty naliczane są za każdy sekret; Parameter Store (SecureString) jest w darmowym planie (free-tier) dla wielu parametrów i jest lepszy do prostej konfiguracji. Dostęp jest kontrolowany przez polityki IAM przyznające uprawnienia secretsmanager:GetSecretValue lub ssm:GetParameter z WithDecryption=true, a bazowy klucz KMS musi zezwalać podmiotowi (principal) na deszyfrację. Używaj polityk opartych na zasobach w Secrets Manager dla sekretów międzykontowych lub replikacji z replikacją sekretów. Podczas korzystania z SDK, wywołuj secretsmanager.getSecretValue({ SecretId }) lub ssm.getParameter({ Name, WithDecryption: true }) i unikaj logowania wartości sekretów; ustawiaj zmienne środowiskowe Lambda tak, aby używały odwołań do Secrets Manager lub Parameter Store z dynamicznym rozwiązywaniem (dynamic resolution) w CloudFormation lub SAM, albo pobieraj je za pomocą SDK przy uruchamianiu. Częste błędy deweloperów to przechowywanie sekretów w postaci jawnego tekstu (plaintext) w kontroli wersji, poleganie na zmiennych środowiskowych Lambda dla bardzo wrażliwych danych bez ochrony KMS oraz zbyt liberalne polityki IAM, takie jak przyznawanie secretsmanager:* szerokim rolom. W przypadku rotacji upewnij się, że funkcja Lambda odpowiedzialna za rotację ma odpowiednie uprawnienia secretsmanager:RotateSecret i kms:GenerateDataKey oraz że kod aplikacji może płynnie reinicjalizować połączenia, gdy poświadczenia ulegną zmianie.

Uwierzytelnianie, autoryzacja i integracja API w Cognito

Amazon Cognito dostarcza pule użytkowników (user pools) do uwierzytelniania oraz pule tożsamości (identity pools) do uzyskiwania tymczasowych poświadczeń AWS. Używaj pul użytkowników Cognito do zarządzania rejestracją, uwierzytelnianiem wieloskładnikowym (MFA) i wydawaniem tokenów JWT (tokeny ID, dostępu i odświeżania). Aplikacje jednostronicowe (SPA) działające w przeglądarce muszą używać klientów aplikacji bez klucza tajnego (client secret) i powinny korzystać z hostowanego interfejsu użytkownika (hosted UI) lub Amazon Cognito SDK (amazon-cognito-identity-js), implementując przepływ SRP, aby uniknąć ujawniania haseł. Weryfikuj tokeny JWT na serwerze lub w API Gateway, pobierając URI JWKS z puli użytkowników i walidując podpis, wystawcę (issuer), odbiorcę (audience, aud) oraz datę wygaśnięcia tokena; autoryzatory JWT w API Gateway lub niestandardowe autoryzatory Lambda mogą przeprowadzić tę walidację. W przypadku uwierzytelniania serwer-serwer, wymień token z puli użytkowników na tymczasowe poświadczenia za pośrednictwem puli tożsamości Cognito, używając sts:AssumeRoleWithWebIdentity. Do typowych pułapek należą błędnie skonfigurowane adresy URL wywołania zwrotnego (callback) lub wylogowania, brak walidacji zakresów (scopes) lub grup w tokenie oraz oczekiwanie, że tokeny ID można bezpośrednio używać do wywołań API AWS (należy je wymienić za pośrednictwem puli tożsamości). Aby uzyskać szczegółową autoryzację, używaj grup lub niestandardowych atrybutów (custom claims) i łącz Cognito z politykami opartymi na zasobach oraz kluczami warunkowymi IAM, takimi jak aws:userid lub cognito-identity.amazonaws.com:sub, podczas mapowania tożsamości na role AWS. Audytuj logowania i działania administracyjne za pomocą CloudTrail oraz włącz zaawansowane funkcje bezpieczeństwa w Cognito w celu wykrywania przejętych poświadczeń.

Praktyczny problem: Scenariusz użycia

Scenariusz: PixelForge, studio gier, utrzymuje backend serverless na jednym koncie AWS, używając Lambda, API Gateway, S3, DynamoDB i pul użytkowników Cognito. Wrażliwe klucze API i poświadczenia baz danych są przechowywane dla wielu środowisk wdrożeniowych, a zewnętrzny zespół audytorów musi mieć dostęp do podzbiorów obrazów produkcyjnych w S3 na okres od 1 do 24 godzin.

Wyzwanie: Bezpieczne zapewnienie krótkotrwałego, audytowalnego dostępu do obrazów produkcyjnych dla zewnętrznych audytorów, zapewnienie rotacji sekretów aplikacji i bezpiecznego dostępu do nich przez Lambda oraz wymuszenie MFA dla administracyjnego dostępu międzykontowego.

Zalecane podejście:

  1. Utwórz zarządzany przez klienta klucz KMS (customer-managed key) z polityką klucza zezwalającą na deszyfrowanie dla konta PixelForge i uprawnieniami (grants) dla roli IAM audytora; włącz rotację klucza i wymagaj EncryptionContext podczas operacji deszyfrowania.
  2. Przechowuj poświadczenia w Secrets Manager (osobne sekrety dla każdego środowiska) i przypisz rolę IAM do funkcji Lambda z minimalnym uprawnieniem secretsmanager:GetSecretValue oraz kms:Decrypt dla klucza KMS; zaimplementuj w kodzie startowym Lambda wywołanie

undefined

przy użyciu AWS SDK. 3. Aby zapewnić dostęp audytorom, utwórz osobną rolę na koncie AWS audytora i zezwól na sts:AssumeRole z tego konta w polityce zasobów bucketa S3, ograniczając dostęp za pomocą aws:PrincipalArn i czasowego, wstępnie skonfigurowanego mapowania ról; generuj krótkotrwałe poświadczenia za pomocą sts:AssumeRole i wymuś MFA za pomocą warunku aws:MultiFactorAuthPresent podczas przyjmowania roli. 4. Rejestruj cały dostęp za pomocą CloudTrail (zdarzenia zarządcze i zdarzenia danych dla S3 i KMS) oraz włącz logowanie na poziomie obiektów S3 i Amazon Macie lub S3 Access Logs w celu dodatkowej analizy śledczej; wymagaj, aby tymczasowe sesje audytorów używały określonego EncryptionContext i taguj obiekty/żądania w celu zapewnienia identyfikowalności.

Uzasadnienie: Użycie Secrets Manager z KMS i krótkotrwałymi poświadczeniami STS wymusza zasadę najmniejszych uprawnień, umożliwia automatyczną rotację i pozwala uniknąć osadzania sekretów w kodzie. Ograniczone czasowo wzorce przyjmowania ról (assume-role) z MFA i zdarzeniami danych CloudTrail zapewniają audytowalny, odwoływalny dostęp dla stron trzecich, zachowując jednocześnie rozdział obowiązków (separation of duties).


Wdrażanie i CI · Wszystkie domeny · Monitorowanie

Przećwicz te pytania → · Testy na czas na ExamRoll.io →

Pass the whole exam — not just this question

You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.

Zdaj egzamin →

Przeglądaj Amazon →

Related guides

Dostęp all-in-one

Jedna subskrypcja. Każdy egzamin.

Każdy plan odblokowuje nieograniczone wyszukiwanie odpowiedzi, testy praktyczne, wyjaśnienia AI i pełną bibliotekę zasobów — w ponad 20 językach.

Miesięczny
24.87
Just €0.83/day
Wszystko w cenie:
  • Nieograniczone wyszukiwanie odpowiedzi
  • Nieograniczone testy praktyczne
  • Wyjaśnienia wspomagane AI
  • Pełna biblioteka zasobów
  • Ponad 20 języków
  • Cotygodniowe aktualizacje treści
  • Nagrody i polecenia
  • Priorytetowe wsparcie
Rozpocznij bezpłatny okres próbny

Karta kredytowa nie jest wymagana*

Najlepsza wartość
12 miesięcy
179.87
Just €0.49/daySave 40%
Wszystko w cenie:
  • Nieograniczone wyszukiwanie odpowiedzi
  • Nieograniczone testy praktyczne
  • Wyjaśnienia wspomagane AI
  • Pełna biblioteka zasobów
  • Ponad 20 języków
  • Cotygodniowe aktualizacje treści
  • Nagrody i polecenia
  • Priorytetowe wsparcie
Rozpocznij bezpłatny okres próbny

Karta kredytowa nie jest wymagana*

✓ Plan darmowy w zestawie · ✓ Anuluj w dowolnym momencie · ✓ Wszystkie plany odblokowują pełny produkt