
Набор инструментов безопасности для Amazon S3
Инструментарий безопасности для Amazon S3

🍊 Проверено в бою в Instacart
Выполните:
pip install s3tk
Вы можете использовать AWS CLI или AWS Vault для настройки ваших учётных данных AWS:
pip install awscli
aws configure
См. политики IAM, необходимые для каждой команды.
Сканируйте свои бакеты на предмет:
s3tk scan
Только для определённых бакетов
s3tk scan my-bucket my-bucket-2
Также работает с подстановочными знаками
s3tk scan "my-bucket*"
Подтвердите правильные бакет(ы) журналов и префикс
s3tk scan --log-bucket my-s3-logs --log-bucket other-region-logs --log-prefix "{bucket}/"
Проверить журналирование на уровне объектов CloudTrail [экспериментально]
s3tk scan --object-level-logging
Пропуск журналирования, версионирования или шифрования по умолчанию
s3tk scan --skip-logging --skip-versioning --skip-default-encryption
Получать уведомления о сбоях по электронной почте (через SNS)
s3tk scan --sns-topic arn:aws:sns:...
Список политик бакета
s3tk list-policy
Только для определённых бакетов
s3tk list-policy my-bucket my-bucket-2
Показать именованные инструкции
s3tk list-policy --named
Примечание: Это заменяет предыдущую политику
Только приватные загрузки
s3tk set-policy my-bucket --no-object-acl
Политика удаления
s3tk delete-policy my-bucket
Блокировка публичного доступа к определённым бакетам
s3tk block-public-access my-bucket my-bucket-2
Используйте флаг --dry-run для проверки
Включите логирование на всех бакетах
s3tk enable-logging --log-bucket my-s3-logs
Только для определённых бакетов
s3tk enable-logging my-bucket my-bucket-2 --log-bucket my-s3-logs
Задать префикс журнала ({bucket}/ по умолчанию)
s3tk enable-logging --log-bucket my-s3-logs --log-prefix "logs/{bucket}/"
Используйте флаг --dry-run для проверки
Несколько замечаний о логировании:
Включите версионирование для всех бакетов
s3tk enable-versioning
Только для определённых бакетов
s3tk enable-versioning my-bucket my-bucket-2
Используйте флаг --dry-run для проверки
Включите шифрование по умолчанию для всех бакетов
s3tk enable-default-encryption
Только для определённых бакетов
s3tk enable-default-encryption my-bucket my-bucket-2
Это не шифрует существующие объекты — для этого используйте команду encrypt
Используйте флаг --dry-run для проверки
Сканирование ACL для всех объектов в бакете
s3tk scan-object-acl my-bucket
Только определённые объекты
s3tk scan-object-acl my-bucket --only "*.pdf"
За исключением определённых объектов
s3tk scan-object-acl my-bucket --except "*.jpg"
Сбросить ACL для всех объектов в бакете
s3tk reset-object-acl my-bucket
Это делает все объекты приватными. См. bucket policies, чтобы узнать, как обеспечить это в дальнейшем.
Используйте флаг --dry-run для проверки
Указывайте определённые объекты так же, как в scan-object-acl
Зашифруйте все объекты в бакете с помощью server-side encryption
s3tk encrypt my-bucket
По умолчанию используйте ключи, управляемые S3. Для ключей, управляемых KMS, используйте:
s3tk encrypt my-bucket --kms-key-id arn:aws:kms:...
Для ключей, предоставляемых клиентом, используйте:
s3tk encrypt my-bucket --customer-key secret-key
Используйте флаг --dry-run для проверки
Указывайте определённые объекты так же, как в scan-object-acl
Примечание: Объекты потеряют любые пользовательские ACL
Удалить все незашифрованные версии объектов в бакете
s3tk delete-unencrypted-versions my-bucket
Для безопасности это не удалит никакие текущие версии объектов
Используйте флаг --dry-run для проверки
Укажите определённые объекты так же, как в scan-object-acl
Сканируйте Route 53 на наличие бакетов, чтобы убедиться, что они принадлежат вам
s3tk scan-dns
В противном случае вы можете быть уязвимы к захвату поддомена
Учётные данные можно указать в ~/.aws/credentials или с помощью переменных окружения. См. это руководство для объяснения переменных окружения.
Вы можете указать профиль для использования с помощью:
AWS_PROFILE=your-profile s3tk
Ниже приведены разрешения, необходимые для каждой команды. Включайте только те утверждения, которые вам нужны.