N8n enforce settings: управление разрешениями файла настроек
Файл n8n-enforce-settings.json является центральным инструментом для принудительного применения политик безопасности и конфигурации в платформе автоматизации n8n. Его основное назначение — обеспечение контроля администратора над параметрами экземпляра n8n, особенно в многопользовательских или производственных средах, где необходимо ограничить возможности конечных пользователей по изменению критических настроек. Этот механизм действует на уровне приложения и имеет приоритет над настройками, заданными через пользовательский интерфейс.
Назначение и принцип работы механизма enforce settings
Механизм принудительных настроек (enforce settings) позволяет системным администраторам декларативно задавать политики, которые не могут быть изменены обычными пользователями через веб-интерфейс. Когда параметр задан в этом файле, соответствующий элемент управления в интерфейсе n8n становится неактивным (заблокированным) или полностью скрытым, в зависимости от настройки. Это гарантирует соблюдение корпоративных стандартов безопасности, конфигурации и соответствия требованиям. Файл считывается при запуске n8n, и его изменения требуют перезагрузки приложения.
Расположение и структура файла
Файл должен быть размещен в директории, где хранятся конфигурационные данные n8n. Путь к этой директории определяется переменной окружения N8N_CONFIG_FILES_DIR или, если она не задана, используется стандартный путь в зависимости от ОС (например, ~/.n8n для Linux). Файл должен иметь точное имя: n8n-enforce-settings.json.
Структура файла представляет собой JSON-объект, где ключи соответствуют разделам настроек n8n, а значения определяют принудительно применяемые параметры. Основные разделы включают credentials, execution, externalSecrets, nodes, workflows и другие.
Детальный разбор ключевых разделов и параметров
1. Управление учетными данными (credentials)
Этот раздел критически важен для безопасности. Он позволяет контролировать, могут ли пользователи создавать, использовать или изменять учетные данные.
- create: Разрешает (
true) или запрещает (false) создание новых учетных данных. - delete: Контролирует возможность удаления учетных данных.
- update: Контролирует возможность редактирования существующих учетных данных.
- use: Определяет, могут ли пользователи выбирать существующие учетные данные в узлах workflows. Если запрещено, пользователи смогут использовать только тег «None» или «Create New».
- access: Ограничивает, какие учетные данные видны пользователю. Может быть задан как
["all"]для полного доступа или как массив идентификаторов конкретных учетных данных (["id_1", "id_2"]), к которым пользователь имеет доступ. - include: Массив узлов, которые разрешены к использованию. Если массив пуст или параметр не задан, ограничений нет. Пример:
["n8n-nodes-base.httpRequest", "n8n-nodes-base.manualTrigger"]. - exclude: Массив узлов, которые запрещены к использованию. Имеет более высокий приоритет, чем
include. - categories: Управление видимостью категорий узлов в интерфейсе. Можно скрыть целые категории, такие как «Communication» или «Core Nodes».
- create: Разрешает создание новых workflows.
- delete: Разрешает удаление workflows.
- update: Разрешает редактирование существующих workflows.
- execute: Контролирует возможность ручного запуска workflow (кнопка «Execute Workflow»).
- sharing: Управляет возможностью совместного использования workflow с другими пользователями.
- saveDataExecution: Принудительно задает, будут ли сохраняться данные выполнения (Success, Error). Значения:
"all","none","error". - saveManualExecutions: Принудительно включает или выключает сохранение данных для ручных запусков.
- saveDataErrorExecution: Определяет, какие данные сохраняются при ошибке:
"all"или"none". - saveDataSuccessExecution: Аналогично для успешных выполнений.
- create: Разрешает создание новых записей, ссылающихся на внешние секреты.
- delete: Разрешает удаление таких записей.
- update: Разрешает их обновление.
- use: Разрешает использование внешних секретов в узлах.
2. Управление узлами (nodes)
Позволяет администраторам контролировать, какие узлы (интеграции) доступны для использования в workflows.
3. Управление workflows
Определяет политики для создания и выполнения рабочих процессов.
4. Настройки выполнения (execution)
Управление параметрами среды выполнения, такими как режимы выполнения, политики повторных попыток и хранение данных.
5. Внешние секреты (externalSecrets)
Интеграция с внешними системами управления секретами, такими как HashiCorp Vault или AWS Secrets Manager.
Пример полного файла n8n-enforce-settings.json
Ниже приведен пример комплексной конфигурации для строгого производственного окружения.
{
"credentials": {
"create": false,
"delete": false,
"update": false,
"use": true,
"access": ["id_of_allowed_credential_1", "id_of_allowed_credential_2"]
},
"execution": {
"saveDataExecution": "none",
"saveManualExecutions": false
},
"externalSecrets": {
"create": false,
"use": true
},
"nodes": {
"include": ["n8n-nodes-base.httpRequest", "n8n-nodes-base.function", "n8n-nodes-base.scheduleTrigger"],
"exclude": ["n8n-nodes-base.emailSend", "@n8n/n8n-nodes-langchain.agent"],
"categories": {
"hide": ["Communication", "UptimeMonitors"]
}
},
"workflows": {
"create": true,
"delete": false,
"update": true,
"execute": true,
"sharing": false
},
"versionControl": {
"enabled": false
}
}
Практическое развертывание и управление
Для применения enforce settings необходимо создать файл в соответствующей директории и перезапустить n8n. Убедитесь, что файл имеет правильный синтаксис JSON. Для проверки корректности можно использовать команду n8n start --dry-run, которая выведет ошибки конфигурации без полного запуска сервера. Важно понимать, что данные настройки применяются глобально ко всем пользователям, за исключением параметра credentials.access, который может быть персонализирован через N8N_ENFORCE_SETTINGS_FILE_PER_USER.
Таблица: Сравнение управления через UI и через enforce settings
| Аспект управления | Через пользовательский интерфейс (UI) | Через файл enforce settings |
|---|---|---|
| Уровень применения | Может быть изменен пользователем с соответствующими правами. | Системный, применяется при запуске n8n. |
| Гибкость | Высокая, изменения в реальном времени. | Низкая, требует редактирования файла и перезагрузки. |
| Безопасность | Зависит от прав пользователя; настройки могут быть изменены. | Высокая, настройки заблокированы для изменений из UI. |
| Идеальный сценарий | Разработка, тестирование, персональные инстансы. | Продакшен-среда, многопользовательские развертывания, соответствие стандартам. |
Интеграция с системными переменными окружения
Механизм enforce settings тесно связан с переменными окружения n8n. Некоторые параметры могут дублироваться (например, N8N_EXECUTIONS_DATA_SAVE_ON_ERROR и execution.saveDataErrorExecution). Важно помнить правило приоритета: значение из файла n8n-enforce-settings.json имеет наивысший приоритет и переопределяет любые настройки, заданные через UI или переменные окружения (за редкими исключениями, указанными в документации). Это позволяет администраторам быть уверенными в применяемой конфигурации.
Ответы на часто задаваемые вопросы (FAQ)
Вопрос 1: Что произойдет, если файл n8n-enforce-settings.json содержит синтаксическую ошибку?
Если файл содержит некорректный JSON, n8n не запустится. В логах запуска будет указана конкретная ошибка парсинга. Перед развертыванием всегда проверяйте файл с помощью JSON-валидатора или команды jq . n8n-enforce-settings.json в Linux.
Вопрос 2: Можно ли использовать enforce settings для разных пользователей?
По умолчанию файл применяется глобально. Однако, начиная с версии n8n 0.218.0, можно активировать режим отдельных файлов для каждого пользователя, установив переменную окружения N8N_ENFORCE_SETTINGS_FILE_PER_USER=true. В этом случае n8n будет искать файл с именем n8n-enforce-settings-{USER_ID}.json в той же конфигурационной директории. Это позволяет задавать разные политики для разных ролей.
Вопрос 3: Какой приоритет у настроек: переменные окружения, UI или enforce settings?
Приоритет следующий (от высшего к низшему):
- Файл n8n-enforce-settings.json (наивысший приоритет).
- Значения, заданные через переменные окружения.
- Значения, установленные через пользовательский интерфейс (UI) или базу данных.
Если параметр задан в enforce settings, он заблокирует возможность его изменения любым другим способом.
Вопрос 4: Можно ли частично применять enforce settings, или нужно задавать все параметры?
Файл работает по принципу частичного применения. Вы можете указать только те разделы и параметры, которые хотите зафиксировать. Все остальные настройки останутся управляемыми через UI или переменные окружения. Например, можно заблокировать только создание учетных данных, оставив все остальное как есть.
Вопрос 5: Как скрыть определенные узлы или категории узлов из интерфейса?
Используйте раздел nodes. Для скрытия конкретных узлов добавьте их имена (например, "n8n-nodes-base.emailSend") в массив exclude. Для скрытия целой категории (например, «Communication») добавьте ее название в массив nodes.categories.hide.
Вопрос 6: Требуется ли перезагрузка n8n после каждого изменения файла?
Да, файл считывается только во время запуска (старта) n8n. Любые изменения в файле n8n-enforce-settings.json вступят в силу только после перезагрузки сервиса n8n.
Вопрос 7: Совместимы ли community nodes с enforce settings?
Да, community nodes (узлы, установленные отдельно) управляются так же, как и встроенные. Их нужно указывать в массивах include или exclude по их полному имени, которое обычно начинается с @ (например, "@n8n/n8n-nodes-langchain.agent").
Заключение
Файл n8n-enforce-settings.json представляет собой мощный инструмент администратора для централизованного и надежного управления конфигурацией n8n в корпоративных средах. Его правильное использование позволяет обеспечить безопасность, соблюдение политик и стабильность работы платформы автоматизации. Ключевые преимущества включают невозможность обхода настроек конечными пользователями, интеграцию с системами контроля версий для отслеживания изменений и четкое разделение обязанностей между администраторами инфраструктуры и пользователями-разработчиками workflows. Внедрение этого механизма является обязательным шагом при переходе n8n из состояния инструмента для индивидуального использования в статус корпоративной платформы.
Комментарии