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"]), к которым пользователь имеет доступ.

    2. Управление узлами (nodes)

    Позволяет администраторам контролировать, какие узлы (интеграции) доступны для использования в workflows.

    • include: Массив узлов, которые разрешены к использованию. Если массив пуст или параметр не задан, ограничений нет. Пример: ["n8n-nodes-base.httpRequest", "n8n-nodes-base.manualTrigger"].
    • exclude: Массив узлов, которые запрещены к использованию. Имеет более высокий приоритет, чем include.
    • categories: Управление видимостью категорий узлов в интерфейсе. Можно скрыть целые категории, такие как «Communication» или «Core Nodes».

    3. Управление workflows

    Определяет политики для создания и выполнения рабочих процессов.

    • create: Разрешает создание новых workflows.
    • delete: Разрешает удаление workflows.
    • update: Разрешает редактирование существующих workflows.
    • execute: Контролирует возможность ручного запуска workflow (кнопка «Execute Workflow»).
    • sharing: Управляет возможностью совместного использования workflow с другими пользователями.

    4. Настройки выполнения (execution)

    Управление параметрами среды выполнения, такими как режимы выполнения, политики повторных попыток и хранение данных.

    • saveDataExecution: Принудительно задает, будут ли сохраняться данные выполнения (Success, Error). Значения: "all", "none", "error".
    • saveManualExecutions: Принудительно включает или выключает сохранение данных для ручных запусков.
    • saveDataErrorExecution: Определяет, какие данные сохраняются при ошибке: "all" или "none".
    • saveDataSuccessExecution: Аналогично для успешных выполнений.

    5. Внешние секреты (externalSecrets)

    Интеграция с внешними системами управления секретами, такими как HashiCorp Vault или AWS Secrets Manager.

    • create: Разрешает создание новых записей, ссылающихся на внешние секреты.
    • delete: Разрешает удаление таких записей.
    • update: Разрешает их обновление.
    • use: Разрешает использование внешних секретов в узлах.

    Пример полного файла 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?

    Приоритет следующий (от высшего к низшему):

    1. Файл n8n-enforce-settings.json (наивысший приоритет).
    2. Значения, заданные через переменные окружения.
    3. Значения, установленные через пользовательский интерфейс (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 из состояния инструмента для индивидуального использования в статус корпоративной платформы.

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Войти

Зарегистрироваться

Сбросить пароль

Пожалуйста, введите ваше имя пользователя или эл. адрес, вы получите письмо со ссылкой для сброса пароля.