AWS Secrets Manager
Security Cloud Practitioner Solutions Architect Associate

AWS Secrets Manager

AWS Secrets Manager

Bezpieczne przechowywanie i zarzadzanie sekretami w chmurze AWS. Automatyczna rotacja hasel, kluczy API i tokenow - koniec z hardkodowanymi credentials w kodzie.

AWS Secrets Manager to usluga do bezpiecznego przechowywania, pobierania i automatycznej rotacji sekretow takich jak hasla do baz danych, klucze API, tokeny i certyfikaty. Zamiast trzymac hasla w plikach konfiguracyjnych czy zmiennych srodowiskowych, Twoja aplikacja pobiera je w runtime z Secrets Manager.

Kazdy sekret jest szyfrowany za pomoca AWS KMS i mozesz kontrolowac dostep do niego za pomoca polityk IAM. Kluczowa funkcja to automatyczna rotacja - Secrets Manager moze cyklicznie zmieniac hasla do RDS, Redshift i innych uslug bez przerwy w dzialaniu aplikacji.

Czy wiesz, ze...

Przed powstaniem Secrets Manager programisci czesto przechowywali hasla w plikach .env, zmiennych srodowiskowych lub nawet bezposrednio w kodzie zrodlowym. W 2019 roku GitHub ujawnil, ze na platformie znaleziono ponad 100 000 repozytoriow z hardkodowanymi credentials AWS! Secrets Manager rozwiazuje ten problem - aplikacja pobiera haslo w runtime i nigdy nie jest ono zapisane w kodzie.

Pro Tip

Uzyj natywnej rotacji RDS (bez pisania Lambda) dla hasel do Aurora/RDS - Secrets Manager automatycznie zmieni haslo w bazie i w sekrecie. Dla aplikacji na ECS/Lambda uzywaj integracji natywnej (valueFrom w task definition / env variable reference) zamiast pobierania sekretu w kodzie - jest szybsze i cachowane.

Uwaga

Secrets Manager kosztuje $0.40/sekret/miesiac. Przy 100 sekretach to $40/mies. Jesli nie potrzebujesz automatycznej rotacji, Parameter Store SecureString jest darmowy i wystarczajacy dla wiekszosci przypadkow. Uzywaj Secrets Manager dla hasel do baz danych (natywna rotacja RDS) i tam gdzie rotacja jest wymagana przez compliance.

AWS Secrets Manager to serwis do bezpiecznego przechowywania, zarzadzania i automatycznej rotacji sekretow - hasel, kluczy API, tokenow i connection stringow do baz danych. Zamiast hardkodowac credentiale w kodzie lub zmiennych srodowiskowych, aplikacja pobiera je w runtime z Secrets Manager przez API.

1

Tworzenie sekretu

Sekret to zasob w Secrets Manager przechowujacy poufna wartosc. Moze to byc: plaintext string (np. klucz API), JSON z wieloma polami (np. username + password + host + port dla bazy danych) lub binary data (np. certyfikat). Sekret jest szyfrowany at-rest za pomoca klucza KMS (domyslny aws/secretsmanager lub wlasny CMK). Wlasny klucz KMS jest wymagany do udostepniania sekretow cross-account.

2

Automatyczna rotacja

Rotacja to automatyczna zmiana wartosci sekretu wedlug harmonogramu (np. co 30 dni). Secrets Manager wywoluje Lambda function, ktora: generuje nowe haslo, aktualizuje je w docelowym serwisie (np. RDS, Redshift) i zapisuje nowa wartosc w Secrets Manager. Dla RDS, Aurora i Redshift AWS dostarcza gotowe Lambda functions (rotation templates). Dla innych serwisow musisz napisac wlasna Lambda function.

3

Pobieranie sekretu z SDK

Aplikacja pobiera sekret wywolujac GetSecretValue API z AWS SDK. Uwierzytelnienie odbywa sie przez IAM - instancja EC2 potrzebuje IAM Role, Lambda function potrzebuje execution role z uprawnieniami secretsmanager:GetSecretValue. Nigdy nie loguj wartosci sekretu. SDK zwraca albo SecretString (tekst/JSON) albo SecretBinary (dane binarne). Parsuj JSON odpowiedzi, zeby wyciagnac poszczegolne pola (np. password, host).

