AWS Solutions Architect · Lekcja

Bezpieczeństwo RDS: szyfrowanie i grupy parametrów

Zaszyfrują dane RDS w spoczynku za pomocą KMS, będą kontrolować szyfrowanie na poziomie połączenia za pomocą grup parametrów i zabezpieczą dostęp uwierzytelnianiem IAM.

Lekcja 4 z 413 kroki

Bezpieczeństwo RDS: szyfrowanie i grupy parametrów to bezpłatna lekcja AWS Solutions Architect na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AWS Solutions Architect, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AWS Solutions Architect zawiera 4 lekcji w sumie.

Szyfrowanie danych RDS w spoczynku

RDS obsługuje szyfrowanie danych w spoczynku za pomocą AWS Key Management Service (KMS). Po włączeniu szyfrowania podczas tworzenia instancji DB wszystkie dane na bazowych woluminach EBS, automatyczne kopie zapasowe, migawki i repliki odczytu są szyfrowane przy użyciu określonego klucza KMS.

Szyfrowanie musi zostać włączone podczas tworzenia — istniejącej nieszyfrowanej instancji nie można zaszyfrować w miejscu. Obejściem jest wykonanie nieszyfrowanej migawki, skopiowanie jej z włączonym szyfrowaniem i przywrócenie danych z zaszyfrowanej migawki. Klucz KMS może być kluczem zarządzanym przez AWS lub kluczem zarządzanym przez klienta (CMK), zapewniającym dodatkową kontrolę i możliwość audytu.

# Create an encrypted RDS instance
aws rds create-db-instance \
  --db-instance-identifier mydb-encrypted \
  --engine mysql \
  --db-instance-class db.t3.micro \
  --master-username admin \
  --master-user-password MyPass123! \
  --allocated-storage 20 \
  --storage-encrypted \
  --kms-key-id arn:aws:kms:us-east-1:123456789:key/my-key-id

Szyfrowanie istniejącej nieszyfrowanej instancji RDS

Ponieważ nie można włączyć szyfrowania dla istniejącej instancji, należy wykonać następującą migrację:

  1. Utworzyć ręczny snapshot nieszyfrowanej instancji
  2. Skopiować snapshot i włączyć szyfrowanie podczas kopiowania, określając klucz KMS
  3. Odtworzyć nową instancję DB z zaszyfrowanego snapshotu
  4. Zaktualizować punkt końcowy aplikacji, aby wskazywał nową instancję
  5. Usunąć starą, nieszyfrowaną instancję

Takie podejście wiąże się z pewnym przestojem, chyba że użyją Państwo DMS do utrzymywania synchronizacji nowej zaszyfrowanej instancji przed przełączeniem.

# Copy snapshot with encryption enabled
aws rds copy-db-snapshot \
  --source-db-snapshot-identifier mydb-unencrypted-snap \
  --target-db-snapshot-identifier mydb-encrypted-snap \
  --kms-key-id alias/aws/rds

Szyfrowanie danych podczas przesyłania za pomocą SSL/TLS

RDS szyfruje dane przesyłane za pomocą SSL/TLS. Każdy silnik udostępnia certyfikat CA do pobrania, którego sterownik klienta używa do weryfikowania tożsamości serwera. Aby wymusić połączenia SSL, należy skonfigurować silnik bazy danych tak, aby odrzucał nieszyfrowane połączenia.

W przypadku MySQL należy ustawić parametr require_secure_transport = ON w grupie parametrów. W przypadku PostgreSQL należy ustawić ssl = 1 oraz opcjonalnie rds.force_ssl = 1, aby całkowicie odrzucać połączenia inne niż SSL. Wiele sterowników baz danych dla języków Java i Python obsługuje również parametr ciągu połączenia sslmode=require.

# Connect to RDS MySQL over SSL
mysql -h mydb.abcd1234.us-east-1.rds.amazonaws.com \
  -u admin -p \
  --ssl-ca=rds-ca-2019-root.pem \
  --ssl-verify-server-cert

Grupy parametrów: czym są

Grupy parametrów to nazwane zbiory ustawień konfiguracyjnych silnika, które dołącza się do instancji RDS. Są odpowiednikiem edytowania pliku my.cnf w MySQL lub postgresql.conf w PostgreSQL, ale są zarządzane przez AWS i mają wersje odpowiadające rodzinom silników.

AWS udostępnia domyślną grupę parametrów dla każdej wersji silnika, ale jej ustawień nie można edytować. Aby dostosować parametry, należy utworzyć niestandardową grupę parametrów, zmodyfikować wybrane parametry i powiązać ją z instancją DB. Zmiany parametrów statycznych wymagają ponownego uruchomienia, natomiast parametry dynamiczne zaczynają obowiązywać natychmiast.

