菜单
Enterprise Open source RSS

配置数据库加密

Grafana 的数据库包含用于查询数据源、发送警报通知以及在 Grafana 内执行其他功能的密钥。

Grafana 在将这些密钥写入数据库之前对其进行加密,使用的对称密钥加密算法称为高级加密标准 (AES)。这些密钥使用一个秘密密钥进行签名,您可以在配置新的 Grafana 实例时更改该密钥。

注意

Grafana v9.0 及更高版本默认使用信封加密,这为加密过程引入了一个额外的间接层,从而对旧版本的 Grafana 引入了隐式重大变更

有关如何使用信封加密操作 Grafana 实例的更多详细信息,请参见操作工作部分。

注意

在 Grafana Enterprise 中,您还可以以 AES-GCM(伽罗瓦/计数器模式)加密密钥,而不是默认的 AES-CFB(密码反馈模式)。

信封加密

注意

自 Grafana v9.0 起,您可以通过在您的Grafana 配置中添加功能开关 disableEnvelopeEncryption 来关闭信封加密。

Grafana 不使用单个密钥加密所有密钥,而是使用一组称为数据加密密钥 (DEK) 的密钥来加密它们。这些数据加密密钥本身使用单个密钥加密密钥 (KEK) 进行加密,KEK 通过您的Grafana 配置中的 secret_key 属性配置,或通过使用密钥管理服务 (KMS) 中的密钥加密数据库进行配置。

隐式重大变更

信封加密对 Grafana v9.0 之前的版本引入了一个隐式重大变更,因为它改变了 Grafana 数据库中存储的密钥的加密方式。Grafana 管理员可以升级到 Grafana v9.0,从数据库加密的角度来看无需任何操作,但如果需要回滚到 Grafana v8.5 或更早版本,则必须格外小心,因为在升级到 Grafana v9.0 后创建或修改的密钥无法被早期版本解密。

Grafana v8.5 在一个可选功能开关后实现了信封加密。需要降级到 Grafana v8.5 的 Grafana 管理员可以通过在Grafana 配置中添加功能开关 envelopeEncryption 来启用信封加密作为变通方案。

操作工作

从数据库加密的角度来看,Grafana 管理员可以

  • 重新加密密钥:使用信封加密和新的数据密钥重新加密密钥。
  • 回滚密钥:解密使用信封加密的密钥,并使用旧版加密重新加密它们。
  • 重新加密数据密钥:使用新的密钥加密密钥和 KMS 集成重新加密数据密钥。
  • 轮换数据密钥:禁用活动数据密钥,并停止将其用于加密操作,转而使用新密钥。

重新加密密钥

您可以重新加密密钥以

  • 将已存在的密钥的加密从旧版加密迁移到信封加密。
  • 数据密钥轮换后重新加密密钥。

要重新加密密钥,请使用 Grafana CLI 运行 grafana cli admin secrets-migration re-encrypt 命令,或使用 Grafana Admin API/encryption/reencrypt-secrets 端点。可以安全地多次运行,更推荐在维护模式下运行。

回滚密钥

您可以将使用信封加密的密钥回滚到旧版加密。这可能是在升级失败后降级到 v9.0 之前的 Grafana 版本所必需的。

要回滚密钥,请使用 Grafana CLI 运行 grafana cli admin secrets-migration rollback 命令,或使用 Grafana Admin API/encryption/rollback-secrets 端点。可以安全地多次运行,更推荐在维护模式下运行。

重新加密数据密钥

您可以重新加密使用特定密钥加密密钥 (KEK) 加密的数据密钥。这使您可以使用新的 KEK 版本重新加密现有数据密钥,或使用完全不同的 KEK 重新加密它们。

要重新加密数据密钥,请使用 Grafana CLI 运行 grafana cli admin secrets-migration re-encrypt-data-keys 命令,或使用 Grafana Admin API/encryption/reencrypt-data-keys 端点。可以安全地多次调用,更推荐在维护模式下运行。

轮换数据密钥

您可以轮换数据密钥以禁用活动数据密钥,从而停止将其用于加密操作。对于高可用性设置,您可能需要等待数据密钥缓存的存活时间 (TTL) 到期,以确保所有轮换的数据密钥不再用于加密操作。

新的数据密钥会按需生成用于加密操作。

注意

数据密钥轮换不会隐式重新加密密钥。Grafana 将继续使用轮换的数据密钥来解密仍使用这些密钥加密的密钥。要完全停止将轮换的数据密钥用于加密和解密,请参见密钥重新加密

要轮换数据密钥,请使用 Grafana Admin API/encryption/rotate-data-keys 端点。可以安全地多次调用,更推荐在维护模式下运行。

使用密钥管理服务 (KMS) 中的密钥加密数据库

如果您使用的是 Grafana Enterprise,您可以与密钥管理服务 (KMS) 提供程序集成,并将 Grafana 的密码操作模式从 AES-CFB 更改为 AES-GCM。

您可以选择使用 KMS 中的密钥加密存储在 Grafana 数据库中的密钥,KMS 是一个安全的中央存储位置,旨在帮助您创建和管理加密密钥,并控制其在多个服务中的使用。当您与 KMS 集成时,Grafana 不会直接存储您的加密密钥。相反,Grafana 存储 KMS 凭据和密钥标识符,Grafana 使用它们来加密数据库。

Grafana 集成了以下密钥管理服务:

更改加密模式为 AES-GCM

Grafana 使用密码反馈模式高级加密标准 (AES-CFB) 加密密钥。您可能更喜欢使用伽罗瓦/计数器模式高级加密标准 (AES-GCM),以满足贵公司的安全要求或为了与其他服务保持一致。

要更改加密模式,请更新您的 Grafana 配置文件中 [security.encryption] 部分的 algorithm 值。有关更多详细信息,请参阅Enterprise 配置