Версионирование, MFA Delete и репликация
Включите версионирование для защиты от случайного удаления, настройте репликацию между регионами и добавьте MFA Delete.
«Версионирование, MFA Delete и репликация» — бесплатный урок AWS Solutions Architect на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AWS Solutions Architect, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AWS Solutions Architect содержит 4 уроков всего.
Управление версиями S3: почему это важно
Управление версиями S3 позволяет сохранять, получать и восстанавливать каждую версию каждого объекта, хранящегося в Bucket. Когда управление версиями включено, каждый PUT создаёт новую версию с уникальным идентификатором версии; старая версия сохраняется, а не перезаписывается. Если объект удалён, S3 добавляет маркер удаления как текущую версию, сохраняя все предыдущие версии. Это защищает от случайной перезаписи и удаления, а также от непреднамеренного повреждения данных на уровне приложения — наиболее распространённых сценариев потери данных в рабочей среде.
# Enable versioning on a bucket
aws s3api put-bucket-versioning \
--bucket my-important-bucket \
--versioning-configuration Status=Enabled
# List all versions of an object
aws s3api list-object-versions \
--bucket my-important-bucket \
--prefix my-document.pdfСостояния управления версиями и переходы между ними
Bucket S3 может находиться в одном из трёх состояний управления версиями: без управления версиями (состояние по умолчанию, идентификаторы версий отсутствуют), управление версиями включено (все новые объекты получают уникальные идентификаторы версий, а каждая перезапись создаёт новую версию) или управление версиями приостановлено (новые объекты получают пустой идентификатор версии, но существующие версии сохраняются). После включения управления версиями его нельзя удалить, можно только приостановить. Объекты, созданные до включения управления версиями, имеют идентификатор версии null и не затрагиваются, пока не будут перезаписаны или удалены.
Восстановление предыдущей версии
Чтобы восстановить старую версию объекта с включённым управлением версиями, есть два варианта. Вариант 1: скопируйте идентификатор старой версии обратно в тот же ключ. Это создаст новую версию, содержащую копию старого содержимого, и сделает её текущей. Вариант 2: удалите текущую версию или маркер удаления, чтобы предыдущая версия стала текущей. Когда Вы «удаляете» объект в Bucket с включённым управлением версиями через консоль, не указывая идентификатор версии, S3 добавляет маркер удаления. Для запросов без указания версии объект выглядит удалённым, но все версии по-прежнему существуют.
# Restore a specific version by copying it back to the same key
aws s3api copy-object \
--bucket my-important-bucket \
--copy-source 'my-important-bucket/my-document.pdf?versionId=abc123'\
--key my-document.pdfMFA Delete: дополнительная защита
MFA Delete добавляет второй уровень защиты для Bucket с включённым управлением версиями. Если эта функция включена, для безвозвратного удаления определённой версии или изменения состояния управления версиями Bucket (включено → приостановлено) в запросе API необходимо указать действительные учётные данные MFA. Это защищает от злоумышленника, получившего Ваши учётные данные AWS и пытающегося безвозвратно удалить критически важные версии, от случайного или автоматизированного удаления закреплённых версий объектов, а также от внутренних угроз, направленных на уничтожение аудиторских следов. Включать и отключать MFA Delete может только пользователь root через CLI.
# Enable MFA Delete (must be done as root user)
aws s3api put-bucket-versioning \
--bucket my-important-bucket \
--versioning-configuration Status=Enabled,MFADelete=Enabled \
--mfa 'arn:aws:iam::123456789012:mfa/root-account-mfa-device 123456'Блокировка объектов S3
S3 Object Lock обеспечивает модель однократной записи и многократного чтения (WORM) для соблюдения нормативных требований. Объекты, заблокированные с помощью Object Lock, нельзя удалить или перезаписать в течение указанного периода хранения, даже пользователю root аккаунта. Доступны два режима: режим управления (пользователи со специальными разрешениями могут отменить или снять блокировку) и режим соответствия требованиям (никто, даже AWS, не может удалить объект в течение периода хранения; это наиболее строгая защита). Object Lock необходимо включить при создании Bucket; также требуется управление версиями.
# Apply a retention rule to an object
aws s3api put-object-retention \
--bucket my-compliance-bucket \
--key audit-log-2024.csv \
--version-id abc123 \
--retention '{"Mode":"COMPLIANCE","RetainUntilDate":"2027-01-01T00:00:00Z"}'Репликация S3 между регионами (CRR)
Cross-Region Replication (CRR) автоматически реплицирует новые объекты и обновления из исходного Bucket в одном регионе в целевой Bucket в другом регионе. Сценарии использования: соответствие требованиям (хранение копии данных в определённой стране), аварийное восстановление (снижение RPO для критически важных данных за счёт копии во втором регионе) и снижение задержки (предоставление объектов из региона, ближайшего к пользователям). Для CRR необходимо включить управление версиями в исходном и целевом Bucket, а также создать роль IAM с необходимыми разрешениями на репликацию.
# Apply a replication configuration
aws s3api put-bucket-replication \
--bucket source-bucket-us-east-1 \
--replication-configuration file://replication-config.json
# Config specifies Role ARN, destination bucket ARN, and filter rulesРепликация S3 в пределах одного региона (SRR)
Same-Region Replication (SRR) реплицирует объекты в пределах одного региона. Сценарии использования: агрегация журналов (репликация журналов из нескольких исходных Bucket в один центральный Bucket), синхронизация тестовой среды (хранение копии рабочих данных в Bucket среды разработки в том же регионе) и соблюдение требований к суверенитету данных в одной стране с несколькими зонами доступности AWS. Как и CRR, SRR требует включить управление версиями в обоих Bucket и использовать роль IAM. Автоматически реплицируются только новые объекты, созданные после включения репликации. Для репликации существующих объектов используйте S3 Batch Replication.
Репликация: что реплицируется, а что нет
Репликация S3 выполняет репликацию новых объектов, метаданных, тегов, ACLs и состояния шифрования. По умолчанию репликация не выполняет репликацию объектов, существовавших до её включения (для них используйте S3 Batch Replication), маркеров удаления (если не включить Delete Marker Replication), объектов в Glacier (они не реплицируются, сначала их необходимо восстановить) и реплицированных объектов (каскадная репликация между тремя Bucket не выполняется). Понимание этих ограничений важно для разработки полноценных стратегий DR, в которых также требуется реплицировать исторические данные и события удаления.
Контроль времени репликации S3 (RTC)
Replication Time Control (RTC) — это дополнительная функция для CRR, предоставляющая соглашение об уровне обслуживания: 99,99% объектов реплицируются в течение 15 минут, а в CloudWatch доступны метрики репликации и уведомления. Без RTC репликация не имеет гарантированного срока: большинство объектов реплицируется быстро, но для некоторых этот процесс может занять несколько часов. RTC необходима, когда требования к аварийному восстановлению или соответствию нормативам задают максимальную точку восстановления (RPO) для данных в S3. За неё взимается дополнительная плата за репликацию каждого ГБ сверх стандартной стоимости передачи данных при репликации.
Влияние версионирования на стоимость хранения
Включение версионирования увеличивает стоимость хранения, поскольку S3 сохраняет каждую версию каждого объекта до её явного удаления. Файл размером 100 МБ, который перезаписывается 10 раз, теперь занимает 1 000 МБ хранилища. Снизить эти затраты можно с помощью правил жизненного цикла, которые автоматически удаляют непотекущие версии через заданное количество дней (например, удаляют непотекущие версии старше 30 дней) или перемещают их в более дешёвые классы хранения, такие как Glacier. В рабочей среде всегда используйте версионирование вместе с правилами жизненного цикла, чтобы контролировать стоимость хранения.
# Lifecycle rule to expire non-current versions after 30 days
aws s3api put-bucket-lifecycle-configuration \
--bucket my-important-bucket \
--lifecycle-configuration '{"Rules":[{"ID":"expire-old-versions","Status":"Enabled","NoncurrentVersionExpiration":{"NoncurrentDays":30}}]}'Защита от программ-вымогателей
Версионирование S3 в сочетании с блокировкой объектов (режим Compliance) обеспечивает надёжную защиту от программ-вымогателей. Если злоумышленник зашифрует или удалит ваши объекты, версионирование сохранит предыдущие версии (если только злоумышленник не удалит их окончательно — именно поэтому блокировка объектов запрещает окончательное удаление в течение периода хранения). Для максимальной защиты: включите версионирование, включите MFA Delete, примените блокировку объектов в режиме Compliance для критически важных данных и реплицируйте данные во второй Region с отдельными учётными данными IAM, чтобы компрометация одной учётной записи не позволила уничтожить все копии.
Быстрая проверка
Проверьте своё понимание концепций AWS Solutions Architect (SAA-C03) из этого урока.
Итоги урока
В этом уроке Вы узнали, что версионирование сохраняет все версии каждого объекта и защищает от случайного удаления, MFA Delete и блокировка объектов обеспечивают дополнительную неизменяемость для соблюдения нормативных требований и защиты от программ-вымогателей, а CRR и SRR реплицируют объекты в другие бакеты для выполнения требований DR и нормативных требований. Далее мы рассмотрим классы хранения S3 и политики жизненного цикла для оптимизации затрат.
Часто задаваемые вопросы
Урок «Версионирование, MFA Delete и репликация» бесплатный?
Да — полный текст урока «Версионирование, MFA Delete и репликация» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AWS Solutions Architect, подпишись на CoddyKit PRO. Курс AWS Solutions Architect содержит 4 уроков всего.
Чему я научусь в уроке «Версионирование, MFA Delete и репликация»?
Включите версионирование для защиты от случайного удаления, настройте репликацию между регионами и добавьте MFA Delete. Ты практикуешь AWS Solutions Architect с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать AWS Solutions Architect?
Предыдущий опыт не требуется. AWS Solutions Architect на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Версионирование, MFA Delete и репликация»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке AWS Solutions Architect?
Да. Каждый урок AWS Solutions Architect включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Контейнеры, объекты и регионы
- Управление доступом S3: политики контейнеров и ACL
- Версионирование, MFA Delete и репликация
- Классы хранилищ и политики жизненного цикла