# Create a custom parameter group
aws rds create-db-parameter-group \
  --db-parameter-group-name my-mysql8-params \
  --db-parameter-group-family mysql8.0 \
  --description 'Custom MySQL 8.0 parameters'

Modyfikowanie ustawień grupy parametrów

Po utworzeniu niestandardowej grupy parametrów można modyfikować poszczególne parametry za pomocą polecenia CLI modify-db-parameter-group lub konsoli. Parametry mają metodę zastosowania: immediate (zaczyna obowiązywać bez ponownego uruchomienia) albo pending-reboot (zaczyna obowiązywać dopiero po następnym ponownym uruchomieniu instancji).

Ważne parametry, które należy znać na egzamin: max_connections (limit jednoczesnych połączeń), innodb_buffer_pool_size (rozmiar pamięci podręcznej MySQL), log_bin_trust_function_creators (zezwala na funkcje składowane zapisujące do dziennika binarnego) oraz rds.force_ssl (wymusza SSL dla PostgreSQL).

# Force SSL in a PostgreSQL parameter group
aws rds modify-db-parameter-group \
  --db-parameter-group-name my-postgres-params \
  --parameters 'ParameterName=rds.force_ssl,ParameterValue=1,ApplyMethod=immediate'

Grupy opcji dla dodatkowych funkcji

Grupy opcji są podobne do grup parametrów, ale służą do kontrolowania dodatkowych funkcji silnika bazy danych, a nie do dostrajania konfiguracji. Są używane przede wszystkim z Oracle i SQL Server do włączania funkcji takich jak Oracle Application Express (APEX), Transparent Data Encryption (TDE) w SQL Server lub uwierzytelnianie SQL Server za pomocą Active Directory.

Każda opcja w grupie opcji może mieć własne ustawienia. Grupy opcji mają wersje odpowiadające rodzinom silników i muszą być powiązane z instancją DB. Większość silników open source (MySQL, PostgreSQL, MariaDB) rzadko wymaga niestandardowych grup opcji.

Uwierzytelnianie baz danych za pomocą IAM

RDS obsługuje uwierzytelnianie baz danych za pomocą IAM dla silników MySQL i PostgreSQL. Zamiast stałej nazwy użytkownika i hasła aplikacja przyjmuje rolę IAM i generuje tymczasowy token uwierzytelniający (ważny przez 15 minut) za pomocą polecenia AWS CLI generate-db-auth-token lub wywołania SDK.

Korzyści obejmują brak długoterminowych haseł do bazy danych, automatyczną rotację poświadczeń za pomocą zasad IAM oraz scentralizowaną kontrolę dostępu. Ta funkcja wymaga włączenia opcji --enable-iam-database-authentication w instancji oraz utworzenia użytkownika bazy danych powiązanego z rolą IAM.

# Generate an RDS IAM auth token
aws rds generate-db-auth-token \
  --hostname mydb.abcd1234.us-east-1.rds.amazonaws.com \
  --port 3306 \
  --username mydbuser \
  --region us-east-1

Integracja Secrets Manager z RDS

AWS Secrets Manager może przechowywać i automatycznie rotować hasło główne RDS oraz poświadczenia aplikacji. Po włączeniu rotacji Secrets Manager wywołuje funkcję Lambda, która aktualizuje hasło w bazie danych i zapisuje nową wartość w sekrecie — aplikacja pobiera najnowszą wartość sekretu za pośrednictwem interfejsu API Secrets Manager, dzięki czemu zawsze ma prawidłowe poświadczenia.

Podczas tworzenia instancji RDS w konsoli można włączyć zarządzanie poświadczeniami głównymi przez Secrets Manager. Eliminuje to zakodowane na stałe hasła w kodzie lub zmiennych środowiskowych.

# Retrieve RDS credentials from Secrets Manager
aws secretsmanager get-secret-value \
  --secret-id rds!db-1234abcd-5678-efgh-ijkl-mnopqrstuvwx \
  --query SecretString \
  --output text | python3 -m json.tool

Kontrola VPC i grup zabezpieczeń

Instancje RDS działają wewnątrz VPC i używają grup podsieci DB do określania, w których podsieciach (w wielu strefach AZ) można umieścić instancję. Zgodnie z najlepszymi praktykami RDS należy umieszczać w prywatnych podsieciach bez bezpośredniego dostępu do Internetu.

