Доступно в редакциях: EE, CSE Lite (1.73), CSE Pro (1.73)
Стадия жизненного цикла модуля: General Availability
У модуля есть требования для установки
Требования
К версии Deckhouse: 1.75 и выше.
Конверсии
Модуль настраивается с помощью ресурса ModuleConfig, схема которого содержит номер версии. При применении в кластере старой версии схемы ModuleConfig выполняются автоматические преобразования. Чтобы обновить версию схемы ModuleConfig вручную, необходимо последовательно для каждой версии выполнить следующие действия:
-
Обновление из версии 1 в 2:
nodeScanning.scannersиnodeScanning.pkgTypesтеперь используют значения в PascalCase (Vuln/Secret,OS/Library). Существующие значения в нижнем регистре (vuln/secret,os/library) автоматически конвертируются.
Параметры
Версия схемы: 2
-
-
массив объектовsettings.additionalRegistryCA
Список корневых сертификатов (CA) приватных хранилищ образов контейнеров (container registry).
Если требуется указать несколько сертификатов, они перечисляются последовательно, без дополнительных переносов строк.
Пример:
additionalRegistryCA: - name: example CA ca: | -----BEGIN CERTIFICATE----- ................. -----END CERTIFICATE----- - name: CA with intermediate CA ca: | -----BEGIN CERTIFICATE----- ................. -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ................. -----END CERTIFICATE------
строкаsettings.additionalRegistryCA.ca
-
строкаsettings.additionalRegistryCA.name
-
-
массив строкsettings.additionalVulnerabilityReportFieldsСписок дополнительных полей из базы уязвимостей, добавляемых к отчетам об уязвимостях (VulnerabilityReport).
Пример:
additionalVulnerabilityReportFields: - Class - Target -
объектsettings.complianceReportsУправление набором ресурсов
ClusterComplianceReport, развёртываемых модулем.По умолчанию:
{}-
массив строкsettings.complianceReports.enabled
Список фреймворков соответствия, для которых будут созданы ресурсы
ClusterComplianceReport.Возможные значения:
CIS— CIS Kubernetes Benchmark v1.23.PCI-DSS— PCI DSS v4.0 (ключевые контролы для защиты данных платёжных карт).NSA— NSA-CISA Kubernetes Hardening Guidance v1.0.GDPR— Общий регламент по защите данных (ключевые статьи, связанные с безопасностью).HIPAA— HIPAA Security Rule (ключевые технические меры защиты).FSTEC-21— Приказ ФСТЭК России № 21 (защита персональных данных в ИСПДн).FZ-187— Приказ ФСТЭК России № 239 (значимые объекты КИИ, 187-ФЗ).
По умолчанию отчёты
GDPRиHIPAAотключены.По умолчанию:
[ "CIS", "PCI-DSS", "NSA", "FSTEC-21", "FZ-187" ]Примеры:
enabled: - CIS - NSAenabled: - CIS - PCI-DSS - NSA - GDPR - HIPAA - FSTEC-21 - FZ-187-
строкаsettings.complianceReports.enabled.Элемент массива
Допустимые значения:
CIS,PCI-DSS,NSA,GDPR,HIPAA,FSTEC-21,FZ-187
-
булевыйsettings.complianceReports.skipSystemResources
Исключить ресурсы, принадлежащие платформе и явно помеченные как «не учитывать», из отчётов соответствия.
При включении (по умолчанию) модуль применяет два дополняющих друг друга фильтра:
-
Фильтр на создание (на уровне неймспейса, во время записи). CR
ConfigAuditReportиRbacAssessmentReportне создаются в неймспейсах, которые либо:- попадают под шаблоны
d8-*,kube-*,default; - либо имеют метку
security.deckhouse.io/skip-compliance=trueна самом объектеNamespace.
Вместе это держит
kubectl get configauditreports -Aчистым от платформенного шума и даёт пользователю способ отключить от compliance целые неймспейсы.InfraAssessmentReport— исключение: компоненты control plane вkube-system(kube-apiserver,etcd,kube-scheduler,kube-controller-manager) продолжают порождать infra-проверки, которые питают раздел 1.x CIS Kubernetes Benchmark. - попадают под шаблоны
-
Фильтр на агрегацию compliance (по меткам владельца). При формировании
ClusterComplianceReportагрегатор пропускает находки тех cluster-scoped ресурсов, владелец которых несёт одну из пар метокkey=value:heritage=deckhouse— ресурсы, управляемые Deckhouse.kubernetes.io/bootstrapping=rbac-defaults— встроенные RBAC Kubernetes (system:*,cluster-adminи т. п.).
Это нужно, чтобы зацепить cluster-scoped ресурсы (например, встроенные
ClusterRole), которые namespace-фильтр не достаёт.
Ресурсные отчёты, которые всё-таки создаются (
VulnerabilityReport,ExposedSecretReport,SbomReport,InfraAssessmentReport), формируются для всех сканируемых нагрузок как обычно — сканирование уязвимостей в платформенных образах, поиск секретов и т. п. этим не отключается.О границах сканирования. Модуль разделяет тяжёлый image-pull-сканер уязвимостей (он же продюсер
ExposedSecretReportиSbomReport) и лёгкие конфигурационные сканеры (ConfigAudit,RbacAssessment,InfraAssessment). Сканер уязвимостей остаётся opt-in через метку неймспейсаsecurity-scanning.deckhouse.io/enabled="", а конфигурационные сканеры работают по всему кластеру — параметрskipSystemResourcesсужает только то, что попадает в compliance.По умолчанию:
trueПримеры:
skipSystemResources: trueskipSystemResources: false -
-
-
целочисленныйsettings.concurrentScanJobsLimitМаксимальное количество заданий сканирования (ScanJob), которые оператор может запускать одновременно.
По умолчанию:
10Допустимые значения:
1 <= XПримеры:
concurrentScanJobsLimit: 3concurrentScanJobsLimit: 5concurrentScanJobsLimit: 10 -
объектsettings.denyVulnerableImages
Настройки запрета создания
Pod/Deployment/StatefulSet/DaemonSetс уязвимыми образами в неймспейсах с меткойsecurity.deckhouse.io/trivy-provider: "".Примечание: Этот constraint проверяется только при admission (создание/обновление ресурсов). Gatekeeper audit не оценивает этот constraint.
По умолчанию:
{}-
массив строкsettings.denyVulnerableImages.allowedSeverityLevelsОбразы контейнеров, содержащие только уязвимости указанных уровней критичности, не будут запрещены.
-
строкаsettings.denyVulnerableImages.allowedSeverityLevels.Элемент массива
Допустимые значения:
UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL
-
-
булевыйsettings.denyVulnerableImages.enabledЗапретить использование уязвимых образов в неймспейсах с меткой
security.deckhouse.io/trivy-provider: "".По умолчанию:
false -
массив объектовsettings.denyVulnerableImages.registrySecrets
Список дополнительных секретов приватных регистри.
По умолчанию для загрузки образов для сканирования используется секрет
deckhouse-registry.По умолчанию:
[]-
строкаsettings.denyVulnerableImages.registrySecrets.name
-
строкаsettings.denyVulnerableImages.registrySecrets.namespace
-
-
-
булевыйsettings.disableSBOMGeneration
Отключает генерацию отчетов SBOM.
Внимание. При установке значения “true”, все текущие отчеты SBOM в кластере удаляются (очистка выполняется один раз).
По умолчанию:
falseПримеры:
disableSBOMGeneration: truedisableSBOMGeneration: false -
булевыйsettings.insecureDbRegistryРазрешает Trivy скачивать базы данных уязвимостей, используя недоверенные HTTPS-подключения (не прошедшие проверку TLS-сертификата) или подключения по HTTP.
По умолчанию:
falseПримеры:
insecureDbRegistry: trueinsecureDbRegistry: false -
массив строкsettings.insecureRegistriesСписок адресов хранилищ образов контейнеров (container registry), к которым разрешены недоверенные HTTPS-подключения (не прошедшие проверку TLS-сертификата) и подключения по HTTP.
Пример:
insecureRegistries: - my.registry.com - http-only.registry.io -
булевыйsettings.linkCVEtoBDUВключить конвертацию отчетов уязвимостей. Заменяет уязвимости из базы CVE на данные из базы BDU и выводит их в отчете.
По умолчанию:
falseПримеры:
linkCVEtoBDU: truelinkCVEtoBDU: false -
объектsettings.nodeAgent
Карта приложений и сети на основе runtime-поведения (предварительная версия).
При включении на каждом узле запускается привилегированный eBPF-агент, который наблюдает за runtime-поведением каждой нагрузки — какие процессы она запускает, какие файлы открывает, какие Linux capabilities и системные вызовы использует и с кем устанавливает сетевые соединения. Наблюдения агрегируются по нагрузкам в
ApplicationProfileиNetworkNeighborhood, давая точную карту того, что приложение действительно делает в runtime.Требования. Ядра узлов должны быть Linux 5.4 или новее и предоставлять BTF в
/sys/kernel/btf/vmlinux. Агент работает привилегированно с доступом к host PID.По умолчанию:
{}-
булевыйsettings.nodeAgent.enabledВключает наблюдение в runtime и построение карты приложений и сети.
По умолчанию:
falseПримеры:
enabled: trueenabled: false -
объектsettings.nodeAgent.generatePolicies
Генерация least-privilege политик по наблюдаемой карте.
Сама карта (
ApplicationProfile,NetworkNeighborhood) строится всегда при включённомnodeAgent. Эти переключатели дополнительно публикуют сгенерированные на её основе политики.По умолчанию:
{}-
булевыйsettings.nodeAgent.generatePolicies.networkPolicyПубликовать объекты
GeneratedNetworkPolicy— определения KubernetesNetworkPolicy, вычисленные из наблюдаемогоNetworkNeighborhoodкаждой нагрузки. Просмотрите и примените их, чтобы обеспечить least privilege.По умолчанию:
falseПримеры:
networkPolicy: truenetworkPolicy: false -
булевыйsettings.nodeAgent.generatePolicies.seccompГенерировать и публиковать объекты
SeccompProfileпо наблюдаемым системным вызовам каждой нагрузки. Подключайте их к подам, чтобы ограничить набор разрешённых syscalls.По умолчанию:
falseПримеры:
seccomp: trueseccomp: false
-
-
строкаsettings.nodeAgent.learningPeriodСколько времени нагрузка наблюдается, прежде чем её профиль считается завершённым. В течение этого окна карта продолжает вбирать вновь увиденное поведение; после — профиль фиксируется.
По умолчанию:
1hПримеры:
learningPeriod: 1hlearningPeriod: 24h -
объектsettings.nodeAgent.nodeSelector
Ограничивает запуск eBPF-агента узлами с указанными метками.
По умолчанию агент работает на всех узлах. Используйте параметр, чтобы ограничить его подмножеством узлов, например теми, чьи ядра удовлетворяют требованию BTF.
По умолчанию:
{}Пример:
node-role.kubernetes.io/worker: '' -
массив объектовsettings.nodeAgent.tolerations
Опциональные
tolerationsдля DaemonSet eBPF-агента.Структура, аналогичная
spec.tolerationsпода Kubernetes. Если не указано, агент терпит все taints, чтобы запускаться на каждом узле.Отключите параметр, если объекты, принадлежащие платформе, обязательно должны учитываться в отчётах соответствия.
Пример:
tolerations: - operator: Exists-
строкаsettings.nodeAgent.tolerations.effect
-
строкаsettings.nodeAgent.tolerations.key
-
строкаsettings.nodeAgent.tolerations.operator
-
целочисленныйsettings.nodeAgent.tolerations.tolerationSeconds
-
строкаsettings.nodeAgent.tolerations.value
-
-
-
объектsettings.nodeScanning
Настройки сканирования узлов кластера (хостовой файловой системы).
Эта функция сканирует хостовую файловую систему каждого узла Kubernetes для обнаружения уязвимостей в пакетах операционной системы.
По умолчанию:
{}-
целочисленныйsettings.nodeScanning.concurrentLimit
Максимальное количество одновременно выполняемых заданий сканирования узлов.
Рекомендуется устанавливать низкое значение, чтобы избежать избыточной нагрузки на кластер.
По умолчанию:
1Допустимые значения:
1 <= XПримеры:
concurrentLimit: 1concurrentLimit: 2concurrentLimit: 3 -
булевыйsettings.nodeScanning.enabled
Включает сканирование узлов.
При включении оператор будет сканировать файловую систему каждого узла на предмет уязвимостей в пакетах ОС. Результаты сохраняются в кластерный ресурс
NodeVulnerabilityReport.По умолчанию:
falseПримеры:
enabled: trueenabled: false -
булевыйsettings.nodeScanning.hideUnfixedCVEs
При значении true в отчёт попадают только уязвимости, для которых есть исправление.
Это значительно уменьшает размер отчёта, но скрывает неисправленные уязвимости.
По умолчанию:
falseПримеры:
hideUnfixedCVEs: truehideUnfixedCVEs: false -
объектsettings.nodeScanning.nodeSelectorФильтрация узлов по меткам. Сканируются только узлы, соответствующие всем указанным меткам.
По умолчанию:
{}Примеры:
node-role.kubernetes.io/worker: ''env: production -
массив строкsettings.nodeScanning.pkgTypes
Список типов пакетов для сканирования:
OS— пакеты операционной системы (rpm, deb, apk и т. п.).Library— библиотеки уровня приложения (jar, npm-модули, Python-пакеты и т. п.), найденные на файловой системе узла.
По умолчанию:
[ "OS" ]Примеры:
pkgTypes: - OSpkgTypes: - OS - Library-
строкаsettings.nodeScanning.pkgTypes.Элемент массива
Допустимые значения:
OS,Library
-
массив строкsettings.nodeScanning.scanners
Список сканеров для использования при сканировании узла:
Vuln— сканер уязвимостей (ищет известные CVE в пакетах ОС и библиотеках на файловой системе узла).Secret— сканер секретов (находит зашитые в файлы реквизиты доступа, например AWS-ключи, GitHub-токены и т. п.).
По умолчанию:
[ "Vuln" ]Примеры:
scanners: - Vulnscanners: - Vuln - Secret-
строкаsettings.nodeScanning.scanners.Элемент массива
Допустимые значения:
Vuln,Secret
-
массив строкsettings.nodeScanning.severities
Фильтрация уязвимостей по критичности.
Внимание. Без фильтрации отчёты могут превысить лимит etcd в 3MB на объект для узлов с большим количеством пакетов.
По умолчанию:
[ "CRITICAL", "HIGH" ]Примеры:
severities: - CRITICAL - HIGHseverities: - CRITICAL - HIGH - MEDIUM-
строкаsettings.nodeScanning.severities.Элемент массива
Допустимые значения:
UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL
-
-
массив строкsettings.nodeScanning.skipDirs
Список директорий, которые будут пропущены при сканировании.
По умолчанию исключаются директории контейнерных runtime’ов и виртуальные файловые системы.
По умолчанию:
[ "/proc", "/sys", "/dev", "/run", "/var/lib/containerd", "/var/lib/docker", "/var/lib/kubelet/pods" ]Пример:
skipDirs: - /proc - /sys - /dev -
строкаsettings.nodeScanning.timeout
Таймаут для заданий сканирования узлов.
Если не указан, используется значение по умолчанию для заданий сканирования.
По умолчанию:
‘’Примеры:
timeout: 10mtimeout: 30m
-
-
объектsettings.nodeSelector
Опциональный селектор для компонентов
operator-trivyи заданий сканирования (Jobs).Структура, аналогичная
spec.nodeSelectorпода Kubernetes.Если значение не указано или указано
false, будет использоваться автоматика.Пример:
disktype: ssd -
объектsettings.registryScanning
Настройки периодического сканирования образов на CVE в внешних реестрах контейнеров.
Цели сканирования объявляются ресурсами
RegistryScanTarget; результаты сохраняются как ресурсыRegistryImageVulnerabilityReport.По умолчанию:
{}-
целочисленныйsettings.registryScanning.concurrentScansМаксимальное количество одновременно выполняемых сканирований образов по всем целям.
По умолчанию:
5Допустимые значения:
1 <= XПримеры:
concurrentScans: 3concurrentScans: 5concurrentScans: 10 -
булевыйsettings.registryScanning.enabledВключает сканер реестров
По умолчанию:
falseПримеры:
enabled: trueenabled: false
-
-
массив строкsettings.reportResourceLabels
Список дополнительных меток маркировки отчетов (VulnerabilityReport) Trivy.
Значения этих меток будут соответствовать значениям меток сканируемых ресурсов.
Примеры:
reportResourceLabels: appreportResourceLabels: env -
объектsettings.scanJobResources
Запросы и лимиты ресурсов (
requests/limits) для заданий сканирования (ScanJob).Параметр управляет ресурсами контейнера Trivy в подах, которые оператор создает для сканирования образов.
Если параметр не задан, используются значения по умолчанию (как и до появления этой настройки). Если параметр задан, можно указать только часть полей (например, только
memory) — модуль не будет принудительно подставлять остальные поля.По умолчанию:
{}Пример:
limits: cpu: 500m memory: 500M requests: cpu: 100m memory: 100M-
объектsettings.scanJobResources.limits
По умолчанию:
{}-
строкаsettings.scanJobResources.limits.cpu
Примеры:
cpu: 500mcpu: '1' -
строкаsettings.scanJobResources.limits.memory
Примеры:
memory: 500Mmemory: 1Gi
-
-
объектsettings.scanJobResources.requests
По умолчанию:
{}-
строкаsettings.scanJobResources.requests.cpu
Примеры:
cpu: 100mcpu: 250m -
строкаsettings.scanJobResources.requests.memory
Примеры:
memory: 100Mmemory: 256Mi
-
-
-
объектsettings.scanPeriodsУправляет периодичностью повторного сканирования рабочих нагрузок и перегенерации отчётов соответствия.
По умолчанию:
{}-
строкаsettings.scanPeriods.complianceRescanCron
Расписание в формате cron, определяющее, как часто перегенерируются ресурсы
ClusterComplianceReport.Используется стандартный пятипольный синтаксис cron (
минута час день-месяца месяц день-недели).По умолчанию:
0 */6 * * *Шаблон:
^(((([\*]{1}){1})|((\*\/){0,1}(([0-9]{1}){1}|(([1-5]{1}){1}([0-9]{1}){1}){1}))) ((([\*]{1}){1})|((\*\/){0,1}(([0-9]{1}){1}|(([1]{1}){1}([0-9]{1}){1}){1}|([2]{1}){1}([0-3]{1}){1}))) ((([\*]{1}){1})|((\*\/){0,1}(([1-9]{1}){1}|(([1-2]{1}){1}([0-9]{1}){1}){1}|([3]{1}){1}([0-1]{1}){1}))) ((([\*]{1}){1})|((\*\/){0,1}(([1-9]{1}){1}|(([1-2]{1}){1}([0-9]{1}){1}){1}|([3]{1}){1}([0-1]{1}){1}))|(jan|feb|mar|apr|may|jun|jul|aug|sep|okt|nov|dec)) ((([\*]{1}){1})|((\*\/){0,1}(([0-7]{1}){1}))|(sun|mon|tue|wed|thu|fri|sat)))$Примеры:
complianceRescanCron: 0 0 * * satcomplianceRescanCron: 0 */6 * * * -
строкаsettings.scanPeriods.workloadRescanPeriod
Максимальный возраст отчёта об уязвимостях, по достижении которого он считается устаревшим и ставится в очередь на повторное сканирование.
Как только возраст отчёта превышает указанное значение, оператор удаляет его и планирует новое задание сканирования для его перегенерации. Установите значение
"", чтобы полностью отключить периодическое повторное сканирование (отчёты создаются однократно и не обновляются автоматически).По умолчанию:
24hШаблон:
^([0-9]+h)?([0-9]+m)?([0-9]+s)?$Примеры:
workloadRescanPeriod: 2h50m30sworkloadRescanPeriod: 12h30mworkloadRescanPeriod: 24h
-
-
массив строкsettings.severitiesФильтрация отчетов уязвимостей по уровню их критичности.
Примеры:
severities: - CRITICAL - HIGH - MEDIUM - LOW - UNKNOWNseverities: - CRITICAL - HIGH-
строкаsettings.severities.Элемент массива
Допустимые значения:
UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL
-
-
строкаsettings.storageClass
Имя StorageClass, который будет использоваться для хранения данных модуля.
Если значение не указано, то будет использоваться StorageClass, согласно настройке глобального параметра storageClass.
Настройка глобального параметра
storageClassучитывается только при включении модуля. Изменение глобального параметраstorageClassпри включенном модуле не приведет к перезаказу диска.Внимание. Если указать значение, отличное от текущего (используемого в существующей PVC), диск будет перезаказан, и все данные удалятся.
Если указать
false, будет принудительно использоватьсяemptyDir.Примеры:
storageClass: ceph-ssdstorageClass: 'false' -
массив объектовsettings.tolerations
Опциональные tolerations для компонентов
operator-trivyи заданий сканирования (Jobs).Структура, аналогичная
spec.tolerationsпода Kubernetes.Если значение не указано или указано
false, будет использоваться автоматика.Пример:
effect: NoSchedule key: key1 operator: Equal value: value1-
строкаsettings.tolerations.effect
-
строкаsettings.tolerations.key
-
строкаsettings.tolerations.operator
-
целочисленныйsettings.tolerations.tolerationSeconds
-
строкаsettings.tolerations.value
-
-
булевыйsettings.useVEXFromOCIПоиск VEX-аттестаций сканируемых образов в OCI-хранилищах и подавление отчётности об уязвимостях, объявленных в них.
По умолчанию:
falseПримеры:
useVEXFromOCI: trueuseVEXFromOCI: false
-