Требования к защите приложений
6. Защита приложений
Защита от роботной активности
6.1 Используется Yandex SmartCaptcha
Для снижения рисков, связанных с автоматизированными атаками на приложения, рекомендуем использовать сервис Yandex SmartCaptcha. Сервис проверяет запросы пользователей своими ML-алгоритмами и показывает задание только тем пользователям, запросы которых посчитал подозрительными. При этом на странице необязательно размещать кнопку Я не робот.
| ID требования | Критичность |
|---|---|
| APPSEC1 | Информационная |
- В консоли управления
выберите каталог. - Выберите сервис Yandex SmartCaptcha.
- Убедитесь, что создана хотя бы одна капча для вашего приложения.
Инструкции и решения по выполнению:
Инструкция по созданию капчи в Yandex SmartCaptcha.
Построение безопасного пайплайна
Yandex Cloud позволяет клиентам выстроить соответствие разрабатываемого ПО по всем уровням Supply-chain Levels for Software Artifacts (SLSA)
6.2 При создании реестра в Yandex Container Registry по умолчанию оставляйте безопасные настройки реестра
При создании нового реестра набор опций по умолчанию помогает соответствовать стандарту безопасности Yandex Cloud:
- автоматически выполняется сканирование Docker-образов при их загрузке в реестр;
- регулярно выполняется повторное сканирование Docker-образов в реестре: каждые 7 дней с возможностью выбрать в настройках ежедневное сканирование.
| ID требования | Критичность |
|---|---|
| APPSEC14 | Средняя |
Инструкции и решения по выполнению:
-
В консоли управления
выберите каталог, в котором будет создан реестр. -
В списке сервисов выберите Container Registry.
-
Нажмите кнопку Создать реестр.
-
В поле Имя введите имя реестра. Требования к имени:
- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
В блоке Автоматическое сканирование:
- Оставьте включенной опцию Сканировать Docker-образы при загрузке, чтобы сканировать Docker-образы при загрузке в репозиторий.
- Оставьте включенной опцию Сканировать все Docker-образы в реестре, при необходимости настройте периодичность сканирования.
-
Нажмите кнопку Создать реестр.
Выполните команду, чтобы создать реестр с безопасными настройками сканирования образов по умолчанию:
yc container registry create \
--name <имя_реестра> \
--secure
6.3 Docker-образы сканируются при загрузке в Container Registry
Автоматическое сканирование Docker-образов при загрузке имеет решающее значение для раннего обнаружения и устранения уязвимостей, обеспечивая безопасное развертывание контейнеров. После завершения сканирования отчеты содержат краткое описание обнаруженных уязвимостей и проблем, помогая определять приоритеты и устранять риски безопасности в контейнерных приложениях.
| ID требования | Критичность |
|---|---|
| APPSEC2 | Средняя |
- В консоли управления
выберите каталог, которому принадлежит реестр с Docker-образами. - Выберите реестр в сервисе Container Registry.
- Перейдите на вкладку Сканер уязвимостей и нажмите кнопку Изменить настройки.
- Убедитесь, что сканирование Docker-образов при загрузке включено.
Инструкции и решения по выполнению:
Инструкция по сканированию Docker-образа при загрузке.
6.4 Выполняется периодическое сканирование Docker-образов, хранящихся в Container Registry
Сканирование Docker-образов по расписанию представляет собой автоматизированный процесс проверки контейнерных образов на наличие уязвимостей и соответствие стандартам безопасности. Такое сканирование выполняется регулярно и автоматически, что обеспечивает консистентность проверки образов на наличие уязвимостей. Это позволяет поддерживать высокий уровень безопасности в долгосрочной перспективе. После завершения сканирования отчеты содержат краткое описание обнаруженных уязвимостей и проблем, помогая определять приоритеты и устранять риски безопасности в контейнерных приложениях.
Рекомендуем настроить расписание сканирования не реже, чем раз в неделю.
| ID требования | Критичность |
|---|---|
| APPSEC3 | Высокая |
- В консоли управления
выберите каталог, которому принадлежит реестр с Docker-образами. - Выберите реестр в сервисе Container Registry.
- Перейдите на вкладку Сканер уязвимостей и нажмите кнопку Изменить настройки.
- Убедитесь, что сканирование Docker-образов по расписанию включено и оно проходит не реже, чем раз в неделю.
Инструкции и решения по выполнению:
Инструкция по сканированию Docker-образа по расписанию.
6.5 Контейнерные образы, используемые в продакшн-среде, имеют последнюю дату сканирования не позднее недели
Проверка Docker-образов, используемых в рабочей среде, с датой последнего сканирования не позднее недели гарантирует, что вы постоянно отслеживаете и обновляете меры безопасности, устраняя потенциальные уязвимости, которые могли возникнуть с момента последнего сканирования, а также помогает убедиться, что вы не разворачиваете контейнеры с недавно обнаруженными уязвимостями, тем самым повышая уровень защищенности. Автоматизировать этот процесс можно с помощью настройки расписания в Сканере уязвимостей.
| ID требования | Критичность |
|---|---|
| APPSEC4 | Средняя |
Выполните команду для поиска контейнерных образов, которые имеют последнюю дату сканирования не позднее недели:
export ORG_ID=<ID_организации>
for CLOUD_ID in $(yc resource-manager cloud list --organization-id=${ORG_ID} --format=json | jq -r '.[].id');
do for FOLDER_ID in $(yc resource-manager folder list --cloud-id=$CLOUD_ID --format=json | jq -r '.[].id');
do for REGISTRY_ID in $(yc container registry list --folder-id $FOLDER_ID --format=json | jq -r '.[].id');
do for IMAGE_ID in $(yc container image list --registry-id $REGISTRY_ID --format=json | jq -r '.[].id';)
do LAST_SCAN_DATE=$(yc container image get-last-scan-result --image-id $IMAGE_ID --format=json 2>/dev/null | jq -r '.scanned_at');
[ ! -z "$LAST_SCAN_DATE" ] && [ $(date --date "$LAST_SCAN_DATE" +'%s') -lt $(date --date '7 days ago' +'%s') ] && echo "Regitry ID - $REGISTRY_ID, Image ID - $IMAGE_ID, Last scan date - $LAST_SCAN_DATE"
done;
done;
done;
done
6.6 При сборке артефактов применяются аттестации
Аттестации применяются при сборке артефактов, чтобы обеспечить безопасную и поддающуюся проверке запись о происхождении артефакта, его целостности и соответствии политикам безопасности SBOM. Это помогает обеспечить надежность артефакта на протяжении всего жизненного цикла. SBOM необходим для обеспечения безопасности цепочки поставок, управления уязвимостями, соответствия требованиям, оценки рисков, прозрачности и эффективного реагирования на инциденты.
При использовании Managed Service for GitLab процесс применения аттестаций становится проще, потому что сервис имеет функцию генерации provenance attestation
| ID требования | Критичность |
|---|---|
| APPSEC5 | Высокая |
Убедитесь, что выполняется аттестация артефактов при сборке приложения.
Инструкции и решения по выполнению:
Инструкция от Gitlab по аттестации артефактов
6.7 Обеспечивается целостность артефактов
Подписание артефактов повышает безопасность, обеспечивая подлинность, целостность, доверие и соответствие требованиям в вашем программном обеспечении.
| ID требования | Критичность |
|---|---|
| APPSEC6 | Высокая |
Убедитесь, что выполняется подписание артефактов при сборке приложения.
Инструкции и решения по выполнению:
Артефакты в рамках пайплайна можно подписывать с помощью стороннего ПО Cosign
С помощью специальной сборки утилиты Cosign сохраняйте созданную ключевую пару электронной подписи в сервисе Yandex Key Management Service, подписывайте файлы и артефакты закрытым ключом этой ключевой пары и проверяйте электронную подпись с помощью ее открытого ключа.
Подробнее см. в разделе Подпись и проверка Docker-образов Container Registry в Yandex Managed Service for Kubernetes.
6.8 Выполняется проверка подлинности артефактов при развертывании
Чтобы обеспечить надежность, безопасность и совместимость приложений в Managed Service for Kubernetes, сервисе для автоматического масштабирования и развертывания приложений, необходимо свести к минимуму риск возникновения проблем, уязвимостей и сбоев во время развертывания и выполнения. Для этого используется подпись и проверка подписи в Managed Service for Kubernetes с помощью Cosign и Kyverno.
| ID требования | Критичность |
|---|---|
| APPSEC7 | Средняя |
Убедитесь, что выполняется проверка подлинности артефактов при сборке приложения.
Инструкции и решения по выполнению:
Инструкция по настройке подписи артефактов.
6.9 Применяются защищенные шаблоны безопасного пайплайна
При работе с Managed Service for GitLab убедитесь, что вы применяете встроенные механизмы безопасности GitLab для защиты вашего пайплайна. Доступны следующие варианты использования пайплайна в ваших проектах:
- Создание пайплайна в отдельном проекте и подключение его к другим проектам с помощью функции
include . Доступно для всех типов лицензий. - Использование механизма
Compliance framework and pipeline , который будет выполняться в любом проекте группы. Механизм доступен для типа лицензииUltimate. - Копирование секции пайплайна в файлы
.gitlab-ci.ymlваших проектов.
| ID требования | Критичность |
|---|---|
| APPSEC8 | Информационная |
6.10 Используется профиль безопасности Yandex Smart Web Security
Yandex Smart Web Security — сервис для защиты от DDoS, web-атак и ботов на прикладном уровне L7 сетевой модели OSI
Функциональность сервиса сводится к проверке HTTP-запросов к защищаемому ресурсу на соответствие правилам, заданным в профиле безопасности. В зависимости от результатов проверки запросы пропускаются на защищаемый ресурс, блокируются или отправляются в сервис Yandex SmartCaptcha для дополнительной верификации.
| ID требования | Критичность |
|---|---|
| APPSEC9 | Высокая |
- В консоли управления
выберите каталог, в котором вы хотите проверить статус Smart Web Security. - В списке сервисов выберите Smart Web Security.
- Убедитесь, что у вас есть созданные профили безопасности.
- Если профили безопасности есть, рекомендация выполняется. В противном случае перейдите к п. «Инструкции и решения по выполнению».
Выполните команду:
yc smartwebsecurity security-profile list
Если команда вернет информацию об имеющихся профилях безопасности, рекомендация выполняется. В противном случае перейдите к п. «Инструкции и решения по выполнению».
Инструкции и решения по выполнению:
Создание профиля безопасности и подключение его к виртуальному хосту L7-балансировщика.
6.11 Используется Web Application Firewall
Для снижения рисков, связанных с веб-атаками, рекомендуем использовать Yandex Smart Web Security Web Application Firewall (WAF). Web Application Firewall анализирует входящие HTTP-запросы к веб-приложению по предварительно настроенным правилам. На основе результатов анализа к HTTP-запросам применяются определенные действия.
Вы можете управлять межсетевым экраном веб-приложений с помощью профиля WAF, который подключается к профилю безопасности Smart Web Security в виде отдельного правила.
| ID требования | Критичность |
|---|---|
| APPSEC10 | Средняя |
- В консоли управления
выберите каталог, в котором необходимо проверить наличие правила WAF в профиле безопасности. - В списке сервисов выберите Smart Web Security.
- Убедитесь, что у вас в профиле безопасности есть правило безопасности с типом Web Application Firewall.
Инструкции и решения по выполнению:
Создание профиля WAF и подключение его к профилю безопасности Smart Web Security.
6.12 Используется Advanced Rate Limiter
Advanced Rate Limiter (ARL) — модуль Yandex Smart Web Security для контроля и ограничения нагрузки на веб-приложения. Модуль позволяет установить лимит на количество HTTP-запросов за определенный промежуток времени. Все запросы сверх лимита будут блокироваться. Можно установить как единый лимит на весь трафик, так и настраивать отдельные лимиты для сегментирования запросов по определенным параметрам. Запросы для лимитов можно считать по одному или объединять в группы по заданному признаку.
Профиль ARL необходимо подключить к профилю безопасности Smart Web Security.
| ID требования | Критичность |
|---|---|
| APPSEC11 | Средняя |
- В консоли управления
выберите каталог, в котором необходимо проверить наличие профилей ARL. - В списке сервисов выберите Smart Web Security.
- На панели слева выберите
Профили ARL и убедитесь, что у вас есть профили ARL, подключенные к профилю безопасности.
Инструкции и решения по выполнению:
Создание профиля ARL и подключение его к профилю безопасности Smart Web Security.
6.13 Настроены правила ревью кода
Yandex Managed Service for GitLab позволяет гибко настраивать обязательные правила ревью кода, прежде чем этот код может быть добавлен в целевую ветку проекта. Функциональность является альтернативой встроенному в GitLab Enterprise Edition инструменту Approval Rules
Если в инстансе GitLab включены правила ревью кода, Managed Service for GitLab анализирует подтверждения от ревьюеров на соответствие заданным правилам. Если подтверждений недостаточно, в мерж-реквесте создается техническая дискуссия, блокирующая его интеграцию в целевую ветку. При изменении мерж-реквеста в дискуссии создается или обновляется комментарий с текущим статусом соответствия правилам. Когда все необходимые подтверждения получены, дискуссия закрывается.
Если закрыть техническую дискуссию вручную, она будет создана заново. В случае интеграции мерж-реквеста в обход заданных правил пользователи с ролью Maintainer и выше получат уведомление на электронную почту о нарушении установленного процесса ревью кода.
| ID требования | Критичность |
|---|---|
| APPSEC12 | Средняя |
- В консоли управления
выберите каталог, в котором расположен инстанс GitLab. - В списке сервисов выберите Managed Service for GitLab.
- Выберите нужный инстанс и в правом верхнем углу страницы нажмите Редактировать.
- Убедитесь, что в поле Правила ревью кода выбрана настроенная конфигурация правил ревью кода.
Инструкции и решения по выполнению:
Активация правил ревью кода в инстансе GitLab.
6.14 Доверенные и нежелательные IP-адреса группируются в списки
В Yandex Smart Web Security есть возможность сформировать собственные наборы IP-адресов — пользовательские списки. Списки можно добавлять в качестве условий в правила, чтобы пропустить, заблокировать или направить в SmartCaptcha часть трафика на этапе проверки IP-адреса.
| ID требования | Критичность |
|---|---|
| APPSEC13 | Средняя |
- Откройте консоль Yandex Cloud в вашем браузере.
- Перейдите в нужный каталог.
- В списке сервисов выберите Smart Web Security.
- Перейдите в раздел Списки.
- Убедитесь, что у вас есть созданные списки.
- Если списки есть, рекомендация выполняется. Если нет, перейдите к пункту «Инструкции и решения по выполнению».
Чтобы убедиться, что у вас есть списки в Smart Web Security, обратитесь к вашему персональному менеджеру.
Инструкции и решения по выполнению:
Используйте черные и белые списки IP-адресов для фильтрации трафика. Подробнее см. в разделе Управление списками адресов.