Назад к обновлениям
New releaseSep 10, 2026

aws-security-assessment-solution v3.0.0

Инструмент AWS для создания оценки вашего аккаунта AWS на определённый момент времени с помощью Prowler.

Поделиться

Решения для самостоятельной оценки безопасности (v2.0)

Кибербезопасность остается очень важной темой и предметом беспокойства для многих CIO, CISO и их клиентов. Чтобы решить эти важные проблемы, AWS разработала основной набор сервисов, которые клиенты должны использовать для защиты своих аккаунтов. Amazon GuardDuty, AWS Security Hub, AWS Config и проверки AWS Well-Architected помогают клиентам поддерживать надежную позицию безопасности своих аккаунтов AWS. По мере того как все больше организаций переходят в облако, особенно если они делают это быстро и еще не внедрили рекомендуемые сервисы AWS, может возникнуть необходимость в проведении быстрой оценки безопасности облачной среды.

Мы разработали недорогое, простое в развертывании, безопасное и быстрое решение для предоставления нашим клиентам отчета об оценке безопасности. Эти отчеты создаются с использованием проекта с открытым исходным кодом Prowler. Prowler выполняет оценку безопасности на определенный момент времени на основе лучших практик AWS и может помочь быстро выявить любые потенциальные зоны риска в развернутой среде клиента. Если вы заинтересованы в проведении этих оценок на постоянной основе, AWS рекомендует включить стандарт Foundational Security Best Practices в Security Hub. Если вы заинтересованы в интеграции результатов оценки Prowler с Security Hub, вы можете следовать инструкциям в документации Prowler.

Примечание: Prowler не является решением, принадлежащим AWS. Клиенты должны самостоятельно проверить Prowler перед запуском этого решения. Все зависимости, связанные с Prowler, должны поддерживаться в актуальном состоянии. Это решение устанавливает закрепленную версию Prowler (в настоящее время 5.41.0) из установщика пакетов pip, чтобы изменение формата вывода Prowler не могло нарушить сканирование без предупреждения. Чтобы перейти на более новую версию, отредактируйте строку pip3 install prowler== в файле 2-sat2-codebuild-prowler.yaml.

📕 Для получения более подробных пошаговых инструкций посетите модуль 2 в SHIP Workshop.

Содержание

Обзор

Решение развертывается с помощью AWS CloudFormation. При развертывании создаются проект AWS CodeBuild и корзина Amazon S3 для хранения отчетов, созданных Prowler. Затем функция AWS Lambda используется для запуска проекта AWS CodeBuild.

Параметры (вводимые пользователем) по умолчанию выполняют базовое сканирование в одном аккаунте. Однако вы можете выбрать другие параметры для выполнения более расширенных сканирований или для сканирования нескольких аккаунтов. Процесс развертывания занимает менее 5 минут. Шаблоны AWS CloudFormation решения предоставлены для ознакомления в этом репозитории Github.

После развертывания шаблона проект CodeBuild запустится. Оценка по умолчанию занимает около 5 минут. Время выполнения оценки безопасности будет варьироваться в зависимости от количества ресурсов и выбранных параметров сканирования. По завершении оценок отчеты доставляются в созданную корзину S3.

диаграмма архитектуры

Параметры

SATv2 можно настроить, обновив параметры CloudFormation. В этом разделе обобщены доступные параметры и приведена ссылка на раздел с дополнительной информацией.

ПараметрОписаниеДополнительная информация
ProwlerScanTypeУкажите, какой тип сканирования выполнить. Выбор full без указания других ProwlerOptions выполнит полное сканирование. Чтобы выполнить конкретную проверку, выберите Full и добавьте -c к ProwlerOptions.Типы сканирования
MultiAccountScanУстановите значение true, если вы хотите сканировать все аккаунты в вашей организации. Вы должны развернуть предварительный шаблон для предоставления роли или указать другую ProwlerRole с соответствующими разрешениями.Сканирование нескольких аккаунтов
ReportingУстановите значение true, если вы хотите обобщить отчеты Prowler в единый csv. Это полезно при сканировании нескольких аккаунтов.Сводный отчет
EmailAddressУкажите адрес, если вы хотите получать электронное письмо по завершении оценки.Уведомления
Дополнительные параметры
ConcurrentAccountScansДля сканирования нескольких аккаунтов укажите количество аккаунтов для одновременного сканирования. Это полезно для крупных организаций с большим количеством аккаунтов. Выбор более трех изменяет размер экземпляра CodeBuild и может повлечь дополнительные расходы.
CodeBuildTimeoutУстановите тайм-аут для задания CodeBuild. По умолчанию — 300 минут (5 часов).
MultiAccountListOverrideУкажите список аккаунтов для сканирования, разделенный пробелами. Если оставить поле пустым, будут сканироваться все аккаунты в вашей организации. Убедитесь, что вы установили параметр MultiAccountScan выше в значение true, если хотите сканировать определенные аккаунты. Если вы не можете предоставить делегированный доступ ListAccount, вы можете указать параметр MultiAccountListOverride.Сканирование нескольких аккаунтов
ProwlerOptionsУкажите параметры для Prowler. Параметры --role и ARN будут автоматически добавлены в конец указанных вами параметров. Это также можно использовать для указания одной проверки.Полное сканирование
ProwlerRoleРоль, которую Prowler должен принять для выполнения сканирования. Измените это, если вы хотите указать свою собственную роль с другими разрешениями.

