Пользовательские определения ресурсов (CRD) NeuVector

NeuVector предоставляет полный набор пользовательских определений ресурсов (CRD), которые обеспечивают декларативное управление политиками безопасности через подход “Политика как код”. Эти CRD позволяют командам определять, версионировать и управлять политиками безопасности вместе с развертыванием приложений.

Обзор

CRD NeuVector позволяют:

  • Определять политики безопасности декларативно, используя нативные ресурсы Kubernetes
  • Версионировать и отслеживать политики безопасности вместе с кодом приложения
  • Автоматизировать развертывание политик безопасности в нескольких кластерах
  • Реализовывать рабочие процессы GitOps для управления безопасностью
  • Обеспечивать согласованные политики безопасности в CI/CD конвейерах

Поддерживаемые CRD

Основные CRD политик безопасности

NvSecurityRule

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

NvSecurityRule определяет политики безопасности, которые применяются к рабочим нагрузкам в определенном пространстве имен. Эти правила ограничены пространством имен, где они развернуты, и могут влиять только на цели в этом пространстве имен.

Ключевые возможности:

  • Принуждение в рамках пространства имен
  • Правила входящего/исходящего сетевого трафика
  • Контроль процессов и доступа к файлам
  • Интеграция политик DLP и WAF

Пример:

apiVersion: neuvector.com/v1
kind: NvSecurityRule
metadata:
  name: web-app-security
  namespace: production
spec:
  target:
    policymode: Protect
    selector:
      name: nv.web-app.production
      criteria:
        - key: service
          value: web-app.production
          op: "="
        - key: domain
          value: production
          op: "="
  ingress:
    - action: allow
      name: allow-http
      selector:
        name: ingress-controller
        criteria:
          - key: service
            value: nginx-ingress
            op: "="
      ports: tcp/80,tcp/443
      applications:
        - HTTP
        - SSL
  egress:
    - action: allow
      name: allow-database
      selector:
        name: nv.database.production
        criteria:
          - key: service
            value: database.production
            op: "="
      ports: tcp/5432
      applications:
        - PostgreSQL

NvClusterSecurityRule

Правила безопасности на уровне кластера для глобальных политик.

NvClusterSecurityRule определяет политики безопасности, которые применяются ко всему кластеру, независимо от границ пространств имен. Эти правила идеально подходят для обеспечения глобальных стандартов безопасности и базовой защиты.

Ключевые возможности:

  • Принуждение на уровне кластера
  • Глобальные базовые линии безопасности
  • Управление политиками между пространствами имен
  • Поддержка федеративных политик

Пример:

apiVersion: neuvector.com/v1
kind: NvClusterSecurityRule
metadata:
  name: global-ssh-restriction
  namespace: neuvector
spec:
  target:
    selector:
      name: containers
      criteria:
        - key: container
          value: "*"
          op: "="
  ingress:
    - action: deny
      name: deny-external-ssh
      selector:
        name: external
        criteria: []
      ports: tcp/22
      applications:
        - SSH
  process:
    - action: deny
      name: ssh
      path: /bin/ssh

NvGroupDefinition

Ресурс определения группы для модульного управления политиками.

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

Ключевые возможности:

  • Переиспользуемые определения групп
  • Централизованное управление группами
  • Поддержка ссылок по имени
  • Упрощенное обслуживание политик

Пример:

apiVersion: neuvector.com/v1
kind: NvGroupDefinition
metadata:
  name: production-web-services
  namespace: neuvector
spec:
  selector:
    name: nv.web-services.production
    comment: "Группа веб-сервисов продакшена"
    criteria:
      - key: service
        value: web-services.production
        op: "="
      - key: domain
        value: production
        op: "="

CRD контроля допуска

NvAdmissionControlSecurityRule

Политики контроля допуска Kubernetes для валидации рабочих нагрузок.

NvAdmissionControlSecurityRule определяет политики контроля допуска, которые валидируют и потенциально блокируют развертывания рабочих нагрузок на основе критериев безопасности.

Ключевые возможности:

  • Интеграция контроля допуска
  • Правила валидации рабочих нагрузок
  • Принуждение безопасности во время развертывания
  • Проверка соответствия

Пример:

apiVersion: neuvector.com/v1
kind: NvAdmissionControlSecurityRule
metadata:
  name: local
  namespace: neuvector
