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

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

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

        • 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.maxRevisionHistoryLimitцелочисленный

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

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

        List of allowed priority class names.

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

        Примеры:

        requiredProbes: livenessProbe
        
        requiredProbes: 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

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

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

  • specобъект

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

    • spec.enforcementActionстрока

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

      • Deny — запрет;
      • Dryrun — событие без действия. Применяется при отладке. Информацию о событии можно посмотреть в Grafana или консоли с помощью kubectl;
      • 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