Развертывание

Вы можете использовать этот проект для запуска Prowler по нескольким аккаунтам в организации AWS или по одному аккаунту. Мы предоставляем инструкции по использованию AWS CloudShell или консоли AWS. Выберите вариант, чтобы начать.

Тип развертыванияAWS CloudShellAWS console
Один аккаунтСсылкаСсылка
Несколько аккаунтовСсылкаСсылка

Сканирование одного аккаунта

Чтобы запустить решение для самостоятельной оценки безопасности (SATv2) для одного аккаунта, следуйте инструкциям ниже. Вы можете использовать AWS CLI или консоль AWS.

AWS CloudShell

Показать шаги

Развертывание решения

  1. Войдите в свой аккаунт AWS.

  2. На панели навигации выберите AWS CloudShell.

  3. Чтобы загрузить шаблон CloudFormation, введите следующую команду.

    wget https://raw.githubusercontent.com/awslabs/aws-security-assessment-solution/main/2-sat2-codebuild-prowler.yaml
    
  4. Чтобы создать корзину S3 для размещения шаблона, введите следующие команды. Шаблон больше 51 200 байт, поэтому CloudFormation требует загрузить его в S3, а не передавать встроенно.

    TEMPLATE_BUCKET=sat2-cfn-templates-$(aws sts get-caller-identity --query Account --output text)-$AWS_REGION
    aws s3 mb s3://$TEMPLATE_BUCKET --region $AWS_REGION
    
  5. Чтобы развернуть шаблон CloudFormation, введите следующую команду. Параметр --s3-bucket загружает шаблон в корзину перед созданием стека.

    aws cloudformation deploy --template-file 2-sat2-codebuild-prowler.yaml \
    --stack-name sat2 \
    --capabilities CAPABILITY_NAMED_IAM \
    --s3-bucket $TEMPLATE_BUCKET
    
  6. После создания стека вы можете удалить промежуточную корзину. Она используется только для передачи шаблона в CloudFormation.

    aws s3 rb s3://$TEMPLATE_BUCKET --force
    

AWS Console

Показать шаги

Развертывание решения

  1. Загрузите шаблон CloudFormation 2-sat2-codebuild-prowler.yaml.
  2. Перейдите в консоль AWS CloudFormation.
  3. На панели навигации выберите Stacks.
  4. Выберите Create stack.
  5. В разделе Specify template выберите Upload a template file.
  6. Выберите 2-sat2-codebuild-prowler.yaml, который вы загрузили на шаге 1.
  7. Выберите Next.
  8. В поле Stack name введите sat2.
  9. Выберите Next.
  10. На странице Configure stack options выберите Next.
  11. На странице Review SAS установите флажок I acknowledge that AWS CloudFormation might create IAM resources. и выберите Submit.

Сканирование нескольких аккаунтов

Решение для самостоятельной оценки безопасности (SAT) также поддерживает сканирование нескольких аккаунтов. Вы должны развернуть предварительную роль в каждом аккаунте, который хотите сканировать. Чтобы запустить SATv2 для нескольких аккаунтов, следуйте инструкциям ниже. Вы можете использовать AWS CLI или консоль AWS.

Эти инструкции предполагают, что у вас уже есть предварительные условия для операций со стековыми наборами. Для получения дополнительной информации посетите Руководство пользователя AWS CloudFormation.

Примечание: StackSets не применяются к управляющему аккаунту. Чтобы оценить управляющий аккаунт, разверните 1-sat2-member-role как стек CloudFormation.

AWS CloudShell

Показать шаги