spec:
  config:
    enable: true
    mode: protect
    client_mode: service
  rules:
    - action: deny
      criteria:
        - name: namespace
          op: containsAny
          path: namespace
          value: "kube-system,kube-public"
      comment: "Блокировка развертываний в системные пространства имен"

Специализированные CRD безопасности

NvDlpSecurityRule

Политики предотвращения утечки данных (DLP).

NvDlpSecurityRule определяет политики защиты данных для предотвращения утечки конфиденциальных данных и обеспечения соблюдения требований к обработке данных.

Ключевые возможности:

  • Обнаружение конфиденциальных данных
  • Предотвращение утечки данных
  • Обеспечение соответствия
  • Сопоставление пользовательских шаблонов

NvComplianceProfile

Конфигурации сканирования и отчетности по соответствию.

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

Ключевые возможности:

  • Определения стандартов соответствия
  • Автоматизированное сканирование
  • Конфигурации отчетности
  • Пользовательские проверки соответствия

NvVulnerabilityProfile

Политики сканирования и управления уязвимостями.

NvVulnerabilityProfile определяет политики оценки уязвимостей и конфигурации управления рисками.

Ключевые возможности:

  • Политики сканирования уязвимостей
  • Правила оценки рисков
  • Рабочие процессы устранения
  • Пользовательские критерии уязвимостей

NvWafSecurityRule

Политики межсетевого экрана веб-приложений (WAF).

NvWafSecurityRule определяет правила защиты веб-приложений и политики фильтрации трафика.

Ключевые возможности:

  • Защита веб-приложений
  • Правила фильтрации трафика
  • Обнаружение шаблонов атак
  • Пользовательские правила WAF

Спецификация политики

Спецификация цели

Все правила безопасности требуют спецификации цели, которая определяет, к каким рабочим нагрузкам применяется политика:

target:
  policymode: Protect  # Discover, Monitor, или Protect
  selector:
    name: group-name
    criteria:
      - key: service
        value: service-name
        op: "="
      - key: domain
        value: namespace
        op: "="

Режимы политики:

  • Discover: Изучать и регистрировать все действия без принуждения
  • Monitor: Регистрировать нарушения политики, но разрешать трафик
  • Protect: Активно блокировать нарушения политики

Сетевые правила

Сетевые правила контролируют входящий и исходящий трафик:

ingress:
  - action: allow|deny
    name: rule-name
    selector:
      name: source-group
      criteria:
        - key: selector-key
          value: selector-value
          op: operator
    ports: "tcp/80,tcp/443"
    applications: ["HTTP", "SSL"]
    priority: 0

Поддерживаемые приложения:

  • ActiveMQ, Apache, Cassandra, Consul, CouchDB, DHCP, DNS
  • ElasticSearch, etcd, GRPC, HTTP, Kafka, Memcached, MongoDB
  • MySQL, nginx, PostgreSQL, RabbitMQ, Redis, SSH, SSL
  • И многие другие…

Правила процессов

Правила процессов контролируют, какие процессы могут выполняться:

process:
  - action: allow|deny
    name: process-name
    path: /path/to/process
    allow_update: true|false

Правила доступа к файлам

Правила доступа к файлам контролируют операции файловой системы:

file:
  - behavior: monitor_change|block_access
    filter: /path/to/file/or/directory
    recursive: true|false
    app: ["allowed-applications"]

Профили процессов

Профили процессов определяют поведенческие базовые линии:

process_profile:
  baseline: default|shield|basic|zero-drift
  mode: Discover|Monitor|Protect

Операторы селекторов

Селекторы CRD поддерживают различные операторы для гибкого сопоставления:

Оператор Описание Пример
= Точное совпадение value: "web-app"
!= Не равно value: "test"
contains Содержит подстроку value: "web"
prefix Начинается с value: "app-"
regex Регулярное выражение value: "^web-.*"
!regex Отрицательное регулярное выражение value: "^(?!test).*"

Ссылка по имени

Используйте атрибут name_referral для ссылки на определения групп:

selector:
  name: predefined-group
  name_referral: true
  # criteria будет игнорироваться и найдено из NvGroupDefinition

Лучшие практики

