Пользовательская проверка соответствия
Пользовательские скрипты можно запускать на контейнерах и хостах для использования в проверках соответствия и других оценках. Пользовательская проверка соответствия — это bash-скрипт, который можно запустить на любом контейнере для проверки условий и вывода результатов в раздел соответствия контейнера или узла.
1. Настройка переменной окружения
Возможность создания пользовательских скриптов по умолчанию отключена для защиты от несанкционированного использования. Ее можно включить, настроив переменную окружения CUSTOM_CHECK_CONTROL в контроллере и энфорсере (хостовом агенте) подов NeuVector.
Возможные значения: disable (по умолчанию, запрещено), strict (только для роли администратора) или loose (для ролей администратора, соответствия и политики выполнения).
Для настройки переменной выполните следующие шаги:
-
В веб-интерфейсе Nova Container Platform перейдите на страницу Администрирование → CustomResourceDefinitions.
-
С помощью поисковой строки найдите и нажмите на Kustomizations.
-
На странице Kustomizations перейдите ко вкладке Инстансы и с помощью поиска найдите
nova-release-neuvector-main. -
Нажмите на
nova-release-neuvector-mainи перейдите на вкладку YAML. Добавьте следующий патч в блокspec:
patches:
- patch: |-
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: neuvector-controller-pod
namespace: nova-neuvector
spec:
template:
spec:
containers:
- name: neuvector-controller-pod
env:
- name: CUSTOM_CHECK_CONTROL
value: loose
target:
kind: StatefulSet
name: neuvector-controller-pod
namespace: nova-neuvector
- patch: |-
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: neuvector-enforcer-pod
namespace: nova-neuvector
spec:
template:
spec:
containers:
- name: neuvector-enforcer-pod
env:
- name: CUSTOM_CHECK_CONTROL
value: loose
target:
kind: DaemonSet
name: neuvector-enforcer-pod
namespace: nova-neuvector
2. Ограничения и особенности
|
Пользовательские скрипты следует использовать с особой осторожностью. Пользовательский скрипт может запустить любой исполняемый файл в пространстве имен контейнера с привилегиями контейнера. Исполняемые файлы, такие как |
-
Пользовательские скрипты запускаются с теми же привилегиями, что и запущенный контейнер.
-
Результат проверки соответствия удаляется после удаления пользовательского скрипта.
-
Пользовательские проверки соответствия должны соответствовать определенному формату, чтобы правильно отразить результаты в отчете о соответствии для контейнера или узла.
-
Скрипт начинается с оператора
ifдля проверки определенного условия. -
Пользовательская проверка считается пройденной, если код завершения равен 0.
-
Пользовательская проверка завершается неудачей, если код завершения равен 1.
-
-
Для завершения скриптов отводится 1 минута, в противном случае они останавливаются, и в результате проверки соответствия выдается сообщение об ошибке.
-
Скрипт может быть выполнен во всех трех режимах работы: Discover, Monitor и Protect.
2.1. Примеры скриптов
if [ $(cat /etc/shadow | grep 'root:::0:::::') ]; then
DESCRIPTION="CVE-2019-5021 fails."
echo $DESCRIPTION;
exit 1;
else
echo "CVE-2019-5021 pass";
exit 0;
fi
if [ $(find . / | grep -w 'cow') ]; then
DESCRIPTION="cow seen in the container"
echo $DESCRIPTION;
exit 1;
else
echo "no cow found pass";
exit 0;
fi
3. Создание пользовательского скрипта для проверки
-
В веб-интерфейсе NeuVector перейдите на вкладку Policy → Groups и выберите группу.
-
Перейдите на вкладку Custom Check.
-
Введите название скрипта. Пробелы не допускаются.
-
Скопируйте и вставьте скрипт в раздел скриптов. Для примера используйте скрипт для проверки файла
cowв контейнере. -
Нажмите кнопку Add, чтобы добавить скрипт.
-
Для просмотра результата работы скрипта перейдите в меню Assets → Containers → выберите контейнер → Compliance или Assets → Nodes → выберите узел → Compliance.
|
Скрипты запускаются на контейнерах, охватываемых сервисной группой, сразу после создания скрипта, а также при его обновлении. |
4. Создание правила ответа для отчета соответствия
Правила реагирования, основанные на результатах проверки соответствия требованиям, можно создать в разделе Policy → Response Rules. Результаты относятся к категории Compliance, и для всех событий определенного уровня можно создать ответы.
-
В веб-консоли NeuVector перейдите на вкладку Policy → Response Rules и нажмите на кнопку Add to Top.
-
Выберите Compliance.
-
Введите имя группы обслуживания в поле Group и выберите нужную группу.
-
Выберите уровень
level:Warningв поле Add Criteria. -
Включите необходимые действия: Quarantine, Webhook и/или Suppress Log.
-
Переведите ползунок статуса в состояние Enabled.
-
Нажмите кнопку Add, чтобы добавить правило ответа.
|
Следующее событие, сопровождающееся предупреждением о результатах, запустит соответствующее действие правила реагирования. |