Шаг 1: Развертывание предварительной роли

  1. Войдите в свой управляющий аккаунт AWS.

  2. На панели навигации выберите AWS CloudShell.

  3. Определите, из какого аккаунта вы будете запускать сканирование Prowler. Клиенты обычно используют аккаунт для инструментов безопасности или аудита. Запишите идентификатор аккаунта для параметра ProwlerAccountID.

  4. Чтобы загрузить шаблон CloudFormation, введите следующую команду.

    wget https://raw.githubusercontent.com/awslabs/aws-security-assessment-solution/main/1-sat2-member-roles.yaml
    
  5. Разверните шаблон CloudFormation через StackSets CloudFormation. Обновите следующие параметры:

    • Замените <aws-account-id> на идентификатор аккаунта, из которого вы будете запускать Prowler.
    • Замените <region> на регион, в который вы хотите развернуть шаблон.
    aws cloudformation create-stack-set --template-body file://1-sat2-member-roles.yaml \
    --stack-set-name sat2-member-roles \
    --permission-model SERVICE_MANAGED \
    --auto-deployment Enabled=true,RetainStacksOnAccountRemoval=false \
    --capabilities CAPABILITY_NAMED_IAM \
    --parameters ParameterKey=ProwlerAccountID,ParameterValue=<aws-account-id> \
    --region <region>
    
  6. Используйте следующую команду для создания экземпляров стека для каждого аккаунта в вашей организации. Вы можете нацелиться на конкретный OU или корневой OU. Обновите следующие параметры:

    aws cloudformation create-stack-instances --stack-set-name sat2-member-roles \
    --deployment-targets OrganizationalUnitIds='["<root-ou>"]' \
    --regions '["<region>"]' \
    --operation-preferences FailureTolerancePercentage=100,MaxConcurrentPercentage=100 \
    --region <region>
    
  7. Определите, есть ли у вас делегированный администратор или политика ресурсов, которая уже существует для вашего аккаунта Prowler. Нужен только один вариант, и политика ресурсов рекомендуется, так как она более детализирована.

    Примечание: Политики ресурсов недоступны в GovCloud, поэтому вам потребуется использовать делегированного администратора.

    7a. В вашем аккаунте Prowler может уже быть делегирование. Вы можете использовать следующие команды для проверки:

    aws organizations list-delegated-administrators
    

    7b. В вашем аккаунте Prowler может уже быть политика ресурсов. Вы можете использовать следующие команды для проверки:

    aws organizations describe-resource-policy
    
  8. Если у вас нет делегированного администратора или политики ресурсов, вы можете использовать следующие команды для добавления соответствующего доступа.

    Примечание: Если вы не можете предоставить делегированный доступ ListAccount, вы можете указать параметр MultiAccountListOverride в шаблоне 2-sat2-codebuild-prowler.

    Примечание: Если вы используете GovCloud, используйте шаг 8a для создания делегированного администратора. Если вы используете коммерческий регион, используйте шаг 8b для предоставления доступа с минимальными привилегиями к ListAccounts.

    8a. Используйте следующую команду для делегирования администратора, если у вас его еще нет. Замените <aws-account-id> на идентификатор аккаунта, из которого вы будете запускать Prowler.

    aws organizations register-delegated-administrator <aws-account-id>
    

    8b. Используйте следующие команды для добавления политики ресурсов.

    • Замените <aws-account-id> на идентификатор аккаунта, из которого вы будете запускать Prowler.

      aws organizations put-resource-policy --content \
      '{
          "Version": "2012-10-17",
          "Statement": [
          {
              "Sid": "Statement",
              "Effect": "Allow",
              "Principal": {
              "AWS": "arn:aws:iam::<aws-account-id>:root"
              },
              "Action": [
                  "organizations:ListAccounts",
                  "organizations:DescribeAccount",
                  "organizations:ListTagsForResource",
                  "organizations:ListParents",
                  "organizations:DescribeOrganizationalUnit"
      	    ],
              "Resource": "*"
          }
          ]
      }'
      

    Примечание: ListParents и DescribeOrganizationalUnit заполняют столбцы account_ou_uid и account_ou_name в результатах. Если их опустить, остальная часть сканирования все равно работает, но эти два столбца возвращаются пустыми.

Шаг 2: Развертывание решения SATv2

Примечание: Убедитесь, что вы переключились на аккаунт, который указали для запуска Prowler.

  1. Чтобы загрузить шаблон, откройте AWS CloudShell в аккаунте Prowler и введите следующую команду.

    wget https://raw.githubusercontent.com/awslabs/aws-security-assessment-solution/main/2-sat2-codebuild-prowler.yaml
    
  2. Чтобы создать корзину S3 для размещения шаблона, введите следующие команды. Шаблон больше 51 200 байт, поэтому CloudFormation требует загрузить его в S3, а не передавать встроенно.

    TEMPLATE_BUCKET=sat2-cfn-templates-$(aws sts get-caller-identity --query Account --output text)-$AWS_REGION
    aws s3 mb s3://$TEMPLATE_BUCKET --region $AWS_REGION
    
  3. Чтобы развернуть шаблон в аккаунте Prowler. Установите MultiAccountScan в значение true, чтобы сканировать все аккаунты в вашей организации. Параметр --s3-bucket загружает шаблон в корзину перед созданием стека.

    aws cloudformation deploy --template-file 2-sat2-codebuild-prowler.yaml \
    --stack-name sat2-prowler \
    --capabilities CAPABILITY_NAMED_IAM \
    --s3-bucket $TEMPLATE_BUCKET \
    --parameter-overrides MultiAccountScan=true
    
  4. После создания стека вы можете удалить промежуточную корзину. Она используется только для передачи шаблона в CloudFormation.

    aws s3 rb s3://$TEMPLATE_BUCKET --force
    

