S3 Inspector

Cloud & Container Security активный

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


Установка
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

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

Sample report screenshot

Использование как функция 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 Мб)

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

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