使用密钥存储安全访问 Flux

导航至

多数据源 Flux 为 时间序列分析 开辟了无限的变化,但与所有数据访问一样,新的通信也为可疑行为者打开了潜在的攻击途径。为了保护您的敏感凭据,请使用 InfluxDB 集成的密钥存储和 Flux 的新 密钥 库。

保守王国的密钥秘密

如果您关注我的多数据源 Flux 之旅,您已经看到了通过组合多个数据存储和时间序列分析引入的一些令人兴奋的可能性。但是,如果您仔细查看我的 SQL Flux 脚本,您可能会注意到一些令人不安的事情——连接外部数据存储的 Flux 避免了用户名和密码,并且是以明文形式存在的。

开发时的简单数据访问方法是可以接受的,但当涉及到敏感的生产数据存储时,我们都必须警惕地保护我们的信息。Flux 通过与密钥存储集成来协助进行此保护,以帮助您保守王国的密钥秘密。

InfluxDB Cloud 2 的密钥存储

我们的 InfluxDB Cloud 2 服务与行业领先的 Vault 密钥存储集成,为每位客户提供安全的密钥存储。用户可以使用我们完全记录的 API 存储密钥、列出其密钥和删除密钥。例如,这些 curl 命令使用组织的 ID所有访问令牌 来插入和检索密钥

将密钥放入您的密钥存储

>curl --data '{"myuser_password": "my_password_value"}' --request PATCH --url https://us-west-2-1.aws.cloud2.influxdata.com/api/v2/orgs/<My_Org_ID>/secrets --header 'Authorization: Token <All_Access_Token>'

列出组织中的所有密钥

>curl --request GET --url https://us-west-2-1.aws.cloud2.influxdata.com/api/v2/orgs/<My_Org_ID>/secrets --header 'Authorization: Token <All_Access_Token>'

在 Flux 中使用密钥

我的 SQL.to() 博客 使用了这段 Flux 代码来执行 SQL 插入魔法

// Store result in Postgres
|> sql.to(driverName: "postgres", dataSourceName: "postgresql://localhost?sslmode=disable", table: "adjustment_billing")

在本地,这可以工作,但生产示例将使用用户名/密码通过 Flux 写入远程数据库

// Store result in remote Postgres database
	|> sql.to(driverName: "postgres", dataSourceName: "postgresql://myuser:[email protected]:5432/nisley?sslmode=disable", table: "sensor_billing")

如果没有密钥,用户名和密码将以明文形式硬编码。幸运的是,我们可以利用 Cloud 2 的 Vault 来确保敏感信息的安全。在这里,我修改了完整的鱼缸供应商计费脚本,以使用密钥存储来存储在 myuser_password 中的实际密码

import "sql"
import "influxdata/influxdb/secrets"

myuser_secret = secrets.get(key: "myuser_password")

from(bucket: "tank-health")
	|> range(start: -1w)
	|> filter(fn: (r) => r._measurement == "water_sensor" and r.type == "adjustment")
	|> group(columns: ["type", "device_id"], mode:"by")
|> count(column: "change")
|> rename(columns: {change: "adjustment_actions"})
|> keep(columns: ["device_id", "adjustment_actions"])
|> sql.to(driverName: "postgres", dataSourceName: "postgresql://myuser:" + myuser_secret + "@127.0.0.1:5432/nisley?sslmode=disable", table: "adjustment_billing")

InfluxDB 的通用 API 和 OSS

如果您正在使用 OSS 而不是 Cloud 2 进行本地开发,请不要担心!我们的核心原则之一是在所有产品和服务中开发一个通用的 API。上面的 API 示例适用于任何本地 InfluxDB 2 OSS URL

从本地 OSS 构建中获取密钥

>curl --request GET --url https://localhost:9999/api/v2/orgs/<My_Org_ID>/secrets --header 'Authorization: Token <All_Access_Token>'

请注意,InfluxDB 2 OSS 的底层键值存储当前是 BoltDB。BoltDB 并不专注于成为密钥值存储,因此请注意,如果人们可以访问机器,则值不应被认为是安全的。

与我们一起探索 Flux

通过注册 InfluxDB Cloud 2,或在本地使用 最新的 OSS InfluxDB 2 alpha,加入我们探索 Flux 中的新 Secret 包。与往常一样,如果您对 Flux 有疑问或功能请求,请前往 Flux 的社区论坛 告诉我们!