Политики — инструмент для массового управления инфраструктурой. В зависимости от режима работы политики могут проверять хосты на соответствие указанным требованиям, выполнять скрипты и устанавливать обновления.
Режимы работы политик:
Validation — проверяет хосты на соответствие указанным требованиям, но не производит никаких действий.
Enforcement — проверяет хосты на соответствие указанным требованиям, и в случае несоответствия приводит в ожидаемое состояние.
Patch — выполняет обновления пакетов, установленных на хосте.
При создании политики вы можете определить действия для автоматического выполнения на хостах в разделе контент политики. Раздел поддерживает формат YAML.
Политики Validation и Enforcement
Политики с режимами работы Validation и Enforcement состоят из списка ресурсов resources. Ресурсы выполняются в указанном порядке. Каждый ресурс — один из типов: exec, pkg или file. Это взаимоисключающие поля внутри одного ресурса.
Тип exec состоит из секций validate и enforce. В Validation-политиках указывается только validate, а enforce выставляется в значение null. В Enforcement-политиках указываются обе секции.
YAML-шаблон
resources:- id: stringexec:validate:script: stringargs:- stringinterpreter: string# if it's a validation-only policy, use "enforce: null"enforce:script: stringargs:- stringinterpreter: stringoutputFilePath: string- id: my-pkg-resourcepkg:desiredState: stringapt:name: stringgooget:name: stringyum:name: stringzypper:name: stringdeb:pullDeps: booleansource:allowInsecure: booleangcs:bucket: stringgeneration: integerobject: stringlocalPath: stringremote:sha256Checksum: stringuri: stringmsi:properties:- stringsource:allowInsecure: booleangcs:bucket: stringgeneration: integerobject: stringlocalPath: stringremote:sha256Checksum: stringuri: stringrpm:pullDeps: booleansource:allowInsecure: booleangcs:bucket: stringgeneration: integerobject: stringlocalPath: stringremote:sha256Checksum: stringuri: string- id: my-file-resourcefile:path: stringstate: stringcontent: stringpermissions: 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: DEFAULTapt:type: DISTexcludes: []exclusivePackages: []yum: nullgoo: nullzypper: nullwindowsUpdate: nullpreStep: nullpostStep: nullmigInstancesAllowed: falsedryRun: false
Примеры политик
Проверка настроек SSH
Политика проверяет, что в SSH настроено разрешение входа только с ключами, без паролей. Политика проверяет, что в файле /etc/ssh/sshd_config отключена аутентификация по паролю — строка «PasswordAuthentication no» должна присутствовать. Это значит, что разрешен только вход по SSH-ключам.
resources:- id: is-ssh-allow-only-keysexec:validate:script: grep -x 'PasswordAuthentication no' /etc/ssh/sshd_configargs: []interpreter: SHELLoutputFilePath: ""enforce: null