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.matchExpressions.keyстрока
- spec.match.labelSelector.matchLabelsобъект
Список лейблов, которые должен иметь под.
Пример:
matchLabels: foo: bar baz: who
- spec.match.labelSelector.matchExpressionsмассив объектов
- 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.matchExpressions.keyстрока
- spec.match.namespaceSelector.labelSelector.matchLabelsобъект
Список лейблов, которые должно иметь пространство имен.
Пример:
matchLabels: foo: bar baz: who
- spec.match.namespaceSelector.labelSelector.matchExpressionsмассив объектов
- spec.match.namespaceSelector.matchNamesмассив строк
Включать только определенный набор пространств имен.
- spec.match.namespaceSelector.excludeNamesмассив строк
- spec.match.labelSelectorобъект
- 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.maxRevisionHistoryLimitцелочисленный
Максимальное значение для истории ревизий.
- spec.policies.priorityClassNamesмассив строк
List of allowed priority class names.
- spec.policies.replicaLimitsобъект
Проверка диапазона разрешенных реплик. Значения включаются в диапазон.
- spec.policies.replicaLimits.maxReplicasцелочисленный
Максимально разрешенное количество реплик, включительно.
- spec.policies.replicaLimits.minReplicasцелочисленный
Минимально разрешенное количество реплик, включительно.
- spec.policies.replicaLimits.maxReplicasцелочисленный
- spec.policies.requiredAnnotationsобъект
Список аннотаций, которые должен указать объект.
- spec.policies.requiredAnnotations.annotationsмассив объектов
- spec.policies.requiredAnnotations.annotations.allowedRegexстрока
Если указано, то содержит регулярное выражение, которому должно соответствовать значение аннотации. Значение должно содержать хотя бы одно совпадение с регулярным выражением.
- spec.policies.requiredAnnotations.annotations.keyстрока
Требуемая аннотация.
- spec.policies.requiredAnnotations.annotations.allowedRegexстрока
- spec.policies.requiredAnnotations.watchKindsмассив строк
Список объектов Kubernetes в формате
$apiGroup/$kind
для просмотра аннотаций.- Элемент массивастрока
Шаблон:
^[a-z]*/[a-zA-Z]+$
Примеры:
apps/Deployment
"/Pod"
networking.k8s.io/Ingress
- Элемент массивастрока
- spec.policies.requiredAnnotations.annotationsмассив объектов
- spec.policies.requiredLabelsобъект
Список лейблов, которые должен указать объект.
- spec.policies.requiredLabels.labelsмассив объектов
- spec.policies.requiredLabels.labels.allowedRegexстрока
Если указано, то содержит регулярное выражение, которому должно соответствовать значение лейбла. Значение должно содержать хотя бы одно совпадение с регулярным выражением.
- spec.policies.requiredLabels.labels.keyстрока
Требуемый лейбл.
- spec.policies.requiredLabels.labels.allowedRegexстрока
- spec.policies.requiredLabels.watchKindsмассив строк
Список объектов Kubernetes в формате
$apiGroup/$kind
для просмотра меток.- Элемент массивастрока
Шаблон:
^[a-z]*/[a-zA-Z]+$
Примеры:
apps/Deployment
"/Pod"
networking.k8s.io/Ingress
- Элемент массивастрока
- spec.policies.requiredLabels.labelsмассив объектов
- 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.requiredResources.limitsмассив строк
- spec.policies.allowedReposмассив строк
- spec.enforcementActionстрока
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.matchExpressions.keyстрока
- spec.match.labelSelector.matchLabelsобъект
Список лейблов, которые должен иметь под.
Пример:
matchLabels: foo: bar baz: who
- spec.match.labelSelector.matchExpressionsмассив объектов
- 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.matchExpressions.keyстрока
- spec.match.namespaceSelector.labelSelector.matchLabelsобъект
Список лейблов, которые должно иметь пространство имен.
Пример:
matchLabels: foo: bar baz: who
- spec.match.namespaceSelector.labelSelector.matchExpressionsмассив объектов
- spec.match.namespaceSelector.matchNamesмассив строк
Выбирает пространства имен, соответствующие списку. Допускается использование шаблонов (glob patterns).
- spec.match.namespaceSelector.excludeNamesмассив строк
- spec.match.labelSelectorобъект
- 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.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.allowedHostPaths.pathPrefixстрока
- spec.policies.allowedHostPortsмассив объектов
Cписок диапазонов портов хоста (
hostPort
), разрешенных для использования в контейнерах.- spec.policies.allowedHostPorts.maxцелочисленный
Максимальное значение диапазона.
- spec.policies.allowedHostPorts.minцелочисленный
Минимальное значение диапазона.
- spec.policies.allowedHostPorts.maxцелочисленный
- 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.ranges.maxцелочисленный
- spec.policies.fsGroup.ruleстрока
Обязательный параметр
Правило определения разрешенных значений
fsGroup
.Допустимые значения:
MustRunAs
,MayRunAs
,RunAsAny
- spec.policies.fsGroup.rangesмассив объектов
- 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.ranges.maxцелочисленный
- spec.policies.runAsGroup.ruleстрока
Обязательный параметр
Правило определения разрешенных значений
runAsGroup
.Допустимые значения:
MustRunAs
,MayRunAs
,RunAsAny
- spec.policies.runAsGroup.rangesмассив объектов
- spec.policies.runAsUserобъект
Задает разрешенные в параметре
securityContext
идентификаторы пользователей (runAsUser
).- spec.policies.runAsUser.rangesмассив объектов
Список диапазонов идентификаторов пользователей для
runAsUser
, разрешенных в режимеMustRunAs
.- spec.policies.runAsUser.ranges.maxцелочисленный
Максимальное значение диапазона.
- spec.policies.runAsUser.ranges.minцелочисленный
Минимальное значение диапазона.
- spec.policies.runAsUser.ranges.maxцелочисленный
- spec.policies.runAsUser.ruleстрока
Обязательный параметр
Правило определения разрешенных значений
runAsUser
.Допустимые значения:
MustRunAs
,MustRunAsNonRoot
,RunAsAny
- spec.policies.runAsUser.rangesмассив объектов
- 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.seLinux.levelстрока
- spec.policies.seccompProfilesобъект
Задает список разрешенных seccomp-профилей для аннотаций подов и контейнеров.
- spec.policies.seccompProfiles.allowedLocalhostFilesмассив строк
Определяет локальные профили seccomp (в формате JSON), разрешенные после указания
Localhost
в параметреallowedProfiles
.Пустой список запрещает использование локальных профилей.
- spec.policies.seccompProfiles.allowedProfilesмассив строк
Список разрешенных seccomp-профилей для подов и контейнеров.
- spec.policies.seccompProfiles.allowedLocalhostFilesмассив строк
- spec.policies.supplementalGroupsобъект
Задает дополнительные группы (
supplementalGroups
), разрешенные для использования в параметреsecurityContext
.- spec.policies.supplementalGroups.rangesмассив объектов
Список диапазонов идентификаторов групп для
supplementalGroups
, разрешенных в режимеMustRunAs
.- spec.policies.supplementalGroups.ranges.maxцелочисленный
Максимальное значение диапазона.
- spec.policies.supplementalGroups.ranges.minцелочисленный
Минимальное значение диапазона.
- spec.policies.supplementalGroups.ranges.maxцелочисленный
- spec.policies.supplementalGroups.ruleстрока
Обязательный параметр
Правило определения разрешенных значений
supplementalGroups
.Допустимые значения:
MustRunAs
,MayRunAs
,RunAsAny
- spec.policies.supplementalGroups.rangesмассив объектов
- spec.policies.allowHostIPCбулевый
- spec.enforcementActionстрока