OperationPolicy

Scope: Cluster
Version: v1alpha1

Описывает операционную политику для кластера.

Каждый ресурс OperationPolicy описывает правила для объектов в кластере.

  • spec
    объект

    Обязательный параметр

    • spec.enforcementAction
      строка

      Действие, которое будет выполнено по результатам проверки ограничений:

      • Deny — запрет;
      • Dryrun — отсутствие действия. Применяется при отладке. Информацию о событии можно посмотреть в Grafana в Dashboard Security/Admission policy engine;
      • Warn — аналогично Dryrun, но дополнительно к информации о событии будет выведена информация о том, из-за какого ограничения (constraint) был бы запрет действия, если бы вместо Warn использовался Deny.

      По умолчанию: "Deny"

      Допустимые значения: Warn, Deny, Dryrun

    • spec.match
      объект

      Обязательный параметр

      • spec.match.labelSelector
        объект

        Указывает селектор лейблов для фильтрации подов.

        Больше информации в документации.

        • spec.match.labelSelector.matchExpressions
          массив объектов

          Список выражений лейблов для подов.

          Пример:

          matchExpressions:
          - key: tier
            operator: In
            values:
            - production
            - staging
          
          • spec.match.labelSelector.matchExpressions.key
            строка

            Обязательный параметр

          • spec.match.labelSelector.matchExpressions.operator
            строка

            Обязательный параметр

            Допустимые значения: In, NotIn, Exists, DoesNotExist

          • spec.match.labelSelector.matchExpressions.values
            массив строк
        • spec.match.labelSelector.matchLabels
          объект

          Список лейблов, которые должен иметь под.

          Пример:

          matchLabels:
            foo: bar
            baz: who
          
      • spec.match.namespaceSelector
        объект

        Обязательный параметр

        Указывает селектор пространства имен для фильтрации объектов.

        • spec.match.namespaceSelector.excludeNames
          массив строк

          Включить все пространства имен, кроме определенного набора.

        • spec.match.namespaceSelector.labelSelector
          объект

          Указывает селектор меток для фильтрации пространств имен.

          Больше информации в документации.

          • spec.match.namespaceSelector.labelSelector.matchExpressions
            массив объектов

            Список выражений лейблов для пространств имен.

            Пример:

            matchExpressions:
            - key: tier
              operator: In
              values:
              - production
              - staging
            
            • spec.match.namespaceSelector.labelSelector.matchExpressions.key
              строка

              Обязательный параметр

            • spec.match.namespaceSelector.labelSelector.matchExpressions.operator
              строка

              Обязательный параметр

              Допустимые значения: In, NotIn, Exists, DoesNotExist

            • spec.match.namespaceSelector.labelSelector.matchExpressions.values
              массив строк
          • spec.match.namespaceSelector.labelSelector.matchLabels
            объект

            Список лейблов, которые должно иметь пространство имен.

            Пример:

            matchLabels:
              foo: bar
              baz: who
            
        • spec.match.namespaceSelector.matchNames
          массив строк

          Включать только определенный набор пространств имен.

    • spec.policies
      объект

      Обязательный параметр

      • spec.policies.allowedRepos
        массив строк

        Список префиксов, которые может иметь образ контейнера.

        • Элемент массива
          строка

          Пример:

          registry.deckhouse.io
          
      • spec.policies.checkContainerDuplicates
        булевый

        Проверка имен контейнеров и переменных env на наличие дубликатов.

      • spec.policies.checkHostNetworkDNSPolicy
        булевый

        Проверка, что dnsPolicy ClusterFirstWithHostNet установлена для подов с hostNetwork: true.

      • spec.policies.disallowedImageTags
        массив строк

        Требует, чтобы образы контейнера имели тег, отличный от указанных в списке.

        Пример:

        disallowedImageTags: latest
        
      • spec.policies.imagePullPolicy
        строка

        Требуемая политика скачивания образов для контейнеров.

        Допустимые значения: Always, IfNotPresent

      • spec.policies.ingressClassNames
        массив строк

        Список возможных классов ингресса.

      • spec.policies.maxRevisionHistoryLimit
        целочисленный

        Максимальное значение для истории ревизий.

      • spec.policies.priorityClassNames
        массив строк

        Список возможных классов приоритета.

      • spec.policies.replicaLimits
        объект

        Проверка диапазона разрешенных реплик. Значения включаются в диапазон.

        • spec.policies.replicaLimits.maxReplicas
          целочисленный

          Максимально разрешенное количество реплик, включительно.

        • spec.policies.replicaLimits.minReplicas
          целочисленный

          Минимально разрешенное количество реплик, включительно.

      • spec.policies.requiredAnnotations
        объект

        Список аннотаций, которые должен указать объект.

        • spec.policies.requiredAnnotations.annotations
          массив объектов
          • spec.policies.requiredAnnotations.annotations.allowedRegex
            строка

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

          • spec.policies.requiredAnnotations.annotations.key
            строка

            Требуемая аннотация.

        • spec.policies.requiredAnnotations.watchKinds
          массив строк

          Список объектов Kubernetes в формате $apiGroup/$kind для просмотра аннотаций.

          • Элемент массива
            строка

            Шаблон: ^[a-z]*/[a-zA-Z]+$

            Примеры:

            apps/Deployment
            
            "/Pod"
            
            networking.k8s.io/Ingress
            
      • spec.policies.requiredLabels
        объект

        Список лейблов, которые должен указать объект.

        • spec.policies.requiredLabels.labels
          массив объектов
          • spec.policies.requiredLabels.labels.allowedRegex
            строка

            Если указано, то содержит регулярное выражение, которому должно соответствовать значение лейбла. Значение должно содержать хотя бы одно совпадение с регулярным выражением.

          • spec.policies.requiredLabels.labels.key
            строка

            Требуемый лейбл.

        • spec.policies.requiredLabels.watchKinds
          массив строк

          Список объектов Kubernetes в формате $apiGroup/$kind для просмотра меток.

          • Элемент массива
            строка

            Шаблон: ^[a-z]*/[a-zA-Z]+$

            Примеры:

            apps/Deployment
            
            "/Pod"
            
            networking.k8s.io/Ingress
            
      • spec.policies.requiredProbes
        массив строк

        Список проб, которые необходимы (например, readinessProbe и livenessProbe).

        Пример:

        requiredProbes:
        - readinessProbe
        - livenessProbe
        
        • Элемент массива
          строка

          Допустимые значения: livenessProbe, readinessProbe, startupProbe

      • spec.policies.requiredResources
        объект

        Набор ресурсов, который требуют контейнеры.

        • spec.policies.requiredResources.limits
          массив строк

          Список ограничений, которые должны соблюдаться (процессор, память или оба).

          По умолчанию: ["memory"]

          • Элемент массива
            строка

            Допустимые значения: cpu, memory

        • spec.policies.requiredResources.requests
          массив строк

          Список запросов, которые должны быть выполнены (вычислительная мощность, память или и то и другое).

          По умолчанию: ["cpu","memory"]

          • Элемент массива
            строка

            Допустимые значения: cpu, memory

      • spec.policies.storageClassNames
        массив строк

        Список возможных классов хранилища.

