Облачная платформаEvolution

Политики

Эта статья полезна?

Политики — инструмент для массового управления инфраструктурой. В зависимости от режима работы политики могут проверять хосты на соответствие указанным требованиям, выполнять скрипты и устанавливать обновления.

Режимы работы политик:

  • Validation — проверяет хосты на соответствие указанным требованиям, но не производит никаких действий.

  • Enforcement — проверяет хосты на соответствие указанным требованиям, и в случае несоответствия приводит в ожидаемое состояние.

  • Patch — выполняет обновления пакетов, установленных на хосте.

При создании политики вы можете определить действия для автоматического выполнения на хостах в разделе контент политики. Раздел поддерживает формат YAML.

Политики Validation и Enforcement

Политики с режимами работы Validation и Enforcement состоят из списка ресурсов resources. Ресурсы выполняются в указанном порядке. Каждый ресурс — один из типов: exec, pkg или file. Это взаимоисключающие поля внутри одного ресурса.

Тип exec состоит из секций validate и enforce. В Validation-политиках указывается только validate, а enforce выставляется в значение null. В Enforcement-политиках указываются обе секции.

YAML-шаблон

resources:
- id: string
exec:
validate:
script: string
args:
- string
interpreter: string
# if it's a validation-only policy, use "enforce: null"
enforce:
script: string
args:
- string
interpreter: string
outputFilePath: string
- id: my-pkg-resource
pkg:
desiredState: string
apt:
name: string
googet:
name: string
yum:
name: string
zypper:
name: string
deb:
pullDeps: boolean
source:
allowInsecure: boolean
gcs:
bucket: string
generation: integer
object: string
localPath: string
remote:
sha256Checksum: string
uri: string
msi:
properties:
- string
source:
allowInsecure: boolean
gcs:
bucket: string
generation: integer
object: string
localPath: string
remote:
sha256Checksum: string
uri: string
rpm:
pullDeps: boolean
source:
allowInsecure: boolean
gcs:
bucket: string
generation: integer
object: string
localPath: string
remote:
sha256Checksum: string
uri: string
- id: my-file-resource
file:
path: string
state: string
content: string
permissions: integer

Параметр

Описание

resources[].id

ID ресурса. Может состоять из символов латиницей, цифр и дефисов.

resources[].exec

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

resources[].exec.validate|enforce

Секции внутри ресурса exec. Секция validate описывает проверки для хоста. Если проверки не пройдены, выполняется секция enforce для приведения хоста в ожидаемое состояние.

resources[].exec.validate|enforce.script

Скрипт, который выполнится на хосте. Например, systemctl is-active bzsenagent проверит, что запущена служба bzsenagent. Если скрипт содержится в секции validate, то при успешном выполнении политика получит статус успешно выполненной и блок enforce не будет вызван.

resources[].exec.validate|enforce.args[]

Список аргументов для script. К аргументам можно обращаться из скрипта с помощью позиционных переменных внутри скрипта. Например, для shell указывать $1, $2, $3 и так далее.

resources[].exec.validate|enforce.interpreter

Интерпретатор для выполнения скрипта script. Возможные значения: INTERPRETER_UNSPECIFIED, NONE, SHELL, POWERSHELL.

resources[].exec.enforce.outputFilePath

(Опционально) Путь к файлу, в который нужно сохранить вывод команды, выполняемой в секции enforce.

resources[].pkg.desiredState

Тип ресурса pkg, который используется для управления пакетами на хосте.

resources[].pkg.desiredState

Состояние пакета, которое агент должен поддержать на хосте. Возможные значения: INSTALLED — установлен, REMOVED — удален, DESIRED_STATE_UNSPECIFIED — нет заданного желаемого состояния.

resources[].pkg.apt|yum|zypper|googet|deb|rpm|msi

Менеджер пакетов, который будет использован для управления пакетами.

resources[].pkg.apt|googet|yum|zypper.name

Имя пакета.

resources[].file

Тип ресурса file, который используется для управления файлами на хосте.

resources[].file.path

Путь к файлу на хосте.

resources[].file.state

Состояние файла, которое агент должен поддержать на хосте. Возможные значения: PRESENT — существует, ABSENT — не существует, CONTENTS_MATCH — содержит текст из секции content, DESIRED_STATE_UNSPECIFIED — состояние не определено.

resources[].file.permissions

Устанавливает права на использование файла. Состоит из трёх восьмеричных цифр, которые по порядку представляют права доступа для владельца, группы и остальных пользователей к файлу (аналогично утилите chmod).

resources[].file.content

(Опционально)

resources[].file.outputFilePath

(Опционально) Путь к файлу, в который агент запишет отчет.

Политика Patch

Patch-политика описывает параметры обновления пакетов для разных ОС и дополнительные шаги.

YAML-шаблон

patchConfig:
rebootConfig: DEFAULT
apt:
type: DIST
excludes: []
exclusivePackages: []
yum: null
goo: null
zypper: null
windowsUpdate: null
preStep: null
postStep: null
migInstancesAllowed: false
dryRun: false

Примеры политик

Проверка настроек SSH

Политика проверяет, что в SSH настроено разрешение входа только с ключами, без паролей. Политика проверяет, что в файле /etc/ssh/sshd_config отключена аутентификация по паролю — строка «PasswordAuthentication no» должна присутствовать. Это значит, что разрешен только вход по SSH-ключам.

resources:
- id: is-ssh-allow-only-keys
exec:
validate:
script: grep -x 'PasswordAuthentication no' /etc/ssh/sshd_config
args: []
interpreter: SHELL
outputFilePath: ""
enforce: null