AWS Console

Показать шаги

Шаг 1: Развертывание предварительной роли

  1. Загрузите файлы 1-sat2-member-roles.yaml и 2-sat2-codebuild-prowler.yaml.

  2. Разверните шаблон CloudFormation через StackSets CloudFormation. Обновите следующие параметры:

    • Замените <aws-account-id> на идентификатор аккаунта, из которого вы будете запускать Prowler.
    • Замените <region> на регион, в который вы хотите развернуть шаблон.3. Перейдите в консоль AWS CloudFormation.
  3. На панели навигации выберите StackSets.

  4. Выберите Create StackSet.

  5. Для Permissions оставьте выбранным Service-managed permissions.

  6. В разделе Specify template выберите Upload a template file.

  7. Выберите файл 1-sat2-member-roles.yaml, скачанный на шаге 1-1.

  8. Нажмите Next.

  9. В поле Stack name введите sat2-member-role.

  10. В разделе Parameters введите следующее:

    • ProwlerAccountID — идентификатор аккаунта, из которого вы будете запускать Prowler.
  11. Нажмите Next.

  12. На странице Configure StackSet options нажмите Next.

  13. На странице Set deployment options введите следующее:

    1. Для Deployment targets оставьте выбранным Deploy to organization.
    2. Для Specify regions выберите us-east-1.
    3. Для Region Concurrency выберите Parallel.
  14. Нажмите Next.

  15. На странице Review установите флажок I acknowledge that AWS CloudFormation might create IAM resources. и нажмите Submit.

Шаг 2: Включение делегированного администратора для AWS Organizations

Определите, есть ли у вас делегированный администратор или политика ресурсов, уже существующая для аккаунта, в котором вы хотите развернуть Prowler. Рекомендуется запускать Prowler из вашего аккаунта для инструментов безопасности (Audit). Чтобы обновить или проверить, что у аккаунта аудита есть разрешения на ListAccounts, выполните следующие шаги.

  1. Перейдите в консоль AWS Organization.

  2. На панели навигации выберите Settings.

  3. Для Delegated administrator for AWS Organizations включите следующее утверждение.

    {
        "Version": "2012-10-17",
        "Statement": [
        {
            "Sid": "Statement",
            "Effect": "Allow",
            "Principal": {
            "AWS": "arn:aws:iam::<aws-account-id>:root"
            },
            "Action": [
                    "organizations:ListAccounts",
                    "organizations:DescribeAccount",
                    "organizations:ListTagsForResource",
                    "organizations:ListParents",
                    "organizations:DescribeOrganizationalUnit"
    		    ],
            "Resource": "*"
        }
        ]
    }
    

    Примечание: ListParents и DescribeOrganizationalUnit заполняют столбцы account_ou_uid и account_ou_name в результатах. Если их опустить, остальная часть сканирования всё равно будет работать, но эти два столбца вернутся пустыми.

Шаг 3: Развертывание решения SATv2

  1. Перейдите в консоль AWS CloudFormation в аккаунте, из которого вы будете запускать инструмент (ProwlerAccountID).

  2. На панели навигации выберите Stacks.

  3. Выберите Create stack.

  4. В разделе Specify template выберите Upload a template file.

  5. Выберите файл 2-sat2-codebuild-prowler.yaml, скачанный на шаге 1-1.

  6. Нажмите Next.

  7. В поле Stack name введите sat2-prowler.

  8. В разделе Parameters для MultiAccountScan выберите true.

  9. При желании вы можете включить формирование отчётов, чтобы получить сводку по всем аккаунтам в одном CSV-файле. Для Reporting выберите true.

  10. Нажмите Next.

  11. На странице Configure stack options нажмите Next.

  12. На странице Review SAS установите флажок I acknowledge that AWS CloudFormation might create IAM resources. и нажмите Submit.

Просмотр результатов

После развертывания решения Lambda-функция запускает проект CodeBuild. После завершения сборки проекта CodeBuild результаты Prowler будут загружены в созданный бакет Amazon S3. Если вы настроили уведомления, вы получите электронное письмо по завершении сканирования Prowler. Если вы настроили формирование отчётов, в папке /reports будет консолидированный CSV-файл.

Если вы не настраивали оповещения по электронной почте, вы можете отслеживать ход выполнения из консоли CodeBuild.

