OperationPolicy

Scope: Cluster
Version: v1alpha1

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

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

  • specобъект

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

    • spec.enforcementActionстрока

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

      • Deny — Запрет.
      • Dryrun — Отсутствие действия. Применяется при отладке. Информацию о событии можно посмотреть в Grafana или в консоли с помощью kubectl.
      • Warn — Аналогично Dryrun, но дополнительно к информации о событии будет выведена информация о том, из-за какого ограничения (constraint) был бы запрет действия, если бы вместо Warn использовался Deny.

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

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

    • spec.matchобъект

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

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

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

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

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

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

          Пример:

          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объект

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

          Пример:

          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 установлена для Pod’ов с hostNetwork: true.

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

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

        Пример:

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

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

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

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

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

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

        List of allowed priority class names.

      • 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).

        Пример:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

SecurityPolicy

Scope: Cluster
Version: v1alpha1

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

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

  • specобъект

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

    • spec.enforcementActionстрока

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

      • Deny — Запрет.
      • Dryrun — Отсутствие действия. Применяется при отладке. Информацию о событии можно посмотреть в Grafana или в консоли с помощью kubectl.
      • Warn — Аналогично Dryrun, но дополнительно к информации о событии будет выведена информация о том, из-за какого ограничения (constraint) был бы запрет действия, если бы вместо Warn использовался Deny.

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

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

    • spec.matchобъект

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

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

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

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

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

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

          Пример:

          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объект

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

          Пример:

          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.allowHostIPCбулевый

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

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

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

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

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

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

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

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

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

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

        Список допустимых к использованию контейнерами профилей AppArmor.

        Пример:

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

          Профиль AppArmor.

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

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

        Используйте ALL для разрешения всех привилегий.

        Пример:

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

          Allowed linux capabilities.

          Допустимые значения: 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.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массив объектов

        Определяет список диапазонов портов хоста, доступных для использования в качестве hostPort.

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

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

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

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

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

        Определяет допустимые значения монтирования /proc для контейнера.

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

        Пример:

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

        Список небезопасных ключей sysctl, доступных к использованию.

        Используйте * для разрешения всех ключей.

        Пример:

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

        Список volume-плагинов, доступных к использованию.

        Пример:

        allowedVolumes:
        - hostPath
        - 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.forbiddenSysctlsмассив строк

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

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

        Пример:

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

        Определяет допустимые к использованию значения fsGroup.

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

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

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

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

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

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

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

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

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

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

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

        Определяет необходимость запуска контейнеров с корневой файловой системой, доступной только для чтения

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

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

        Используйте ALL для исключения всех привилегий.

        Пример:

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

          Linux capabilities to drop from containers’ specs.

          Допустимые значения: 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.

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

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

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

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

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

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

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

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

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

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

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

        Определяет допустимые к использованию значения runAsUser.

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

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

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

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

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

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

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

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

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

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

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

        Определяет допустимые к использованию значения 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.

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

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

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

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

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

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

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

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

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

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