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
. - массив строк
Требует, чтобы образы контейнера имели тег, отличный от указанных в списке.
Пример:
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
).Примеры:
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
- spec.policies.storageClassNames
Список возможных классов хранилища.
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