Grupy zabezpieczeń określają, które adresy IP i inne grupy zabezpieczeń mogą łączyć się z portem DB (np. TCP 3306 dla MySQL). Grupą zabezpieczeń warstwy aplikacji należy ustawić jako jedyne dozwolone źródło w grupie zabezpieczeń RDS, egzekwując zasadę najmniejszych uprawnień na poziomie sieci. Nigdy nie należy konfigurować reguły przychodzącej 0.0.0.0/0 (cały ruch) w grupie zabezpieczeń RDS.

Rozszerzone monitorowanie i dzienniki audytu

Enhanced Monitoring publikuje metryki na poziomie systemu operacyjnego (CPU, pamięć, system plików, operacje wejścia/wyjścia dysku) w CloudWatch Logs co 1–60 sekund, zapewniając większą szczegółowość niż domyślne 60-sekundowe metryki CloudWatch. Korzysta z agenta działającego na hoście DB i jest dostępne dla wszystkich silników z wyjątkiem trybu dublowania SQL Server.

Dzienniki audytu bazy danych (dziennik zapytań ogólnych i dziennik powolnych zapytań dla MySQL; pgaudit dla PostgreSQL) można publikować w CloudWatch Logs na potrzeby analizy zgodności. Należy włączyć je za pomocą grup parametrów, a następnie skonfigurować eksport dzienników w konsoli RDS w sekcji Eksport dzienników.

# Enable PostgreSQL logs export to CloudWatch
aws rds modify-db-instance \
  --db-instance-identifier mydb \
  --cloudwatch-logs-export-configuration 'EnableLogTypes=[postgresql,upgrade]' \
  --apply-immediately

Podsumowanie najlepszych praktyk bezpieczeństwa

Najważniejsze najlepsze praktyki bezpieczeństwa RDS na egzamin SAA-C03:

  • Włączyć szyfrowanie danych w spoczynku za pomocą klucza KMS CMK podczas tworzenia instancji
  • Wymusić SSL/TLS podczas przesyłania danych za pomocą ustawień grupy parametrów
  • Umieszczać instancje w prywatnych podsieciach z restrykcyjnymi grupami zabezpieczeń
  • Używać uwierzytelniania baz danych za pomocą IAM lub Secrets Manager, aby unikać stałych haseł
  • Włączyć CloudTrail do rejestrowania wywołań API RDS oraz CloudWatch Logs dla dzienników audytu bazy danych
  • Używać reguł AWS Config (np. rds-instance-public-access-check) do wykrywania błędnych konfiguracji

Szybkie sprawdzenie

Sprawdź swoją znajomość zagadnień AWS Solutions Architect (SAA-C03) omówionych w tej lekcji.

Podsumowanie lekcji

W tej lekcji dowiedzieli się Państwo, że: szyfrowanie danych RDS w spoczynku korzysta z KMS i musi zostać włączone podczas tworzenia instancji, grupy parametrów kontrolują konfigurację silnika, w tym wymuszanie SSL/TLS podczas przesyłania danych, a także że uwierzytelnianie baz danych za pomocą IAM i Secrets Manager eliminują stałe hasła do baz danych. Następnie omówimy tabele i elementy DynamoDB oraz projektowanie kluczy głównych.

Bezpłatny start

Ucz się AWS Solutions Architect dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
30
Lekcje
120

Często zadawane pytania

Czy lekcja „Bezpieczeństwo RDS: szyfrowanie i grupy parametrów” jest bezpłatna?

Tak — pełny tekst „Bezpieczeństwo RDS: szyfrowanie i grupy parametrów” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AWS Solutions Architect, przejdź na CoddyKit PRO. Kurs AWS Solutions Architect zawiera 4 lekcji w sumie.

Co nauczysz się w „Bezpieczeństwo RDS: szyfrowanie i grupy parametrów”?

Zaszyfrują dane RDS w spoczynku za pomocą KMS, będą kontrolować szyfrowanie na poziomie połączenia za pomocą grup parametrów i zabezpieczą dostęp uwierzytelnianiem IAM. Ćwiczysz AWS Solutions Architect z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć AWS Solutions Architect?

Nie wymagamy żadnego doświadczenia. AWS Solutions Architect w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Bezpieczeństwo RDS: szyfrowanie i grupy parametrów”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji AWS Solutions Architect?

Tak. Każda lekcja AWS Solutions Architect zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Silniki RDS i klasy instancji
  2. Multi-AZ i automatyczne kopie zapasowe
  3. Read Replicas na potrzeby skalowania odczytu
  4. Bezpieczeństwo RDS: szyfrowanie i grupy parametrów
← Powrót do AWS Solutions Architect