4

Caching - redukcja kosztow i latencji

Kazde wywolanie GetSecretValue to request API, ktory kosztuje ($0.05 per 10,000 wywolan) i dodaje latency (ok. 20-50ms). AWS udostepnia klienty cache: aws-secretsmanager-caching-python, aws-secretsmanager-caching-java, aws-secretsmanager-caching-go. Cache przechowuje sekret w pamieci i odswieża go automatycznie (domyslnie co godzine). Dla Lambda, cache zyje przez czas zycia execution environment.

5

Cross-account access

Sekrety mozna udostepniac miedzy kontami AWS. Wymaga to: (1) resource-based policy na sekrecie zezwalajaca na dostep z innego konta, (2) IAM policy w koncie konsumenta z uprawnieniami secretsmanager:GetSecretValue i ARN sekretu, (3) klucza KMS CMK (nie domyslnego) z key policy zezwalajaca na kms:Decrypt z innego konta. Cross-account access jest typowy w architekturze multi-account - np. centralne konto z sekretami wspoldzelonymi.

6

Versioning - wersjonowanie sekretow

Secrets Manager automatycznie wersjonuje sekrety. Kazda wersja ma staging labels: AWSCURRENT (aktywna wersja pobierana domyslnie), AWSPREVIOUS (poprzednia wersja - do rollbacku) i AWSPENDING (nowa wersja podczas rotacji). Podczas rotacji Lambda tworzy wersje AWSPENDING, testuje ja, a potem przesuwa label AWSCURRENT. Jezeli rotacja sie nie powiedzie, AWSCURRENT pozostaje na starej wersji - bez impact na aplikacje.

Praktyczne wskazowki z produkcyjnego uzycia Secrets Manager - od strategii rotacji po optymalizacje kosztow i integracje z innymi serwisami AWS.

Rotation Lambda - gotowe szablony i custom

Dla RDS (MySQL, PostgreSQL, Oracle, SQL Server), Aurora i Redshift uzywaj gotowych rotation templates od AWS - sa przetestowane i obsluguja edge cases (np. multi-user rotation strategy). Dla custom sekretow (API keys, tokeny) napisz wlasna Lambda function implementujaca 4 kroki: createSecret, setSecret, testSecret, finishSecret. Testuj rotacje w srodowisku staging - bledna Lambda moze zablokowac dostep do bazy.

Zaawansowany

Caching z SDK - redukuj koszty i latency

Bez cachingu Lambda wywolujaca GetSecretValue przy kazdym invocation generuje tysiace zbednych API calls. Uzywaj oficjalnych bibliotek cache: secrets manager caching library przechowuje sekret w pamieci i odswieza go co godzine (konfigurowalny TTL). Dla EC2/ECS cache dziala przez caly czas zycia procesu. Dla Lambda cache przezywa miedzy invocations w ramach tego samego execution environment - cold start wymaga ponownego pobrania.

Poczatkujacy

Cross-account sharing z resource policies

W architekturze multi-account przechowuj wspoldzielone sekrety w dedykowanym koncie "shared-services". Uzyj resource-based policy na sekrecie, zeby zezwolic na GetSecretValue z kont konsumentow. Pamietaj o KMS key policy - domyslny klucz aws/secretsmanager nie wspiera cross-account. Stworz wlasny CMK i dodaj konta konsumentow do key policy. Monitoruj cross-account access przez CloudTrail - kazde pobranie sekretu jest logowane.

Zaawansowany

CloudFormation dynamic references

W szablonach CloudFormation odwoluj sie do sekretow przez dynamic references: {{resolve:secretsmanager:secret-id:SecretString:key}}. CloudFormation pobiera wartosc sekretu w momencie tworzenia/aktualizacji stacka i przekazuje ja do zasobu (np. RDS MasterUserPassword). Wartosc nigdy nie pojawia sie w szablonie ani w CloudFormation outputs. To bezpieczna alternatywa dla przekazywania hasel jako parametrow stacka.

