外部密钥
功能可用范围
外部密钥可用于:
- **n8n Cloud:**Enterprise。
- **自托管:**企业版。
n8n 支持以下密钥提供商:1Password,通过 Connect Server连接;AWS Secrets Manager、Azure Key Vault、GCP Secrets Manager、HashiCorp Vault 和 Infisical。不支持 HashiCorp Vault Secrets。
- 自 n8n 2.10.0 起,每个密钥提供商可以连接多个保管库。旧版每个提供商仅支持一个保管库。
- 自 n8n 2.13.0 起,启用相应设置后,项目编辑者可在项目内使用外部密钥,项目管理员还可管理项目保管库。
外部密钥存储中的凭据,仅在凭据字段中解析,其他支持表达式的字段不能解析。
可以使用外部密钥存储管理 n8n 的凭据1。
n8n 将所有凭据加密存储在数据库中,并默认限制访问。外部密钥功能允许将敏感凭据信息存入外部保管库,在需要时由 n8n 加载,提供额外安全层,也能集中管理多个 n8n 环境使用的凭据。
全局保管库
密钥保管库默认为全局:整个实例的用户都可使用引用该保管库密钥的凭据。
在个人项目中,只有实例所有者和管理员可以在凭据中使用全局保管库的密钥。
项目保 管库
实例管理员可以将保管库共享给特定项目。分配给项目后,只有该项目的凭据可以引用其中密钥。可以选择绑定到单个项目,或保留全局范围。
要更改保管库范围:
- 在 n8n 中前往 Settings(设置)> External Secrets(外部密钥)。
- 找到要配置的保管库,选择 Edit(编辑)。
- 在 Share(共享)下选择以下之一:
- Global(全局):在整个 n8n 实例中共享,允许实例各处的凭据引用这些密钥。
- Project(项目):限制到特定项目,仅该项目的凭据可访问密钥。
- Save(保存)配置。
将 n8n 连接到密钥存储
密钥值
n8n 仅支持明文形式的密钥值,不支持 JSON 对象。
- 在 n8n 中前往 Settings(设置)> External Secrets(外部密钥)。
- 点击 Add secrets vault(添加密钥保管库)。
- 为保管库输入唯一名称。之后在凭据中通过
{{ $secrets.<vault-name>... }}表达式引用此保管库时,名称将作为第一段。 - 选择受支持的密钥提供商。
- 输入提供商凭据,详情请参阅下方各提供商章节。
- Save(保存)配置。
只要此存储保持连接,就可以在凭据中引用其密钥。
1Password
需要 1Password Connect Server
n8n 与 1Password Connect Server 集成,这是供机器访问 1Password 的自托管 API,不等同于个人或团队 1Password 账号。使用此提供商必须部署并运行 Connect Server。
填写 Connect Server URL 和 Access Token(访问令牌)。URL 是可访问服务器的地址,例如 http://localhost:8080。访问令牌是为 Connect Server 集成创建的令牌。
n8n 读取令牌可访问的全部保管库和条目。每个 1Password 条目成为一个密钥,其字段可作为属性访问。使用 {{ $secrets.<vault-name>.<item-title>.<field-label> }} 访问指定字段值。
AWS Secrets Manager
选择身份验证方式:
- IAM User(IAM 用户):填写 IAM 用户的 access key ID(访问密钥 ID)、secret access key(秘密访问密钥)和 region(区域)。
- Auto Detect(自动检测):n8n 使用 AWS SDK 默认凭据提供程序链,从运行环境自动获取凭据,例如环境变量、共享凭据文件,或 EC2/ECS/EKS 实例角色。适合已提供 AWS 凭据的环境,无需管理长期访问密钥。
无论选择哪种方式,底层 IAM 身份都必须具有 secretsmanager:ListSecrets、secretsmanager:BatchGetSecretValue 和 secretsmanager:GetSecretValue 权限。
Auto Detect 与自动检测时的密钥作用域
n8n 不为此保管库接收任何凭据输入,而是解析运行环境中的可用身份。因此,同一 n8n 实例上所有配置为 Auto Detect 的保管库,共享同一个 IAM 身份和同一组权限。无法给不同 Auto Detect 保管库分配不同 IAM 作用域,例如让一个仅访问某项目密钥,另一个仅访问其他项目密钥。
如果需要按保管库、项目或团队限定密钥访问,请改用 IAM User:为每个保管库创建独立 IAM 用户和访问密钥,并附加按 ARN 限定的策略,参阅下方限制性 ARN 策略示例。Auto Detect 最适合单个全局保管库,或共享该保管库的所有项目都应具有相同 AWS 访问权限的配置。
要让 n8n 访问 AWS Secrets Manager 中的全部密钥,可以向 IAM 用户附加以下策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AccessAllSecrets",
"Effect": "Allow",
"Action": [
"secretsmanager:ListSecrets",
"secretsmanager:BatchGetSecretValue",
"secretsmanager:GetResourcePolicy",
"secretsmanager:GetSecretValue",
"secretsmanager:DescribeSecret",
"secretsmanager:ListSecretVersionIds"
],
"Resource": "*"
}
]
}
也可以进一步限制,仅授予 n8n 访问指定 AWS Secrets Manager 密钥的权限。仍需允许 secretsmanager:ListSecrets 和 secretsmanager:BatchGetSecretValue 访问全部资源。这些权限让 n8n 能检索按 ARN 限定的密钥,但不提供密钥值访问权限。
接下来,将 secretsmanager:GetSecretValue 权限的范围设为希望与 n8n 共享的密钥的具体 Amazon Resource Name(ARN)。每个资源 ARN 都应使用正确的区域和账号 ID,可在 AWS 密钥控制台中查找 ARN 详情。
例如,以下 IAM 策略仅允许访问指定 AWS 账号和区域中,名称以 n8n 开头的密钥:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ListingSecrets",
"Effect": "Allow",
"Action": [
"secretsmanager:ListSecrets",
"secretsmanager:BatchGetSecretValue"
],
"Resource": "*"
},
{
"Sid": "RetrievingSecrets",
"Effect": "Allow",
"Action": [
"secretsmanager:GetSecretValue",
"secretsmanager:DescribeSecret"
],
"Resource": [
"arn:aws:secretsmanager:us-west-2:123456789000:secret:n8n*"
]
}
]
}
更多 IAM 权限策略示例,请参阅 AWS 文档。
Azure Key Vault
功能可用范围
Azure Cloud 设置自 n8n 2.35.0 起提供。更早版本仅连接 Azure Public Cloud,现有配置无需更改,继续使用 Azure Public Cloud。
填写 tenant ID(租户 ID)、client ID(客户端 ID)和 client secret(客户端密钥)。如何注册 Microsoft Entra ID 应用并创建服务主体,请参阅 Azure 文档。n8n 仅支持单行密钥值。
选择托管 Key Vault 的 Azure Cloud 环境,此选项设置保管库 URL 和 Microsoft Entra 身份验证主机:
| Azure Cloud | 保管库 URL 后缀 | Entra 身份验证主机 |
|---|---|---|
| Azure Public Cloud(默认) | vault.azure.net | https://login.microsoftonline.com |
| Azure US Government | vault.usgovcloudapi.net | https://login.microsoftonline.us |
| Azure China | vault.azure.cn | https://login.partner.microsoftonline.cn |
| Custom(自定义) | 由你提供完整 URL | 由你提供主机 |
对于 Azure Public Cloud、Azure US Government 和 Azure China,填写 Vault Name(保管库名称)。n8n 根据名称和所选云环境的后缀构建保管库 URL。
对于 Custom,请提供完整 Vault URL(保管库 URL),例如 https://my-vault.vault.usgovcloudapi.net,而非保管库名称。还可设置可选的 Authority Host(身份验证主机),例如 https://login.microsoftonline.us,使用其他 Microsoft Entra 身份验证机构。留空时使用默认值(https://login.microsoftonline.com)。Azure Stack 或代理环境等场景可使用 Custom。
GCP Secrets Manager
提供服务账号的 Service Account Key(服务账号密钥,JSON)。账号至少应具有 Secret Manager Secret Accessor 和 Secret Manager Secret Viewer 角色。更多信息请参阅 Google 的服务账号文档。
HashiCorp Vault
填写保管库实例的 Vault URL,选择 Authentication Method(身份验证方式),输入身份验证信息,也可按需提供命名空间。
- 请参阅 HashiCorp 对应身份验证方式的文档:
- 使用 Vault 命名空间时,可以输入 n8n 应连接的命名空间。更多信息请参阅 Vault Enterprise 命名空间