OperationPolicy
Scope: Cluster
Version: v1alpha1
Описывает операционную политику для кластера.
Каждый ресурс OperationPolicy описывает правила для объектов в кластере.
- объектspec
Обязательный параметр
- строкаspec.enforcementAction
Действие, которое будет выполнено по результатам проверки ограничений:
Deny— запрет;Dryrun— отсутствие действия. Применяется при отладке. Информацию о событии можно посмотреть в Grafana в DashboardSecurity/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. - массив строк
Требует, чтобы образы контейнера имели тег, отличный от указанных в списке.
Пример:
disallowedImageTags: latest - массив объектовspec.policies.disallowedTolerations
Запрещает создание подов с tolerations из указанного списка.
Больше информации в документации Kubernetes.
Список шаблонов toleration (partial match по указанным полям: key/operator/value/effect).
- строкаspec.policies.disallowedTolerations.effect
Допустимые значения:
NoSchedule,PreferNoSchedule,NoExecute - строкаspec.policies.disallowedTolerations.key
- строкаspec.policies.disallowedTolerations.operator
Допустимые значения:
Exists,Equal - строкаspec.policies.disallowedTolerations.value
- строка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
Список ограничений по выделяемым ресурсам, которые должны соблюдаться (по процессору, памяти или оба ограничения).
- строкаЭлемент массива
Допустимые значения:
cpu,memory
- массив строкspec.policies.requiredResources.requests
Список запросов на выделение ресурсов, которые должны быть выполнены (процессор, память или оба запроса).
- строкаЭлемент массива
Допустимые значения:
cpu,memory
- массив строкspec.policies.storageClassNames
Список возможных классов хранилища.
SecurityPolicy
Scope: Cluster
Version: v1alpha1
Описывает политику безопасности для кластера.
Каждый custom resource SecurityPolicy задает правила для объектов в кластере.
- объектspec
Обязательный параметр
- строкаspec.enforcementAction
Реакция на нарушение политики:
Deny— запрет;Dryrun— событие без действия. Применяется при отладке. Информацию о событии можно посмотреть в Grafana в DashboardSecurity/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
Разрешает процессам в контейнерах запрашивать более широкий список привилегий, чем у родительского процесса.
По умолчанию (если значение не указано) —
false. Это означает, что при отсутствии данного поля или его явного указания, контейнеру будет отказано в повышении привилегий. Если вы хотите разрешить повышение привилегий, задайте для данного параметра значениеtrue. - булевыйspec.policies.allowPrivileged
Разрешает запускать контейнеры в привилегированном режиме.
По умолчанию (если значение не указано) —
false. Это означает, что при отсутствии данного поля или его явного указания, контейнеру будет отказано в повышении привилегий. Если вы хотите разрешить повышение привилегий, задайте для данного параметра значениеtrue. - булевыйspec.policies.allowRbacWildcards
Разрешает использование wildcard (
*) в ресурсах Role и RoleBinding (namespace scope).Ресурсы ClusterRole и ClusterRoleBinding политикой SecurityPolicy не валидируются.
По умолчанию (если значение не указано) —
true. Это означает, что при отсутствии данного поля или его явного указания, использование wildcard разрешено. Если вы хотите запретить использование wildcard, задайте для данного параметра значениеfalse.По умолчанию:
true - массив строкspec.policies.allowedAppArmor
Список разрешенных для контейнеров профилей AppArmor.
Пример:
allowedAppArmor: - runtime/default - unconfined- строкаЭлемент массива
Профиль AppArmor.
- массив строкspec.policies.allowedCapabilities
Список привилегий (linux capabilities), доступных контейнерам.
Используйте
ALL, чтобы разрешить все привилегии.Пример:
allowedCapabilities: - SETGID - SETUID - 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.allowedServiceTypes
Список разрешенных типов сервисов.
Пример:
allowedServiceTypes: - LoadBalancer - ClusterIP- строкаЭлемент массива
Допустимые значения:
ClusterIP,NodePort,LoadBalancer,ExternalName
- массив строк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,ephemeral,fc,flexVolume,flocker,gcePersistentDisk,gitRepo,glusterfs,hostPath,iscsi,nfs,persistentVolumeClaim,photonPersistentDisk,portworxVolume,projected,quobyte,rbd,scaleIO,secret,storageos,vsphereVolume
- булевыйspec.policies.automountServiceAccountToken
Разрешает запускать поды с автоматическим монтированием токена сервисного аккаунта.
- булевыйspec.policies.blockWildcardDomains
Запрещает создание объектов Ingress с
*в DNS доменах. - массив строкspec.policies.forbiddenSysctls
Список запрещенных ключей sysctl.
Имеет преимущество перед параметром allowedUnsafeSysctls.
Пример:
forbiddenSysctls: - kernel.msg* - 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 - SETUID - 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-профилей для подов и контейнеров.
Поддерживаются оба формата:
- Через аннотации:
runtime/default,docker/default,nconfined,localhost/some-profile.json.localhost/*— разрешает любые локальные профили. - Через securityContext:
RuntimeDefault,Unconfined,Localhost. Для Localhost укажите разрешённые профили в параметреallowedLocalhostFiles.
Типы профилей:
Unconfined— без ограничений (небезопасно).RuntimeDefault— стандартный профиль среды выполнения (Docker, CRI-O).Localhost— пользовательский профиль на узле (гибко и точно под приложение).
Использование
*разрешает все профили. Не обязательно указывать оба формата — они автоматически сопоставляются. - Через аннотации:
- объект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
Доступно в редакциях: SE+, EE, CSE Lite (1.67), CSE Pro (1.67)
Список политик проверки подписи образов контейнеров.
Образы контейнеров должны быть подписаны с помощью инструмента Cosign.
Пример:
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: "*"