Чтобы просмотреть результаты, выполните следующие шаги.

  1. Перейдите в консоль Amazon S3 в аккаунте, где вы развернули Prowler.

  2. Выберите бакет, имя которого начинается с sat2-prowler-prowlerfindingsbucket-

  3. Выберите папку для нужного формата вывода, затем папки scan_date= и scan_time= для запуска, который вы хотите просмотреть.

    У каждого формата вывода есть собственная папка верхнего уровня, и каждый запуск записывается в подпапку scan_date=ГГГГ-ММ-ДД/scan_time=ЧЧММСС под ней. Время — это время UTC начала сканирования:

    csv/scan_date=2026-09-01/scan_time=204955/         результаты Prowler в формате CSV, как записано
    html/scan_date=2026-09-01/scan_time=204955/        HTML-отчёты по каждому аккаунту
    json/scan_date=2026-09-01/scan_time=204955/        JSON по каждому аккаунту
    ocsf-json/scan_date=2026-09-01/scan_time=204955/   OCSF JSON по каждому аккаунту
    parquet/scan_date=2026-09-01/scan_time=204955/     копия для запросов Athena
    compliance/scan_date=2026-09-01/scan_time=204955/  CSV-файлы соответствия, если созданы
    reports/                                           консолидированный CSV и панель мониторинга
    

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

  4. Для каждого аккаунта будет 4 типа файлов (csv, html, json, json-ocsf) в формате prowler-output-<aws-account-id>-<datetime>.

  5. Выберите один из HTML-объектов.

  6. Нажмите Open.

    Prowler Output

  7. Откроется новое окно с вашим отчётом. Вы можете использовать фильтры для выявления и приоритизации результатов.

    Prowler findings

Панель мониторинга SATv2 (рекомендуется)

Если вы включили формирование отчётов, статическая HTML-панель мониторинга будет находиться в папке reporting.

  1. Выберите объект satv2-dashboard.html и нажмите Open.
  2. Выберите консолидированный CSV, нажмите Actions, затем Share with a presigned URL.

    Примечание: Не сообщайте никому свой presigned URL. Presigned URL использует учётные данные безопасности для предоставления временного разрешения на загрузку объектов. URL можно ввести в браузере или использовать в программе для загрузки объекта. Учётные данные, используемые presigned URL, принадлежат пользователю AWS, который создал URL. Для получения дополнительной информации ознакомьтесь с разделом Sharing objects with presigned URLs.

  3. Для number of minutes введите 1.
  4. Вставьте URL на страницу satv2-dashboard.html.
  5. Пример вывода панели мониторинга см. в img/satv2-dashboard.png

Панель мониторинга Prowler

В Prowler есть встроенная панель мониторинга для просмотра результатов. Чтобы использовать панель мониторинга Prowler, Prowler должен быть установлен локально, и вы должны скачать результаты Prowler локально.

