【n8n教程】:企业版功能 - 源代码管理、密钥保管、监控与日志流
n8n 不仅仅是一个工作流自动化平台,它还提供了强大的企业级功能来帮助团队管理复杂的自动化生态。本教程将深入浅出地介绍 n8n Enterprise 的五大核心功能:源代码管理、外部密钥保管、日志流、监控洞察和许可证管理。
第一部分:源代码管理与多环境部署
为什么需要源代码管理?
想象一下,你的团队在开发一个重要的工作流。开发人员在开发环境进行测试,但如何确保最终的代码能够安全地进入生产环境?如何追踪谁在何时做了哪些更改?这正是源代码管理的用武之地。
n8n 使用 Git 来支持不同的环境和工作流版本控制。通过将 n8n 实例连接到 Git 仓库,你可以:
- 创建多个 n8n 环境(开发、测试、生产)
- 每个环境由 Git 的不同分支支持
- 轻松在环境间推送和拉取工作流
- 追踪所有的更改历史
核心概念
环境与分支的关系
n8n 支持多种分支模式来适应不同的工作流:
- 单分支模式:所有环境共享一个 Git 分支
- 多分支模式:每个环境对应一个独立的分支(推荐)
- 名称模式匹配:自动关联分支和环境
快速上手:配置源代码管理
步骤 1:准备工作
在开始前,你需要:
- n8n Enterprise 账户(或自托管版本)
- instance owner 或 instance admin 身份
- 一个 Git 仓库(GitHub、GitLab 等)
- Git 的基本知识
步骤 2:连接 Git 仓库
- 进入 n8n 的 Settings(设置)
- 找到 Source Control(源代码管理)部分
- 点击 Connect Repository(连接仓库)
- 输入以下信息:
- Repository URL:你的 Git 仓库地址
- Branch Name:选择要使用的分支
- Authentication:选择认证方式(HTTPS、SSH 或 Token)
步骤 3:配置分支策略
在连接后,n8n 会询问你的分支策略:
分支策略选择:
├─ 单分支模式(Single Branch)
│ └─ 所有工作流都在同一分支
├─ 多分支模式(Multi-Branch)
│ └─ 每个环境对应一个分支
└─ 名称模式(Name Pattern)
└─ 使用正则表达式匹配
对于初学者,推荐使用多分支模式,例如:
main- 生产环境develop- 开发环境staging- 测试环境
推送和拉取工作流
连接成功后,你就可以使用 Git 功能了。
推送工作流到 Git
步骤:
1. 在 n8n 中编辑你的工作流
2. 点击工作流菜单 → Save(保存)
3. 你会看到推送提示
4. 输入提交信息(Commit Message)
5. 选择 Push(推送)
推送时的提交信息应该清晰说明你做了什么:
- ✅ “Add error handling to API workflow”
- ✅ “Update credentials for Slack integration”
- ❌ “Fix”(信息太模糊)
从 Git 拉取工作流
步骤:
1. 点击 n8n 主导航的 Pull Changes(拉取变更)
2. n8n 会自动从连接的分支获取最新工作流
3. 检查冲突(如有需要)
4. 确认更新
复制工作流到其他环境
有时你需要将一个工作流从开发环境复制到生产环境,但不是所有的配置都需要复制。n8n 提供了复制工作流功能。
方法 1:通过 Git 分支
最推荐的做法是创建一个 Pull Request(PR):
- 在开发分支上完成工作流
- 创建 PR 到生产分支
- 审查变更
- 合并 PR
- 在生产环境 n8n 实例中拉取更新
方法 2:手动导出和导入
如果你不使用 Git,可以使用导出/导入:
- 在源环境中导出工作流 JSON
- 修改凭证信息
- 在目标环境导入 JSON 文件
常见场景:从开发到生产
开发流程:
1. 在 develop 分支创建新工作流 → Push
2. 在 staging 分支拉取 (Pull) 测试
3. 创建 Pull Request 到 main 分支
4. 审查代码和逻辑
5. 合并 PR
6. 在生产环境 Pull 最新变更
7. 激活并监控
第二部分:安全的密钥保管 - 外部密钥管理
为什么不能硬编码密钥?
在 n8n 工作流中,你需要与许多外部服务(API、数据库、云服务)集成。这些服务都需要认证凭证(如 API Key、密码等)。
危险做法:
❌ 将密钥直接写在工作流中
❌ 将密钥保存在代码注释中
❌ 将密钥包含在版本控制中
这样做的后果:
- 任何能访问工作流代码的人都能看到密钥
- 密钥泄露到公网上
- 安全审计失败
n8n 的密钥保护机制
好消息是,n8n 有多层保护:
- 默认保护:n8n 在数据库中加密存储所有凭证
- 访问限制:凭证权限可以被精细控制
- 外部保管库集成:可以连接到专业的密钥管理服务
外部密钥保管库集成
n8n Enterprise 支持连接到外部密钥管理系统,这些系统具有更强的安全性:
支持的密钥管理服务
| 服务 | 特点 | 最适合 |
|---|---|---|
| AWS Secrets Manager | AWS 原生、高度集成 | AWS 用户 |
| Azure Key Vault | Microsoft 生态、企业级 | Azure 用户 |
| GCP Secrets Manager | Google Cloud 集成 | GCP 用户 |
| HashiCorp Vault | 平台无关、开源选项 | 多云环境 |
| Infisical | 轻量级、易于部署 | 小型团队 |
快速上手:连接 AWS Secrets Manager
第 1 步:在 AWS 创建 IAM 用户
步骤:
1. 登录 AWS Console
2. 进入 IAM → Users → Create User
3. 为用户命名(如 n8n-integration)
4. 给予以下权限:
- secretsmanager:ListSecrets
- secretsmanager:GetSecretValue
- secretsmanager:BatchGetSecretValue
第 2 步:生成访问密钥
步骤:
1. 在 IAM 用户页面 → Security Credentials
2. Create Access Key
3. 复制 Access Key ID 和 Secret Access Key
⚠️ Secret Access Key 只显示一次,保存好!
第 3 步:在 n8n 配置
步骤:
1. n8n Settings → External Secrets
2. 选择 AWS Secrets Manager
3. 填写以下信息:
- Access Key ID: [粘贴你的 Access Key]
- Secret Access Key: [粘贴你的 Secret Access Key]
- Region: [选择你的 AWS 区域,如 us-east-1]
4. 点击 Test Connection 验证
5. Save
在工作流中使用外部密钥
配置好后,在工作流中引用密钥非常简单。
步骤
1. 打开工作流中的凭证字段
2. 悬停在字段上,点击 Expression(表达式)按钮
3. 输入表达式:{
{ $secrets.awsSecretsManager.your_secret_name }}
4. 保存
表达式语法
根据你使用的密钥管理服务:
AWS Secrets Manager:
{
{ $secrets.awsSecretsManager.secret_name }}
Azure Key Vault:
{
{ $secrets.vault.secret_name }}
GCP Secrets Manager:
{
{ $secrets.gcpSecretsManager.secret_name }}
HashiCorp Vault:
{
{ $secrets.vault.secret_name }}
Infisical:
{
{ $secrets.infisical.secret_name }}
最佳实践
✅ 密钥命名规范
只能使用字母、数字和下划线,不能有空格、连字符等:
- ✅
slack_bot_token - ✅
API_KEY_PROD - ❌
slack-bot-token(有连字符) - ❌
API KEY(有空格)
✅ 多环境管理
对于开发和生产环境,使用不同的密钥保管库或密钥环境:
AWS Secrets Manager:
├─ 开发环境 Secrets
│ ├─ slack_token_dev
│ ├─ db_password_dev
│ └─ api_key_dev
└─ 生产环境 Secrets
├─ slack_token_prod
├─ db_password_prod
└─ api_key_prod
在 Infisical 中,直接创建不同的环境项目。
✅ 凭证所有权
外部密钥只能用于由 instance owner 或 admin 拥有的凭证。这确保了生产环境的安全性。
第三部分:日志流 - 实时监控事件
什么是日志流?
日志流允许你将 n8n 的所有事件(工作流执行、用户操作、系统事件等)实时发送到外部日志和监控系统。
为什么需要日志流?
场景:你运行了一个关键工作流,但不想每次都登录 n8n 检查
✓ 使用日志流,事件会自动发送到你的监控系统
✓ 你可以在一个地方查看所有 n8n 事件
✓ 快速发现和解决问题
支持的日志目标
n8n 支持三种类型的日志目标:
| 类型 |
|---|

2850

被折叠的 条评论
为什么被折叠?



