Стадия жизненного цикла модуляExperimental

У модуля есть требования для установки

Примеры использования политик безопасности

  1. Пример сетевой политики безопасности для веб-приложения, разрешающей входящие HTTP и HTTPS запросы, а также исходящий в postgresSQL:

    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
  2. Пример глобальной политики, запрещающей SSH-доступ ко всем контейнерам в кластере.

    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
  3. Пример политики, блокирующей развёртывание в системные пространства имён:

    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: "Блокировка развертываний в системные пространства имен"
  4. Пример переиспользуемой группы, на данную группу можно будет ссылаться в политиках через target:

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

Маппинг групп Dex в роли NeuVector

Пример ModuleConfig, в котором пользователям выдаются роли NeuVector в зависимости от их групп в Dex:

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: neuvector
spec:
  enabled: true
  version: 1
  settings:
    auth:
      allowedUserGroups:
        - neuvector-admins
        - developers
      defaultRole: reader
      groupRoleMapping:
        - group: neuvector-admins
          globalRole: admin
        - group: developers
          globalRole: none
          roleDomains:
            admin:
              - dev-team-a
              - dev-team-b
            reader:
              - staging

Как NeuVector это интерпретирует:

  • Пользователи из группы neuvector-admins получают глобальную роль admin и могут управлять всем кластером.
  • Пользователи из группы developers глобальной роли не получают, но становятся admin в namespace’ах dev-team-a и dev-team-b, и reader в staging.
  • Любой пользователь из allowedUserGroups, не подошедший ни под одно правило, получает роль из auth.defaultRole (в примере — reader).
  • auth.allowedUserGroups проверяется Dex’ом до того, как пользователь попадёт в NeuVector — те же группы должны быть указаны в соответствующем DexProvider.

Запуск NeuVector Scanner отдельно

См. раздел FAQ Как сделать разовое сканирование образа с помощью NeuVector Scanner.

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