0Pricing
AWS Solutions Architect · Урок

Безопасность RDS: шифрование и группы параметров

Зашифруйте RDS в состоянии покоя с помощью KMS, управляйте шифрованием на уровне подключений через группы параметров и обеспечьте безопасность с помощью аутентификации IAM.

«Безопасность RDS: шифрование и группы параметров» — бесплатный урок AWS Solutions Architect на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AWS Solutions Architect, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AWS Solutions Architect содержит 4 уроков всего.

Шифрование RDS в состоянии покоя

RDS поддерживает шифрование данных в состоянии покоя с помощью AWS Key Management Service (KMS). При включении шифрования во время создания экземпляра DB все данные на базовых томах EBS, автоматические резервные копии, снимки и Read Replicas шифруются с использованием указанного ключа KMS.

Шифрование необходимо включить во время создания — существующий незашифрованный экземпляр нельзя зашифровать на месте. Обходной путь: создать незашифрованный снимок, скопировать его с включённым шифрованием и восстановить экземпляр из зашифрованного снимка. Ключом KMS может быть ключ, управляемый AWS, или Customer-Managed Key (CMK), обеспечивающий дополнительные возможности контроля и аудита.

# 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

Шифрование существующего незашифрованного экземпляра RDS

Поскольку включить шифрование для существующего экземпляра нельзя, выполните следующую последовательность миграции:

  1. Создайте ручной снимок незашифрованного экземпляра
  2. Скопируйте снимок и включите шифрование во время копирования, указав ключ KMS
  3. Восстановите новый экземпляр базы данных из зашифрованного снимка
  4. Обновите конечную точку приложения, указав новый экземпляр
  5. Удалите старый незашифрованный экземпляр

Этот подход приводит к некоторому простою, если не использовать DMS для синхронизации нового зашифрованного экземпляра до переключения.

# 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

Шифрование данных при передаче с помощью SSL/TLS

RDS шифрует данные при передаче с помощью SSL/TLS. Для каждого ядра базы данных предоставляется сертификат CA, который драйвер клиента использует для проверки подлинности сервера. Чтобы принудительно использовать SSL-соединения, настройте ядро базы данных на отклонение незашифрованных соединений.

Для MySQL задайте параметр require_secure_transport = ON в группе параметров. Для PostgreSQL задайте ssl = 1 и при необходимости rds.force_ssl = 1, чтобы полностью отклонять соединения без SSL. Многие драйверы баз данных для Java и Python также принимают параметр строки подключения 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

Группы параметров: что это такое

Группы параметров — это именованные наборы параметров конфигурации ядра, которые подключаются к экземпляру RDS. Они являются эквивалентом редактирования my.cnf в MySQL или postgresql.conf в PostgreSQL, но управляются AWS и имеют версии для каждого семейства ядер.

AWS предоставляет группу параметров по умолчанию для каждой версии ядра, однако её параметры нельзя редактировать. Чтобы настроить параметры, создайте пользовательскую группу параметров, измените нужные параметры и свяжите группу с экземпляром базы данных. Для применения изменений статических параметров требуется перезагрузка; динамические параметры вступают в силу немедленно.

# 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'

Изменение настроек группы параметров

После создания пользовательской группы параметров отдельные параметры можно изменять с помощью команды CLI modify-db-parameter-group или консоли. У параметров есть способ применения: немедленно (вступает в силу без перезагрузки) или после перезагрузки (вступает в силу только после следующего перезапуска экземпляра).