Poczatkujacy

RDS integration - natywna rotacja

Secrets Manager ma natywna integracje z RDS i Aurora. Przy tworzeniu bazy danych mozesz od razu wygenerowac haslo w Secrets Manager i wlaczyc automatyczna rotacje. RDS wspiera dwie strategie rotacji: single-user (jedno konto, krotki downtime podczas rotacji) i multi-user (dwa konta, rotowane naprzemiennie - zero downtime). Multi-user jest recommended dla produkcji, ale wymaga aplikacji obslugujacych oba konta.

Zaawansowany

Secrets Manager vs Parameter Store - kiedy co

Secrets Manager ($0.40/sekret/miesiac + $0.05/10K API calls) vs SSM Parameter Store SecureString (darmowy standard tier, $0.05/10K advanced). Uzywaj Secrets Manager gdy: potrzebujesz automatycznej rotacji, cross-account sharing, lub zarzadzasz credentialami do baz danych. Uzywaj Parameter Store gdy: przechowujesz konfiguracje aplikacji, feature flags, lub masz ograniczony budzet. Wiele zespolow uzywa obu - Secrets Manager na hasla, Parameter Store na konfiguracje.

Poczatkujacy

Screenshoty z AWS Console

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

Do czego sluzy AWS Secrets Manager?

01

Hasla do baz danych

Przechowuj i automatycznie rotuj hasla do RDS, Aurora, Redshift i DocumentDB. Aplikacja pobiera aktualne haslo przy kazdym polaczeniu.

02

Klucze API i tokeny

Bezpiecznie przechowuj klucze API do zewnetrznych serwisow (Stripe, Twilio, SendGrid) z kontrola dostepu przez IAM.

03

Sekrety miedzy kontami AWS

Udostepniaj sekrety miedzy kontami AWS w organizacji. Np. wspolne credentials do bazy dzielonej miedzy srodowiskami.

04

CI/CD pipeline

Pobieraj sekrety w pipeline (CodeBuild, GitHub Actions, Jenkins) zamiast trzymac je w zmiennych srodowiskowych pipeline.

Co musisz wiedziec?

Secret

Zasob w Secrets Manager przechowujacy poufne dane. Moze zawierac tekst (JSON, string) lub dane binarne. Kazdy sekret ma unikalna nazwe (ARN).

Automatic Rotation

Mechanizm automatycznej zmiany hasel w okreslonym cyklu (np. co 30 dni). Uzywa funkcji Lambda do generowania nowego hasla i aktualizacji bazy danych.

Versioning

Secrets Manager przechowuje wersje sekretu: AWSCURRENT (aktualna), AWSPREVIOUS (poprzednia), AWSPENDING (w trakcie rotacji). Zapewnia plynne przejscie przy rotacji.

Resource Policy

Polityka zasobow (resource-based policy) pozwala na wspoldzielenie sekretow miedzy kontami AWS bez koniecznosci tworzenia rol IAM w kazdym koncie.

KMS Encryption

Kazdy sekret jest szyfrowany za pomoca klucza AWS KMS. Mozesz uzyc domyslnego klucza AWS lub wlasnego Customer Managed Key (CMK) dla pelnej kontroli.

Architektura: Bezpieczne zarzadzanie sekretami z Secrets Manager

Aplikacje pobieraja credentiale w runtime z Secrets Manager zamiast hardkodowac je w kodzie. Automatyczna rotacja zmienia hasla bez przestoju, a CloudTrail audytuje kazdy dostep.

