S3 Inspector

Cloud & Container Security

Проверяет права доступа AWS S3-бакетов: для каждого бакета показывает, публичен ли он, какие права выданы и список URL для доступа. Кроссплатформенный (Linux/macOS/Windows, Python 2.7/3), может запускаться как AWS Lambda-функция для регулярного аудита. Восстановлено из архива Software Heritage: оригинальный репозиторий был удалён автором с исходной площадки. Из-за перегрузки очереди приготовления полного git-бандла восстановлен только последний известный снимок файлов (без истории коммитов) и перенесён в наш Forgejo-миррор.

Добавлен 24.07.2026 · Обновлён 24.07.2026 · Cloud & Container Security
Установка
git clone https://git.toolsofthetrade.qzz.io/recovered/s3-inspector.git
cd s3-inspector
pip install boto3
python s3inspector.py
переведено ИИ

S3 Inspector

Инструмент для проверки разрешений на.bucket AWS S3.

Совместим с Linux, MacOS и Windows, Python 2.7 и 3. Может использоваться как функция AWS Lambda.

Что он делает

  • Проверяет все ваши bucket'и на публичный доступ
  • Для каждого bucket'а выдает отчет, содержащий:
  • Индикатор, является ли ваш bucket публичным или нет
  • Разрешения для вашего bucket'а, если он публичный
  • Список URL для доступа к вашему bucket'у (непубличные bucket'и вернут Access Denied), если он публичен

Предварительные требования

Создание нового IAM-пользователя

  • Создайте IAM-пользователя с прикрепленной политикой AmazonS3ReadOnly
  • Перейдите в IAM (https://console.aws.amazon.com/iam/home)
  • Нажмите "Users" ("Пользователи") в левом боковом меню
  • Нажмите "Add user" ("Добавить пользователя")
  • Заполните имя пользователя и установите флажок Programmatic access ("Программный доступ")
  • Нажмите "Next: Permissions" ("Далее: Разрешения")
  • Нажмите "Attach existing policies directly" ("Прикрепить существующие политики напрямую")
  • Установите флажок политики AmazonS3ReadOnly
  • Нажмите "Next: Review" ("Далее: Проверка")
  • Нажмите "Create user" ("Создать пользователя")
  • Скопируйте учетные данные
    • Идентификатор ключа доступа
    • Секретный ключ доступа
  • Создайте файл ~/.aws/credentials или вставьте учетные данные при запуске скрипта
  • Вставьте учетные данные, скопированные на предыдущем шаге, в следующем формате:
[default]
aws_access_key_id = <your access key ID goes here>
aws_secret_access_key = <your secret_access_key goes here>

Использование существующего настроенного IAM-пользователя

  • Используйте ваши существующие учетные данные или профиль, если у вас есть файл ~/.aws/credentials следующего вида:
[default]
aws_access_key_id = <your access key ID goes here>
aws_secret_access_key = <your secret_access_key goes here>
[my_profile_name]
aws_access_key_id = <your access key ID goes here>
aws_secret_access_key = <your secret_access_key goes here>
  • и передайте имя профиля или оставьте поле пустым для default при запросе:
python s3inspector.py
Enter your AWS profile name [default]:

Использование

python s3inspector.py

Пример отчета

Пример скриншота отчета

Использование как функция Lambda

Функция Lambda для выполнения аналогичной проверки, описанной выше.

Настройка Lambda и предварительные требования

Вместо IAM-пользователя нам необходима роль, которая разрешает выполнение Lambda, а также доступ только для чтения к bucket'ам S3 и возможность публикации в SNS. Сначала нам нужно создать конечную точку SNS.

  • Перейдите в консоль SNS (https://console.aws.amazon.com/sns/v2/home)
  • Выберите в боковой панели 'Topics' ("Темы")
  • На экране тем нажмите 'Create New Topic' ("Создать новую тему")
  • В появившемся окне добавьте название и описание
  • Нажмите 'Create Topic' ("Создать тему")
  • Когда тема будет создана, перейдите в нее, нажав на ARN
  • Нажмите 'Create Subscription' ("Создать подписку")
  • В появившемся окне измените протокол на 'EMail' ("Электронная почта")
  • В поле 'Endpoint' ("Конечная точка") введите адрес электронной почты получателя отчетов
  • Нажмите 'Create subscription' ("Создать подписку")
  • Выберите подписку и нажмите 'Request confirmations' ("Запросить подтверждения")
  • В почтовом клиенте получателя подтвердите подписку по ссылке.
  • Скопируйте ARN созданной темы (можно посмотреть в 'Topic details' ("Детали темы")) и установите это значение в переменную SNS_RESOURCE_ARN в файле s3inspector.py.

Как только это будет сделано, мы можем создать функцию lambda

  • Перейдите в консоль lambda (https://console.aws.amazon.com/lambda/home)
  • Нажмите 'Create Function' ("Создать функцию")
  • Нажмите 'Author from Scratch' ("Написать с нуля")
  • Задайте функции имя 's3inspector' (или имя файла, содержащего функцию)
  • Примените роль, созданную выше
  • Нажмите 'Create Function' ("Создать функцию")
  • На странице конфигурации
    • Измените Runtime ("Среду выполнения") на 'Python 2.7'
    • Измените Handler ("Обработчик") на 's3inspector.lambda_handler'
    • Скопируйте и вставьте содержимое файла функции lambda в экранный редактор и нажмите 'Save' ("Сохранить")
    • Увеличьте тайм-аут функции до подходящего значения для количества bucket'ов S3 в аккаунте (мы тестировали с 1 минутой и 128 Мб)

Теперь вы можете запустить функцию с пустым тестовым событием или настроить триггер для функции.

Комментарии
Войдите, чтобы оставить комментарий