菜单
文档breadcrumb arrow Grafana 文档breadcrumb arrow 设置breadcrumb arrow 配置安全性breadcrumb arrow 配置数据库加密breadcrumb arrow 使用 AWS KMS 加密数据库 secrets
企业版 开源

使用 AWS KMS 加密数据库 secrets

您可以使用 AWS Key Management Service 的加密密钥来加密 Grafana 数据库中的 secrets。

先决条件

  • 一个拥有查看和创建 KMS 密钥权限的 AWS 账户,以及访问这些密钥的编程凭据
  • 访问 Grafana 配置文件
  1. 从 AWS Management Console 或使用 AWS KMS API 创建一个对称 API 密钥。

    有关详细说明,请参阅 创建密钥

  2. 检索 Key ID。

    在 AWS 术语中,这可以是 Key ID、Key ARN(Amazon Resource Name)、别名或别名 ARN。有关如何从 AWS 检索 Key ID 的更多信息,请参阅 查找 Key ID 和 Key ARN

  3. 创建一个具有查看您创建的密钥权限的编程凭据(Access Key ID 和 Secret Access Key)。

    在 AWS 中,您可以使用密钥策略IAM 策略授权来控制对 KMS 密钥的访问。您还可以创建临时凭据,临时凭据必须与 Access Key ID 和 Secret Access Key 一起提供会话令牌。

  4. 在 Grafana 内部,开启 envelope encryption。

  5. 将您的 AWS KMS 详细信息添加到 Grafana 配置文件中;根据您的操作系统,该文件通常名为 grafana.ini

    a. 在配置文件中添加一个新部分,名称格式为 [security.encryption.awskms.<KEY-NAME>],其中 <KEY-NAME> 是一个唯一标识该密钥在其他提供商密钥中的名称。

    b. 使用以下值填充该部分

    • key_id:对 KMS 中存储的密钥的引用。这可以是 Key ID、Key Amazon Resource Name (ARN)、别名或别名 ARN。如果您使用别名,请使用前缀 alias/。要指定不同 AWS 账户中的 KMS 密钥,请使用其 ARN 或别名。有关如何从 AWS 检索 Key ID 的更多信息,请参阅 查找 Key ID 和 Key ARN

      key_id 选项示例值
      Key ID1234abcd-12ab-34cd-56ef-1234567890ab
      Key ARNarn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
      别名alias/ExampleAlias
      别名 ARNarn:aws:kms:us-east-2:111122223333:alias/ExampleAlias
    • access_key_id:您之前生成的 AWS Access Key ID。

    • secret_access_key:您之前生成的 AWS Secret Access Key。

    • region:您创建 KMS 密钥的 AWS 区域。区域包含在密钥的 ARN 中。例如:arn:aws:kms:*us-east-2*:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

    grafana.ini 文件中 AWS KMS 提供商部分的示例如下

    # AWS key management service provider setup
    ;[security.encryption.awskms.example-encryption-key]
    # Reference to a KMS key - either key ID, key ARN, alias name, or ARN
    ;key_id = 1234abcd-12ab-34cd-56ef-1234567890ab
    # AWS access key ID
    ;access_key_id = AKIAIOSFODNN7EXAMPLE
    # AWS secret access key
    ;secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
    # AWS region, for example eu-north-1
    ;region = eu-north-1
  6. 使用您创建的新 Encryption Provider 密钥更新 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 = awskms.example-encryption-key
    # list of configured key providers, space separated
    available_encryption_providers = awskms.example-encryption-key
  7. 重启 Grafana.

  8. (可选) 从命令行并在 Grafana 的根目录执行以下命令,使用新密钥重新加密 Grafana 数据库中的所有 secrets

    grafana cli admin secrets-migration re-encrypt

    如果您不重新加密现有 secrets,它们将保留由之前的加密密钥加密。用户仍然可以访问它们。

    > 注意:此过程可能需要几分钟才能完成,具体取决于数据库中 secrets(如数据源)的数量。此过程运行时,用户可能会遇到错误,且可能不会发送告警通知。

    > 注意:如果您在 Grafana 初始设置期间(在创建任何数据源或仪表盘之前)更新此加密密钥,则此步骤不是必需的,因为 Grafana 中没有 secrets 需要迁移。