使用 Google Cloud KMS 加密数据库机密信息
您可以使用 Google Cloud Key Management Service 的加密密钥来加密 Grafana 数据库中的机密信息。
前提条件
- 拥有列出和创建 KMS 密钥以及访问这些密钥的服务帐户权限的 Google Cloud 帐户
- 访问 Grafana配置文件
创建一个服务帐户并为其分配角色:可以是预定义角色或具有使用 Key Management Service 加密和解密机密信息权限的自定义角色。
创建服务帐户密钥并将其 JSON 文件保存到您的计算机,例如保存为
~/.config/gcloud/sample-project-credentials.json
。在 Grafana 中,开启信封加密。
将您的 Google Cloud KMS 详细信息添加到 Grafana 配置文件中;根据您的操作系统,此文件通常命名为
grafana.ini
a. 向配置文件添加新部分,名称格式为[security.encryption.azurekv.<KEY-NAME>]
,其中<KEY-NAME>
是在此密钥提供程序中唯一标识此密钥的任意名称。
b. 使用以下值填充该部分key_id
: 加密密钥 ID,请参阅获取密钥 ID。credentials_file
: 服务帐户密钥 JSON 文件在您计算机上的完整路径。
grafana.ini
文件中 Google Cloud KMS 提供程序部分的示例如下所示# Example of Google Cloud KMS provider setup ;[security.encryption.googlekms.example-encryption-key] # Google Cloud KMS key ID key_id = 1234abcd-12ab-34cd-56ef-1234567890ab # Full path to a JSON file with a service account key credentials_file = ~/.config/gcloud/sample-project-credentials.json
使用您创建的新加密提供程序密钥更新
grafana.ini
配置文件的[security]
部分[security] # previous encryption key, used for legacy alerts, decrypting existing secrets or used as default provider when external providers are not configured secret_key = AaaaAaaa # encryption provider key in the format <PROVIDER>.<KEY-NAME> encryption_provider = googlekms.example-encryption-key # list of configured key providers, space separated available_encryption_providers = googlekms.example-encryption-key
(可选)从命令行并在 Grafana Enterprise 的根目录中,使用以下命令使用新密钥重新加密 Grafana 数据库中的所有机密信息
grafana cli admin secrets-migration re-encrypt
如果您不重新加密现有机密信息,它们将继续由之前的加密密钥加密。用户仍然能够访问它们。
> 注意:此过程可能需要几分钟才能完成,具体取决于数据库中机密信息(例如数据源)的数量。在此过程运行时,用户可能会遇到错误,并且可能不会发送警报通知。
> 注意:如果您在 Grafana 初次设置期间(在创建任何数据源或面板之前)更新此加密密钥,则无需此步骤,因为 Grafana 中没有需要迁移的机密信息。