Организация политик

  1. Используйте NvGroupDefinition для переиспользуемых групп:

    # Определить один раз
    apiVersion: neuvector.com/v1
    kind: NvGroupDefinition
    metadata:
      name: web-tier
    spec:
      selector:
        name: nv.web-tier.production
    
  2. Используйте правила с областью действия пространства имен для политик приложений:

    # Специфично для приложения в пространстве имен
    apiVersion: neuvector.com/v1
    kind: NvSecurityRule
    metadata:
      name: app-security
      namespace: production
    
  3. Используйте правила на уровне кластера для глобальных политик:

    # Глобальная базовая безопасность
    apiVersion: neuvector.com/v1
    kind: NvClusterSecurityRule
    metadata:
      name: baseline-security
    

Соглашения по именованию

  • Используйте описательные имена правил: web-to-database-access
  • Следуйте согласованному именованию групп: nv.service.namespace
  • Избегайте зарезервированных префиксов: fed., nv.ip., host:, workload:

Валидация политик

# Шаблон валидного имени группы
name: "^[a-zA-Z0-9]+[.:a-zA-Z0-9_-]*$"

# Формат сервиса для обнаруженных групп
name: "nv.service-name.namespace"

Стратегия миграции

  1. Экспорт из стейджинга:

    kubectl get nvsecurityrule -o yaml > staging-policies.yaml
    
  2. Модификация для продакшена:

    # Изменить режим политики
    target:
      policymode: Protect  # было: Monitor
    
  3. Применение к продакшену:

    kubectl apply -f production-policies.yaml
    

Интеграция RBAC

CRD NeuVector интегрируются с Kubernetes RBAC:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: neuvector-policy-manager
rules:
- apiGroups: ["neuvector.com"]
  resources: ["nvsecurityrules", "nvclustersecurityrules"]
  verbs: ["get", "list", "create", "update", "delete"]

RBAC с областью действия пространства имен

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: dev-team-policies
  namespace: development
subjects:
- kind: User
  name: dev-team-lead
roleRef:
  kind: ClusterRole
  name: neuvector-policy-manager

Устранение неполадок

Распространенные проблемы

1. Отклонение импорта политики:

Error: group criteria mismatch

Решение: Убедитесь, что критерии группы совпадают между источником и назначением.

2. Нарушения границ пространства имен:

Error: cross-namespace policy creation denied

Решение: Используйте NvClusterSecurityRule для политик между пространствами имен.

3. Недопустимые имена групп:

Error: invalid group name format

Решение: Следуйте соглашению по именованию: ^[a-zA-Z0-9]+[.:a-zA-Z0-9_-]*$

Команды валидации

# Валидация синтаксиса CRD
kubectl apply --dry-run=client -f policy.yaml

# Проверка статуса политики
kubectl get nvsecurityrule -n production

# Просмотр деталей политики
kubectl describe nvsecurityrule web-app-security -n production

# Проверка событий на ошибки
kubectl get events -n neuvector | grep NeuVector

Отладка применения политик

  1. Проверка логов контроллера:

    kubectl logs -n neuvector deployment/neuvector-controller-pod
    
  2. Проверка создания группы:

    # В консоли NeuVector: Policy -> Groups
    
  3. Проверка режима политики:

    # Убедитесь, что целевая группа находится в правильном режиме (Discover/Monitor/Protect)
    

Соображения производительности

  • Ограничивайте количество одновременных применений CRD
  • Используйте пакетные операции для множественных обновлений политик
  • Мониторьте использование ресурсов контроллером во время обновлений политик
  • Реализуйте постепенное развертывание для больших изменений политик

Примеры интеграции

Рабочий процесс GitOps

# .github/workflows/security-policies.yml
name: Deploy Security Policies
on:
  push:
    paths: ['policies/**']
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Deploy policies
        run: kubectl apply -f policies/

Интеграция CI/CD конвейера

#!/bin/bash
# validate-policies.sh
set -e

echo "Валидация политик NeuVector..."
for policy in policies/*.yaml; do
  kubectl apply --dry-run=client -f "$policy"
done

echo "Применение политик к стейджингу..."
kubectl apply -f policies/ --namespace=staging

echo "Запуск тестов безопасности..."
./run-security-tests.sh

echo "Продвижение в продакшен..."
kubectl apply -f policies/ --namespace=production

Дополнительные ресурсы