使用 AWS Secrets Manager 管理 APM 认证密钥

编辑

使用 AWS Secrets Manager 管理 APM 认证密钥编辑

当使用配置选项 ELASTIC_APM_SECRET_TOKENELASTIC_APM_API_KEY 来认证 Elastic APM AWS Lambda 扩展时,相应的密钥以纯文本形式指定在 Lambda 函数的环境变量中。如果您希望安全地存储认证密钥,可以使用 AWS Secrets Manager,并让扩展从 AWS Secrets Manager 中检索实际密钥。请按照以下说明设置 AWS Secrets Manager 和扩展。

步骤 1:在 AWS Secrets Manager 中创建密钥。编辑

在 AWS Secrets Manager 中 创建密钥 用于 APM 密钥令牌APM API 密钥,具体取决于您希望使用哪一个。确保将密钥创建为 纯文本 类型的密钥,并确保它是在与使用该密钥的目标 Lambda 函数 相同的 AWS 区域 中创建的。

我们建议使用 AWS 管理的加密密钥 aws/secretsmanager。但是,您可以选择创建和选择自定义 KMS 密钥进行加密。请注意,使用自定义加密密钥,您需要在 Lambda 函数上添加额外的密钥权限(请参阅 步骤 2)。

在 AWS Secrets Manager 的 Web 控制台中,导航到 存储新密钥,选择 其他类型的密钥 作为密钥类型,并选择 纯文本 选项卡来输入密钥值。将您的 APM 密钥令牌或 APM API 密钥值作为纯字符串输入(不是 作为 JSON 密钥值对)。

image showing the creation of a plaintext secret in Secrets Manager

单击 下一步,选择密钥名称,并完成密钥的创建。

请记住您选择的密钥名称。您将在配置 Elastic APM AWS Lambda 扩展时使用该密钥名称作为配置选项 ELASTIC_APM_SECRETS_MANAGER_SECRET_TOKEN_IDELASTIC_APM_SECRETS_MANAGER_API_KEY_ID 的值。

步骤 2:向您的 AWS Lambda 函数添加权限编辑

为了使您的 Lambda 函数能够从 AWS Secrets Manager 中检索认证密钥,您需要向您的 Lambda 函数提供以下权限。

  • 在 AWS Lambda 函数的 Web 控制台中,导航到 配置权限,然后单击 执行角色 部分中的链接。这将带您进入相应 IAM 角色的 Web 控制台。
  • 添加权限 下拉按钮中选择 创建内联策略,然后选择 JSON 选项卡来定义以下基于 JSON 的策略

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "secretsmanager:GetSecretValue"
                ],
                "Resource": [
                    "THE_ARN_OF_YOUR_SECRET"
                ]
            },
            { 
                "Effect": "Allow",
                "Action": [
                    "kms:Decrypt"
                ],
                "Resource": [
                    "THE_ARN_OF_YOUR_CUSTOM_KMS_KEY"
                ]
            }
        ]
    }

    此权限仅在您为密钥使用自定义 KMS 加密密钥时才需要

  • 查看并保存策略。

步骤 3:配置 Elastic APM AWS Lambda 扩展编辑

最后,您需要配置 Elastic APM AWS Lambda 扩展以使用来自 Secrets Manager 的密钥,而不是通过 ELASTIC_APM_SECRET_TOKENELASTIC_APM_API_KEY 提供的值。

步骤 1 中创建的密钥的名称作为 ELASTIC_APM_SECRETS_MANAGER_SECRET_TOKEN_IDELASTIC_APM_SECRETS_MANAGER_API_KEY_ID 配置选项的值,具体取决于您是要使用 APM 密钥令牌 还是 APM API 密钥

特定于语言的说明描述了如何设置环境变量以配置 AWS Lambda 以使用 Elastic APM

就是这样。在您的 Lambda 函数的第一次调用(冷启动)时,您应该会看到来自 Elastic APM AWS Lambda 扩展的日志消息,指示正在使用来自 Secrets Manager 的密钥

"Using the APM secret token retrieved from Secrets Manager."