Aplikacja / Lambda
Aplikacja / Lambda GetSecretValue API z IAM Role, cache w pamieci z TTL
GetSecretValue
Secrets Manager
Secrets Manager Przechowywanie, szyfrowanie KMS, wersjonowanie, rotacja
invoke co 30 dni
Rotation Lambda
Rotation Lambda Automatyczna zmiana hasla: create, set, test, finish
ALTER USER password
Amazon RDS
Amazon RDS Baza danych z haslem zarzadzanym i rotowanym automatycznie
API logging
CloudTrail
CloudTrail Audit log: kto, kiedy i skad pobraul sekret
encrypt/decrypt
KMS
KMS Szyfrowanie at-rest: CMK dla cross-account, envelope encryption
Automatyczna rotacja eliminuje ryzyko stalych, nigdy niezmiennych hasel w produkcji.
Caching z SDK redukuje koszty API calls i latency - sekret jest odswiezany co godzine, nie przy kazdym uzyciu.
Cross-account access wymaga wlasnego klucza KMS CMK - domyslny klucz nie wspiera dostepu z innych kont.

Porownanie Secrets Manager vs Parameter Store vs Vault

Serwis Automatyczna rotacja Koszt Cross-account Max rozmiar Szyfrowanie Najlepszy dla
Secrets Manager Tak (Lambda, natywna RDS) $0.40/sekret/mies. + $0.05/10k API Tak (resource policy) 64 KB KMS (obowiazkowe) Hasla DB, klucze API z rotacja
SSM Parameter Store Nie (reczna) Darmowy (Standard) / $0.05 (Advanced) Tak (od 2023) 4 KB (Standard) / 8 KB (Advanced) KMS (opcjonalne) Konfiguracja, feature flags, low-cost secrets
HashiCorp Vault Tak (dynamic secrets) Open source lub Enterprise Tak Brak limitu Transit engine Multi-cloud, zaawansowane polityki

Ile kosztuje AWS Secrets Manager?

Za sekret

Stala oplata miesieczna za kazdy przechowywany sekret.

$0.40 za sekret miesiecznie

Za wywolania API

Oplata za kazde pobranie wartosci sekretu (GetSecretValue).

$0.05 za 10 000 wywolan API

Rotacja

Automatyczna rotacja jest wliczona w cene. Funkcja Lambda do rotacji moze generowac minimalne koszty.

Rotacja co 30 dni: brak dodatkowych oplat za sama rotacje

Free Trial

30-dniowy darmowy okres probny dla nowych sekretow. Pozwala przetestowac usluge bez kosztow.

30 dni za darmo na nowy sekret

Przyklady AWS CLI

Utworz nowy sekret

Tworzy sekret z haslem do bazy danych w formacie JSON

aws secretsmanager create-secret \
 --name produkcja/baza-danych/haslo \
 --description "Haslo do produkcyjnej bazy PostgreSQL" \
 --secret-string '{"username":"admin","password":"MojeSuperTajneHaslo123!","engine":"postgres","host":"moja-baza.cluster-xyz.eu-central-1.rds.amazonaws.com","port":5432}'

Pobierz wartosc sekretu

Odczytuje aktualna wartosc sekretu

aws secretsmanager get-secret-value \
 --secret-id produkcja/baza-danych/haslo \
 --query "SecretString" \
 --output text

Wlacz automatyczna rotacje

Konfiguruje rotacje hasla co 30 dni z uzyciem funkcji Lambda

aws secretsmanager rotate-secret \
 --secret-id produkcja/baza-danych/haslo \
 --rotation-lambda-arn arn:aws:lambda:eu-central-1:123456789012:function:SecretsManagerRotation \
 --rotation-rules AutomaticallyAfterDays=30

Lista wszystkich sekretow

Wyswietla liste sekretow z ich nazwami i datami rotacji

aws secretsmanager list-secrets \
 --query "SecretList[].{Nazwa:Name,Rotacja:RotationEnabled,OstatniaZmiana:LastChangedDate}" \
 --output table

Quiz: AWS Secrets Manager

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

Twoj wynik: 0 / 4

1. Jakiego serwisu AWS uzywa Secrets Manager do szyfrowania sekretow?

2. Co oznacza wersja AWSCURRENT sekretu?

3. Z jakim serwisem Secrets Manager integruje sie do automatycznej rotacji hasel?

4. Ile kosztuje przechowywanie jednego sekretu miesiecznie?

Chcesz poznac AWS Secrets Manager w praktyce?

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

Zacznij darmowy kurs Wszystkie serwisy