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.
Bezpieczeństwo RDS: szyfrowanie i grupy parametrów to bezpłatna lekcja Cloud & IT Cert Prep 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 Cloud & IT Cert Prep, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Cloud & IT Cert Prep 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-idSzyfrowanie istniejącej nieszyfrowanej instancji RDS
Ponieważ nie można włączyć szyfrowania dla istniejącej instancji, należy wykonać następującą migrację:
- Utworzyć ręczny snapshot nieszyfrowanej instancji
- Skopiować snapshot i włączyć szyfrowanie podczas kopiowania, określając klucz KMS
- Odtworzyć nową instancję DB z zaszyfrowanego snapshotu
- Zaktualizować punkt końcowy aplikacji, aby wskazywał nową instancję
- 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/rdsSzyfrowanie 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-certGrupy 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-1Integracja 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.toolKontrola 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-immediatelyPodsumowanie 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.
Ucz się Cloud & IT Cert Prep 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
- 150
- Lekcje
- 600
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 Cloud & IT Cert Prep, przejdź na CoddyKit PRO. Kurs Cloud & IT Cert Prep 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 Cloud & IT Cert Prep 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ąć Cloud & IT Cert Prep?
Nie wymagamy żadnego doświadczenia. Cloud & IT Cert Prep 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 Cloud & IT Cert Prep?
Tak. Każda lekcja Cloud & IT Cert Prep 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
- Silniki RDS i klasy instancji
- Multi-AZ i automatyczne kopie zapasowe
- Read Replicas na potrzeby skalowania odczytu
- Bezpieczeństwo RDS: szyfrowanie i grupy parametrów