SecurityPolicy

Scope: Cluster
Version: v1alpha1

Описывает политику безопасности для кластера.

Каждый custom resource SecurityPolicy задает правила для объектов в кластере.

  • spec
    объект

    Обязательный параметр

    • spec.enforcementAction
      строка

      Реакция на нарушение политики:

      • Deny — запрет;
      • Dryrun — событие без действия. Применяется при отладке. Информацию о событии можно посмотреть в Grafana в Dashboard Security/Admission policy engine;
      • Warn — событие без действия, аналогичное Dryrun. Содержит информацию об ограничении (constraint), которое вызвало бы запрет, если бы было использовано действие Deny.

      По умолчанию: "Deny"

      Допустимые значения: Warn, Deny, Dryrun

    • spec.match
      объект

      Обязательный параметр

      Условия фильтрации контейнеров. С помощью условий можно выбрать группу подов или контейнеров, к которой будут применены политики.

      • spec.match.labelSelector
        объект

        Указывает селектор лейблов для фильтрации подов.

        Подробнее в документации Kubernetes.

        • spec.match.labelSelector.matchExpressions
          массив объектов

          Список условий лейблов для подов.

          Пример:

          matchExpressions:
          - key: tier
            operator: In
            values:
            - production
            - staging
          
          • spec.match.labelSelector.matchExpressions.key
            строка

            Обязательный параметр

          • spec.match.labelSelector.matchExpressions.operator
            строка

            Обязательный параметр

            Допустимые значения: In, NotIn, Exists, DoesNotExist

          • spec.match.labelSelector.matchExpressions.values
            массив строк
        • spec.match.labelSelector.matchLabels
          объект

          Список лейблов, которые должен иметь под.

          Пример:

          matchLabels:
            foo: bar
            baz: who
          
      • spec.match.namespaceSelector
        объект

        Обязательный параметр

        Указывает селектор пространства имен для фильтрации объектов.

        • spec.match.namespaceSelector.excludeNames
          массив строк

          Выбирает все пространства имен, которых нет в списке. Допускается использование шаблонов (glob patterns).

        • spec.match.namespaceSelector.labelSelector
          объект

          Указывает селектор меток для фильтрации пространств имен.

          Подробнее в документации Kubernetes.

          • spec.match.namespaceSelector.labelSelector.matchExpressions
            массив объектов

            Список условий лейблов для пространств имен.

            Пример:

            matchExpressions:
            - key: tier
              operator: In
              values:
              - production
              - staging
            
            • spec.match.namespaceSelector.labelSelector.matchExpressions.key
              строка

              Обязательный параметр

            • spec.match.namespaceSelector.labelSelector.matchExpressions.operator
              строка

              Обязательный параметр

              Допустимые значения: In, NotIn, Exists, DoesNotExist

            • spec.match.namespaceSelector.labelSelector.matchExpressions.values
              массив строк
          • spec.match.namespaceSelector.labelSelector.matchLabels
            объект

            Список лейблов, которые должно иметь пространство имен.

            Пример:

            matchLabels:
              foo: bar
              baz: who
            
        • spec.match.namespaceSelector.matchNames
          массив строк

          Выбирает пространства имен, соответствующие списку. Допускается использование шаблонов (glob patterns).

    • spec.policies
      объект

      Обязательный параметр

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

      • spec.policies.allowHostIPC
        булевый

        Разрешает контейнерам доступ к IPC-пространству имен хоста.

      • spec.policies.allowHostNetwork
        булевый

        Разрешает контейнерам доступ к Network-пространству имен хоста.

      • spec.policies.allowHostPID
        булевый

        Разрешает контейнерам доступ к PID-пространству имен хоста.

      • spec.policies.allowPrivilegeEscalation
        булевый

        Разрешает процессам в контейнерах запрашивать более широкий список привилегий, чем у родительского процесса.

      • spec.policies.allowPrivileged
        булевый

        Разрешает запускать контейнеры в привилегированном режиме.

      • spec.policies.allowedAppArmor
        массив строк

        Список разрешенных для контейнеров профилей AppArmor.

        Примеры:

        allowedAppArmor: runtime/default
        
        allowedAppArmor: unconfined
        
        • Элемент массива
          строка

          Профиль AppArmor.

      • spec.policies.allowedCapabilities
        массив строк

        Список привилегий (linux capabilities), доступных контейнерам.

        Используйте ALL, чтобы разрешить все привилегии.

        Примеры:

        allowedCapabilities: SETGID
        
        allowedCapabilities: SETUID
        
        allowedCapabilities: NET_BIND_SERVICE
        
        • Элемент массива
          строка

          Привилегия (linux capability).

          Допустимые значения: ALL, SETPCAP, SYS_MODULE, SYS_RAWIO, SYS_PACCT, SYS_ADMIN, SYS_NICE, SYS_RESOURCE, SYS_TIME, SYS_TTY_CONFIG, MKNOD, AUDIT_WRITE, AUDIT_CONTROL, MAC_OVERRIDE, MAC_ADMIN, NET_ADMIN, SYSLOG, CHOWN, NET_RAW, DAC_OVERRIDE, FOWNER, DAC_READ_SEARCH, FSETID, KILL, SETGID, SETUID, LINUX_IMMUTABLE, NET_BIND_SERVICE, NET_BROADCAST, IPC_LOCK, IPC_OWNER, SYS_CHROOT, SYS_PTRACE, SYS_BOOT, LEASE, SETFCAP, WAKE_ALARM, BLOCK_SUSPEND

      • spec.policies.allowedClusterRoles
        массив строк

        Список разрешенных ролей кластера для связывания с пользователями.

      • spec.policies.allowedFlexVolumes
        массив объектов

        Список разрешенных драйверов Flex Volumes.

        • spec.policies.allowedFlexVolumes.driver
          строка

          Название драйвера.

      • spec.policies.allowedHostPaths
        массив объектов

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

        Пример:

        allowedHostPaths:
          pathPrefix: "/dev"
          readOnly: true
        
        • spec.policies.allowedHostPaths.pathPrefix
          строка

          Обязательный параметр

          Префикс определяет, какие директории хоста доступны для монтирования в контейнерах.

          Использование маски * недопустимо. Завершающие слеши отбрасываются при сопоставлении пути и префикса.

          Например, префикс /foo разрешает пути /foo, /foo/ и /foo/bar. Напротив, пути /food или /etc/foo будут недоступны.

        • spec.policies.allowedHostPaths.readOnly
          булевый

          Проверяет, что все volumeMount, попадающие в префикс (с параметром pathPrefix), монтируются только на чтение (readOnly: true).

          По умолчанию: false

      • spec.policies.allowedHostPorts
        массив объектов

        Cписок диапазонов портов хоста (hostPort), разрешенных для использования в контейнерах.

        • spec.policies.allowedHostPorts.max
          целочисленный

          Максимальное значение диапазона.

        • spec.policies.allowedHostPorts.min
          целочисленный

          Минимальное значение диапазона.

      • spec.policies.allowedProcMount
        строка

        Разрешает монтирование /proc для контейнеров.

        Допустимые значения: Default, Unmasked

        Пример:

        allowedProcMount: Unmasked.
        
      • spec.policies.allowedUnsafeSysctls
        массив строк

        Список разрешенных небезопасных ключей sysctl.

        Используйте *, чтобы разрешить все ключи.

        Примеры:

        allowedUnsafeSysctls: kernel.msg*
        
        allowedUnsafeSysctls: net.core.somaxconn
        
      • spec.policies.allowedVolumes
        массив строк

        Список разрешенных volume-плагинов.

        Примеры:

        allowedVolumes: hostPath
        
        allowedVolumes: persistentVolumeClaim
        
        • Элемент массива
          строка

          Допустимые значения: *, none, awsElasticBlockStore, azureDisk, azureFile, cephFS, cinder, configMap, csi, downwardAPI, emptyDir, fc, flexVolume, flocker, gcePersistentDisk, gitRepo, glusterfs, hostPath, iscsi, nfs, persistentVolumeClaim, photonPersistentDisk, portworxVolume, projected, quobyte, rbd, scaleIO, secret, storageos, vsphereVolume

      • spec.policies.automountServiceAccountToken
        булевый

        Разрешает запускать поды с автоматическим монтированием токена сервисного аккаунта.

      • spec.policies.forbiddenSysctls
        массив строк

        Список запрещенных ключей sysctl.

        Имеет преимущество перед параметром allowedUnsafeSysctls.

        Примеры:

        forbiddenSysctls: kernel.msg*
        
        forbiddenSysctls: net.core.somaxconn
        
      • spec.policies.fsGroup
        объект

        Задает группы, разрешенные для использования как fsGroup в параметре securityContext.

        • spec.policies.fsGroup.ranges
          массив объектов

          Список диапазонов идентификаторов для fsGroup, разрешенных в режиме MustRunAs.

          • spec.policies.fsGroup.ranges.max
            целочисленный

            Максимальное значение диапазона.

          • spec.policies.fsGroup.ranges.min
            целочисленный

            Минимальное значение диапазона.

        • spec.policies.fsGroup.rule
          строка

          Обязательный параметр

          Правило определения разрешенных значений fsGroup.

          Допустимые значения: MustRunAs, MayRunAs, RunAsAny

      • spec.policies.readOnlyRootFilesystem
        булевый

        Если установлен в true, разрешает запуск только тех подов, у всех контейнеров которых корневая файловая система доступна только для чтения (в поле securityContext установлено readOnlyRootFilesystem: true). Подробнее в документации Kubernetes.

      • spec.policies.requiredDropCapabilities
        массив строк

        Список привилегий (linux capabilities), обязательных к исключению.

        Используйте ALL, чтобы исключить все привилегии.

        Примеры:

        requiredDropCapabilities: SETGID
        
        requiredDropCapabilities: SETUID
        
        requiredDropCapabilities: NET_BIND_SERVICE
        
        • Элемент массива
          строка

          Привилегия (linux capability).

          Допустимые значения: ALL, SETPCAP, SYS_MODULE, SYS_RAWIO, SYS_PACCT, SYS_ADMIN, SYS_NICE, SYS_RESOURCE, SYS_TIME, SYS_TTY_CONFIG, MKNOD, AUDIT_WRITE, AUDIT_CONTROL, MAC_OVERRIDE, MAC_ADMIN, NET_ADMIN, SYSLOG, CHOWN, NET_RAW, DAC_OVERRIDE, FOWNER, DAC_READ_SEARCH, FSETID, KILL, SETGID, SETUID, LINUX_IMMUTABLE, NET_BIND_SERVICE, NET_BROADCAST, IPC_LOCK, IPC_OWNER, SYS_CHROOT, SYS_PTRACE, SYS_BOOT, LEASE, SETFCAP, WAKE_ALARM, BLOCK_SUSPEND

      • spec.policies.runAsGroup
        объект

        Задает основные группы (runAsGroup), разрешенные для использования в параметре securityContext.

        • spec.policies.runAsGroup.ranges
          массив объектов

          Список диапазонов идентификаторов групп для runAsGroup, разрешенных в режиме MustRunAs.

          • spec.policies.runAsGroup.ranges.max
            целочисленный

            Максимальное значение диапазона.

          • spec.policies.runAsGroup.ranges.min
            целочисленный

            Минимальное значение диапазона.

        • spec.policies.runAsGroup.rule
          строка

          Обязательный параметр

          Правило определения разрешенных значений runAsGroup.

          Допустимые значения: MustRunAs, MayRunAs, RunAsAny

      • spec.policies.runAsUser
        объект

        Задает разрешенные в параметре securityContext идентификаторы пользователей (runAsUser).

        • spec.policies.runAsUser.ranges
          массив объектов

          Список диапазонов идентификаторов пользователей для runAsUser, разрешенных в режиме MustRunAs.

          • spec.policies.runAsUser.ranges.max
            целочисленный

            Максимальное значение диапазона.

          • spec.policies.runAsUser.ranges.min
            целочисленный

            Минимальное значение диапазона.

        • spec.policies.runAsUser.rule
          строка

          Обязательный параметр

          Правило определения разрешенных значений runAsUser.

          Допустимые значения: MustRunAs, MustRunAsNonRoot, RunAsAny

      • spec.policies.seLinux
        массив объектов

        Определяет разрешенные для использования в параметре secutiryContext значения SELinux-меток.

        • spec.policies.seLinux.level
          строка

          Значения для SELinux level-меток.

        • spec.policies.seLinux.role
          строка

          Значения для SELinux role-меток.

        • spec.policies.seLinux.type
          строка

          Значения для SELinux type-меток.

        • spec.policies.seLinux.user
          строка

          Значения для SELinux user-меток.

      • spec.policies.seccompProfiles
        объект

        Задает список разрешенных seccomp-профилей для аннотаций подов и контейнеров.

        • spec.policies.seccompProfiles.allowedLocalhostFiles
          массив строк

          Определяет локальные профили seccomp (в формате JSON), разрешенные после указания Localhost в параметре allowedProfiles.

          Пустой список запрещает использование локальных профилей.

        • spec.policies.seccompProfiles.allowedProfiles
          массив строк

          Список разрешенных seccomp-профилей для подов и контейнеров.

      • spec.policies.supplementalGroups
        объект

        Задает дополнительные группы (supplementalGroups), разрешенные для использования в параметре securityContext.

        • spec.policies.supplementalGroups.ranges
          массив объектов

          Список диапазонов идентификаторов групп для supplementalGroups, разрешенных в режиме MustRunAs.

          • spec.policies.supplementalGroups.ranges.max
            целочисленный

            Максимальное значение диапазона.

          • spec.policies.supplementalGroups.ranges.min
            целочисленный

            Минимальное значение диапазона.

        • spec.policies.supplementalGroups.rule
          строка

          Обязательный параметр

          Правило определения разрешенных значений supplementalGroups.

          Допустимые значения: MustRunAs, MayRunAs, RunAsAny

      • spec.policies.verifyImageSignatures
        массив объектов

        Список политик проверки подписи образов контейнеров.

        Образы контейнеров должны быть подписаны с помощью инструмента Cosign.

        Доступно только в enterprise edition.

        Пример:

        verifyImageSignatures:
        - reference: docker.io/myrepo/*
          publicKeys:
          - |-
            -----BEGIN PUBLIC KEY-----
            .....
            -----END PUBLIC KEY-----
        - reference: company.registry.com/*
          dockerCfg: "<Base64_dockerCfg>"
          publicKeys:
          - |-
            -----BEGIN PUBLIC KEY-----
            .....
            -----END PUBLIC KEY-----
        
        • spec.policies.verifyImageSignatures.ca
          строка

          Пользовательский certificate authority для подключения к хранилищу образов контейнеров.

        • spec.policies.verifyImageSignatures.dockerCfg
          строка

          Строка в формате Base64 с данными аутентификации в хранилище образов контейнеров.

          Не указывается, если образы контейнеров доступны анонимно.

        • spec.policies.verifyImageSignatures.publicKeys
          массив строк

          Обязательный параметр

          Список публичных ключей Cosign.

        • spec.policies.verifyImageSignatures.reference
          строка

          Обязательный параметр

          Адрес или шаблон адресов образов контейнеров.

          Если содержит символ *, то считается шаблоном адресов образов контейнеров. Символ * может быть только один и только в конце. Например, для значения company.registry.com/* с указанными ключами и параметрами доступа будут проверяться любые образы контейнеров из хранилища company.registry.com.

          Если не содержит символа *, то считается абсолютным адресом образа контейнера. Например, для значения company.registry.com/nginx с указанными ключами и параметрами доступа будет проверяться только образ nginx из хранилища company.registry.com.

          Шаблон: ^[a-z0-9\.\-:@\/]*\*?$

          Примеры:

          reference: docker.io/myuser/*
          
          reference: "*"