Важные параметры, которые нужно знать для экзамена: max_connections (ограничивает количество одновременных соединений), innodb_buffer_pool_size (размер кэша MySQL в памяти), log_bin_trust_function_creators (разрешает хранимые функции, выполняющие запись в двоичный журнал) и rds.force_ssl (принудительно включает SSL для 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'

Группы опций для дополнительных возможностей

Группы опций похожи на группы параметров, но управляют дополнительными возможностями ядра базы данных, а не настройкой конфигурации. В основном они используются с Oracle и SQL Server для включения таких возможностей, как Oracle Application Express (APEX), Transparent Data Encryption (TDE) в SQL Server или аутентификация SQL Server через Active Directory.

У каждой опции в группе опций могут быть собственные настройки. Группы опций имеют версии для каждого семейства ядер и должны быть связаны с экземпляром базы данных. Для большинства ядер с открытым исходным кодом (MySQL, PostgreSQL, MariaDB) пользовательские группы опций обычно не требуются.

Аутентификация базы данных через IAM

RDS поддерживает аутентификацию базы данных через IAM для ядер MySQL и PostgreSQL. Вместо постоянных имени пользователя и пароля приложение принимает роль IAM и создаёт временный токен аутентификации (действительный в течение 15 минут) с помощью команды AWS CLI generate-db-auth-token или вызова SDK.

Преимущества включают отсутствие долгосрочных паролей базы данных, автоматическую смену учётных данных с помощью политик IAM и централизованное управление доступом. Для использования этой возможности необходимо включить --enable-iam-database-authentication на экземпляре и создать пользователя базы данных, сопоставленного с ролью 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

Интеграция Secrets Manager с RDS

AWS Secrets Manager может хранить и автоматически менять главный пароль RDS и учётные данные приложения. При включённой смене пароля Secrets Manager вызывает функцию Lambda, которая обновляет пароль базы данных и сохраняет новое значение в секрете — приложение получает последнее значение секрета через API Secrets Manager и всегда использует действительные учётные данные.

При создании экземпляра RDS в консоли можно включить управление главными учётными данными через Secrets Manager. Это устраняет необходимость хранить пароли непосредственно в коде или переменных среды.

# 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

Управление VPC и группами безопасности

Экземпляры RDS работают внутри VPC и используют группы подсетей базы данных, чтобы определить, в каких подсетях (в нескольких AZ) можно разместить экземпляр. Рекомендуется размещать RDS в приватных подсетях без прямого доступа к интернету.

Группы безопасности определяют, какие IP-адреса и другие группы безопасности могут обращаться к порту базы данных (например, TCP 3306 для MySQL). Группа безопасности уровня приложения должна быть единственным разрешённым источником в группе безопасности RDS, что обеспечивает минимально необходимые привилегии на сетевом уровне. Никогда не настраивайте 0.0.0.0/0 (весь трафик) как входящее правило группы безопасности RDS.

Расширенный мониторинг и журналы аудита

Расширенный мониторинг публикует метрики на уровне ОС (CPU, память, файловая система, дисковый ввод-вывод) в CloudWatch Logs каждые 1–60 секунд, обеспечивая более высокую детализацию по сравнению со стандартными метриками CloudWatch с интервалом 60 секунд. Он использует агент, работающий на хосте базы данных, и доступен для всех ядер, кроме режима зеркалирования SQL Server.

Журналы аудита базы данных (общий журнал запросов и журнал медленных запросов для MySQL; pgaudit для PostgreSQL) можно публиковать в CloudWatch Logs для анализа соответствия требованиям. Включите их через группы параметров, затем настройте экспорт журналов в консоли RDS в разделе Экспорт журналов.

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

Краткий обзор рекомендаций по безопасности

Основные рекомендации по безопасности RDS для экзамена SAA-C03:

  • Включайте шифрование данных в состоянии покоя с помощью KMS CMK при создании экземпляра
  • Принудительно включайте SSL/TLS при передаче данных с помощью настроек группы параметров
  • Размещайте экземпляры в приватных подсетях с ограничительными группами безопасности
  • Используйте аутентификацию базы данных через IAM или Secrets Manager, чтобы не применять постоянные пароли
  • Включайте CloudTrail для регистрации вызовов API RDS и CloudWatch Logs для журналов аудита базы данных
  • Используйте правила AWS Config (например, rds-instance-public-access-check) для обнаружения неправильных настроек

Быстрая проверка

Проверьте своё понимание концепций AWS Solutions Architect (SAA-C03) из этого урока.

Итоги урока

В этом уроке Вы узнали, что шифрование данных RDS в состоянии покоя использует KMS и должно включаться при создании, группы параметров управляют конфигурацией ядра, включая принудительное шифрование SSL/TLS при передаче данных, а аутентификация базы данных через IAM и Secrets Manager устраняют необходимость в постоянных паролях базы данных. Далее мы рассмотрим таблицы и элементы DynamoDB, а также проектирование первичных ключей.

Часто задаваемые вопросы

Урок «Безопасность RDS: шифрование и группы параметров» бесплатный?

Да — полный текст урока «Безопасность RDS: шифрование и группы параметров» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AWS Solutions Architect, подпишись на CoddyKit PRO. Курс AWS Solutions Architect содержит 4 уроков всего.

Чему я научусь в уроке «Безопасность RDS: шифрование и группы параметров»?

Зашифруйте RDS в состоянии покоя с помощью KMS, управляйте шифрованием на уровне подключений через группы параметров и обеспечьте безопасность с помощью аутентификации IAM. Ты практикуешь AWS Solutions Architect с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать AWS Solutions Architect?

Предыдущий опыт не требуется. AWS Solutions Architect на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «Безопасность RDS: шифрование и группы параметров»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке AWS Solutions Architect?

Да. Каждый урок AWS Solutions Architect включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Ядра RDS и классы экземпляров
  2. Multi-AZ и автоматическое резервное копирование
  3. Read Replicas для масштабирования чтения
  4. Безопасность RDS: шифрование и группы параметров
← Назад к AWS Solutions Architect