У вас должен быть установлен AWS Command Line Interface (CLI) и действующие учётные данные. Для получения дополнительной информации ознакомьтесь с руководством пользователя AWS Command Line interface.

  1. Установите Prowler. Для получения дополнительной информации ознакомьтесь с инструкциями по установке Prowler.

    pip install prowler
    
  2. Получите имя бакета Amazon S3. Имя бакета указано в консоли CloudFormation как ресурс ProwlerFindingsBucket. Либо перейдите в консоль S3 и найдите бакет в формате {stack_name}-prowlerfindingsbucket-{ID}

  3. Скачайте CSV-файлы и данные соответствия из S3. Если вы не выполняли полное сканирование, данных соответствия может не быть. Замените {bucket_name} на имя вашего бакета, а {scan_date} и {scan_time} — на нужный запуск, например 2026-09-01 и 204955. Чтобы вывести список доступных запусков, используйте aws s3 ls s3://{bucket_name}/csv/scan_date={scan_date}/.

    aws s3 sync s3://{bucket_name}/compliance/scan_date={scan_date}/scan_time={scan_time}/ output/compliance/
    aws s3 sync s3://{bucket_name}/csv/scan_date={scan_date}/scan_time={scan_time}/ output/
    

    Примечание: Синхронизируйте по одному запуску за раз. Панель мониторинга Prowler читает output/*.csv и не ищет в подпапках, поэтому копирование самих папок scan_date= в output/ приведёт к пустой панели мониторинга. Загрузка двух запусков одновременно покажет каждый результат дважды.

  4. Запустите панель мониторинга. Используйте следующую команду для запуска панели мониторинга. По умолчанию она запустится на http://127.0.0.1:11666/.

    prowler dashboard
    

Типы сканирования

По умолчанию SAT2 выполняет базовое сканирование, включающее 13 проверок. Вы можете выбрать промежуточную или полную проверку, выбрав другое значение параметра ProwlerScanType.

Например, сканирование одного аккаунта с использованием промежуточного варианта сканирования будет выглядеть так:```bash aws cloudformation deploy --template-file 2-sat2-codebuild-prowler.yaml
--stack-name sat2-prowler
--capabilities CAPABILITY_NAMED_IAM
--s3-bucket $TEMPLATE_BUCKET
--parameter-overrides ProwlerScanType=Intermediate

>Примечание: параметр `--s3-bucket` обязателен, поскольку шаблон превышает 51 200 байт — максимальный размер, который CloudFormation принимает встроенно. `$TEMPLATE_BUCKET` — это промежуточный bucket, созданный на этапах развертывания CloudShell выше. Это применимо к каждому примеру `aws cloudformation deploy` в этом README.

Проверки часто добавляются; чтобы увидеть последние проверки, выполните команду `prowler aws --list-checks`. Ниже приведен пример для каждого уровня проверки.

### Базовое сканирование
Чтобы просмотреть список проверок, ознакомьтесь с [базовыми проверками](https://github.com/awslabs/aws-security-assessment-solution/blob/main/checks/basic_checks.txt).

- Ручная проверка — поддерживайте актуальные контактные данные.
- Найдите устаревшие среды выполнения Lambda.
- Убедитесь, что CloudTrail включен во всех регионах.
- Убедитесь, что AWS Config включен во всех регионах.
- Убедитесь, что ни одна группа безопасности не разрешает входящий трафик с 0.0.0.0/0 или ::/0 на любой порт.
- Проверьте, включен ли GuardDuty.
- Убедитесь, что политика паролей IAM требует как минимум одну строчную букву.
- Убедитесь, что политика паролей IAM требует как минимум одну цифру.
- Убедитесь, что политика паролей IAM требует как минимум один символ.
- Убедитесь, что политика паролей IAM требует как минимум одну заглавную букву.
- Убедитесь, что MFA включена для корневой учетной записи.
- Убедитесь, что ключи доступа ротируются каждые 90 дней или реже.
- Убедитесь, что нет S3 bucket'ов, открытых для всех или любого пользователя AWS.

### Промежуточное сканирование
Чтобы просмотреть список проверок, ознакомьтесь с [промежуточными проверками](https://github.com/awslabs/aws-security-assessment-solution/blob/main/checks/intermediate_checks.txt).

Это сканирование добавит `--severity critical high` к параметрам сканирования Prowler. При таком выборе Prowler выполнит все проверки безопасности, которые приводят к критической или высокой степени серьезности.

### Полное сканирование
Чтобы просмотреть список проверок, ознакомьтесь с [полными проверками](https://github.com/awslabs/aws-security-assessment-solution/blob/main/checks/full_checks.txt).

Этот вариант не добавляет дополнительных параметров к сканированию Prowler. В результате Prowler выполнит более 500 проверок.

Вы также можете использовать полное сканирование, чтобы настроить проверку по своему усмотрению.

Для **ProwlerScanType** выберите **Full**.

Для **ProwlerOptions** добавьте проверку. Например, чтобы проверить только, включен ли GuardDuty, введите:

`aws --ignore-exit-code-3 -c guardduty_is_enabled`

## Уведомления

Вы можете дополнительно указать адрес электронной почты в параметре EmailAddress при развертывании шаблона CloudFormation. Это создаст тему SNS и отправит электронное письмо по завершении задания CodeBuild.

Это может быть полезно при выполнении более длительных сканирований или в нескольких учетных записях.

Например, сканирование одной учетной записи с уведомлениями по электронной почте будет использовать следующую команду:```bash
aws cloudformation deploy --template-file 2-sat2-codebuild-prowler.yaml \
--stack-name sat2-prowler \
--capabilities CAPABILITY_NAMED_IAM \
--s3-bucket $TEMPLATE_BUCKET \
--parameter-overrides [email protected]

С параметром EmailAddress или без него вы можете просматривать ход выполнения в консоли CodeBuild.

  1. Перейдите в консоль CodeBuild.

  2. На панели навигации в разделе Build выберите Build projects.

  3. Выберите проект сборки, название которого начинается с ProwlerCodeBuild-.

  4. В разделе Build history вы увидите последний запуск.

    Проект CodeBuild

  5. При желании вы можете выбрать Start build, чтобы запустить ещё одно сканирование с параметрами, выбранными при развёртывании решения.

Сводный отчёт

Вы можете дополнительно включить формирование сводного отчёта, чтобы объединить результаты нескольких сканирований Prowler в один файл. Это может быть полезно при запуске Prowler в нескольких аккаунтах в рамках AWS Organization. Функция сводного отчёта по умолчанию отключена. Чтобы включить её, задайте параметру Reporting значение true при развёртывании шаблона CloudFormation. Это создаст WorkGroup Athena, таблицу Glue и автоматически выполнит запрос для консолидации результатов. Итоговый CSV-файл находится в том же S3-бакете, что и результаты Prowler, в папке /reports.

Если при включённом формировании отчёта вы укажете адрес электронной почты, вы получите второе письмо после завершения запроса Athena.

Как строится таблица Athena

Athena запрашивает копию результатов в формате parquet/, а не CSV-файлы Prowler. Проект CodeBuild преобразует каждый CSV в Parquet перед загрузкой, а таблица Glue prowler указывает на parquet/.

Преобразование существует потому, что в Prowler 5.17.0 и более поздних версиях метаданные проверок содержат многострочный Markdown, поэтому поля DESCRIPTION, RISK и REMEDIATION_* содержат символы новой строки. Prowler корректно заключает эти поля в кавычки, но Athena читает CSV через TextInputFormat Hive, который разбивает записи по символам новой строки до запуска любого SerDe. Поэтому таблица на основе CSV возвращает одну строку на физическую строку, а не одну строку на результат проверки, и молча отбрасывает столбцы, следующие за первым многострочным полем. Parquet не использует символы новой строки как границы записей, поэтому текст сохраняется полностью. Parquet также сильно сжимает повторяющийся текст рекомендаций, что удешевляет запросы: набор CSV объёмом 116 МБ превращается примерно в 3 МБ Parquet.

Папка csv/ остаётся ровно в том виде, в котором её создал Prowler, поэтому панель мониторинга Prowler и любые существующие инструменты работы с CSV продолжают работать.

История сканирований и дубликаты

Таблица секционирована по scan_date и scan_time, поэтому каждый запуск решения получает собственный раздел. Из этого следует два момента:

  • Консолидированный CSV в /reports охватывает только самый последний запуск, поэтому повторный запуск решения никогда не приводит к двойному учёту результатов, а результаты, которых больше не существует, не остаются в отчёте.
  • Более ранние запуски остаются доступными для запросов. scan_date и scan_time — обычные столбцы, поэтому вы можете сравнивать результаты между запусками. Сохранённый запрос Prowler scan trend делает именно это — одна строка на запуск.

Секционирования только по дате недостаточно. Второе сканирование в тот же день записалось бы в тот же раздел, и его результаты были бы объединены с результатами более раннего запуска, а не заменили бы их. Любой результат, который новое сканирование больше не сообщает — из-за удаления ресурса, выхода аккаунта из организации, прекращения работы роли участника или сужения типа сканирования — всё равно остался бы в отчёте и выглядел бы актуальным.

Новые разделы регистрируются автоматически: Lambda-функция отчёта выполняет MSCK REPAIR TABLE перед запуском консолидирующего запроса, поэтому планировать crawler или добавлять что-либо вручную не нужно.

Если вы пишете собственные запросы Athena, ограничивайте их одним запуском, иначе вы агрегируете все сканирования в бакете сразу. Оба ключа имеют фиксированную ширину, поэтому их конкатенация при сравнении упорядочивает запуски в хронологическом порядке:```sql SELECT severity, count(*) FROM "{bucket_name}"."prowler" WHERE status = 'FAIL' AND concat(scan_date, scan_time) = ( SELECT max(concat(scan_date, scan_time)) FROM "{bucket_name}"."prowler" ) GROUP BY severity

Чтобы запросить данные за целый день по всем его запускам, фильтруйте только по `scan_date`.

>Примечание: Если вы обновляете развёртывание, использовавшее более раннюю структуру только с `scan_date`, результаты, полученные до обновления, не видны в новой таблице, поскольку их пути в S3 не содержат уровня `scan_time=`. Данные в S3 не изменены. Либо дождитесь, пока следующий скан заново заполнит таблицу, либо переместите старые файлы в папку `scan_time=`, например `aws s3 mv s3://{bucket_name}/parquet/scan_date={scan_date}/ s3://{bucket_name}/parquet/scan_date={scan_date}/scan_time=000000/ --recursive`, а затем выполните `MSCK REPAIR TABLE prowler` в Athena.

Например, многоаккаунтный скан с отчётами и уведомлениями по электронной почте будет использовать следующую команду:```bash
aws cloudformation deploy --template-file 2-sat2-codebuild-prowler.yaml \
--stack-name sat2-prowler \
--capabilities CAPABILITY_NAMED_IAM \
--s3-bucket $TEMPLATE_BUCKET \
--parameter-overrides MultiAccountScan=true Reporting=true [email protected]

схема архитектуры отчётности

В качестве примеров создаются два сохранённых запроса:

Сохранённый запросЧто он показывает
Prowler organization summaryНепройденные проверки по каждой оценённой учётной записи за последнее сканирование.
Prowler scan trendНепройденные проверки по дате сканирования и уровню серьёзности для сравнения запусков с течением времени.

Чтобы просмотреть и выполнить запрос, выполните следующие шаги:

  1. Перейдите в консоль Amazon Athena.

  2. Выберите рабочую группу, название которой начинается с sat2-prowler-*.

  3. Выберите вкладку Сохранённые запросы.

  4. Выберите запрос, который хотите выполнить, выбрав ID.

    Сохранённый запрос Athena

  5. Выберите Выполнить, чтобы запустить запрос.

    Результаты сохранённого запроса Athena

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

  1. Есть ли стоимость?
    • Это решение разработано для работы в рамках AWS Free Tier.
    • Для Amazon CodeBuild клиенты получают 100 минут сборки в месяц.
    • Для клиентов, которые уже превысили лимиты бесплатного уровня в CodeBuild, S3 и Lambda, стоимость этого решения составляет менее 1 доллара за запуск.
  2. Является ли это инструментом непрерывного мониторинга и отчётности?
    • Нет. Это разовая оценка; мы рекомендуем клиентам использовать AWS Security Hub для непрерывных оценок.
  3. Интегрируется ли это с GuardDuty, Security Hub, CloudWatch и т. д.?
    • Нет. Вы можете следовать инструкциям в этом блоге, чтобы интегрировать Prowler и Security Hub.
  4. Как устранить проблемы, указанные в отчётах?
    • Как правило, проблемы описаны в отчёте с легко идентифицируемыми исправлениями. Также обратитесь к публичной документации каждого инструмента (Prowler). Если этого недостаточно, свяжитесь с вашей командой AWS Account или AWS Support, чтобы помочь вам понять отчёты и работать над устранением проблем.
  5. Какие результаты Prowler сообщает для SATv2?
    ПроверкаСмягчение
    Проверка того, что вызовы API-операций Lambda-функций записываются CloudTrail.CloudTrail — это конфигурация уровня учётной записи AWS. CloudTrail должен быть включён независимо от SATv2.
    Включение защиты от завершения для стеков CloudFormationSATv2 предназначен для запуска в определённый момент времени, а затем удаления. Если стек завершается, результаты проверок по-прежнему сохраняются в корзине S3.
    Проверка того, что группы журналов CloudWatch защищены AWS KMS.Данные групп журналов всегда зашифрованы в CloudWatch Logs. По умолчанию CloudWatch Logs использует серверное шифрование для данных журналов в состоянии покоя. Управляемый клиентом ключ KMS не настроен для экономии затрат.
    Проверка того, что группы журналов CloudWatch имеют политику хранения на определённое количество дней.Хранение групп журналов установлено на 7 дней по замыслу. Эта проверка ищет группы журналов с хранением менее года.
    Проверка того, что для корзин S3 включено шифрование KMS.Все корзины Amazon S3 по умолчанию настроены с шифрованием, а объекты автоматически шифруются с помощью серверного шифрования с управляемыми ключами Amazon S3 (SSE-S3). Управляемый клиентом ключ KMS не настроен для экономии затрат.
    Проверка того, что MFA Delete для корзин S3 не включён.Результаты оценки Prowler могут быть воссозданы и не требуют MFA delete.
    Проверка того, что для корзин S3 включена блокировка объектовРезультаты оценки Prowler могут быть воссозданы и не требуют блокировки объектов S3.
    Проверка того, что для корзин S3 включено ведение журнала доступа к серверуРезультаты оценки Prowler не требуют ведения журнала доступа к серверу.

Очистка

После запуска решения следует удалить стеки CloudFormation, чтобы удалить ресурсы, которые больше не нужны. Корзина S3 с результатами сканирования Prowler останется.

Чтобы удалить решение по оценке безопасности из вашей учётной записи, выполните следующие шаги.

  1. Перейдите в консоль AWS CloudFormation в учётной записи, из которой вы запускали инструмент (ProwlerAccountID).

  2. На панели навигации выберите Стеки.

  3. Выберите стек sat2-prowler.

  4. Выберите Удалить.

Если вы развернули StackSet ролей участников для сканирования нескольких учётных записей, выполните следующие шаги.

  1. Перейдите в консоль AWS CloudFormation в учётной записи, в которой вы создали StackSet ролей участников.

  2. На панели навигации выберите StackSets.

  3. Выберите StackSet sat2-member-roles.

  4. Выберите Действия, затем Удалить стеки из StackSet.

  5. Укажите тот же AWS OU ID, который вы использовали при создании StackSet.

  6. Для Указать регионы выберите Добавить все регионы.

  7. Выберите Далее, затем Отправить.

После завершения изменения вы можете удалить StackSet.

  1. Выберите StackSet sat2-member-roles.

  2. Выберите Действия, затем Удалить StackSet.

Если вы хотите удалить корзину Amazon S3 с результатами сканирования, следуйте инструкциям в руководстве пользователя Amazon S3, чтобы удалить объекты и корзину. Если вы запустите решение снова, для ваших результатов будет создана новая корзина S3.

Безопасность

См. CONTRIBUTING для получения дополнительной информации.

Лицензия

Этот проект лицензирован в соответствии с лицензией Apache-2.0.

Категории