为什么我在 CloudTrail 日志中收到来自 AWS Config 的 AWS KMS Decrypt API “AccessDenied”错误,我该如何避免这些通知?

上次更新时间:2020 年 1 月 31 日

为什么我会在 AWS CloudTrail 中收到与 AWS Config 服务有关的 AWS Key Management Service (AWS KMS) Decrypt API “AccessDenied”错误?

简短描述

AWS Config 配置记录器会记录在与 AWS Config 运行相同的区域对所有受支持资源类型作出的更改,包括AWS Lambda 函数资源类型。但是,当 AWS Config 跟踪 Lambda 函数的配置更改时,如果这些函数使用通过 AWS KMS 客户管理的密钥 (CMK) 加密的环境变量,则需要拥有该 CMK 的访问权限以解密这些变量。

注意:配置记录器会跟踪对 Lambda 函数的所有更改,但与它关联的环境变量除外。

分配给配置记录器的 AWS Identity and Access Management (IAM) 角色具有这些 Lambda 函数的只读权限:

“lambda:GetFunction”
“lambda:GetPolicy”
“lambda:ListFunctions”
“lambda:GetAlias”
“lambda:ListAliases”

由于 AWS Config 没有使用加密解密操作所需 CMK 的权限,它无法调用 Decrypt API。在 AWS CloudTrail 中将会记录一条“AccessDenied”错误日志。

如果您配置了 CloudTrail 跟踪以将日志发送到 Amazon CloudWatch 日志组,同时配置了针对 UnauthorizedAccessDenied API 调用的 CloudWatch 警报,您将收到一条“AccessDenied”错误消息。有关更多信息,请参阅 示例:授权失败

解决方法

您可以使用 CloudWatch 日志筛选条件模式来筛选与 AWS Config 调用的 Decrypt API 有关的“AccessDenied”通知。

1.    打开 CloudWatch 控制台,然后选择日志组

2.    在内容窗格的指标筛选条件列中,选择指标筛选条件。

3.    选择用于 API 调用授权失败的筛选条件名称的“编辑”图标。

4.    在筛选条件模式中,移除以下筛选条件:

{($.errorCode = "*UnauthorizedOperation") || ($.errorCode = "AccessDenied*")}

5.    在筛选条件模式中,复制并粘贴以下示例语法中,选择分配指标,然后选择保存筛选条件

{($.errorCode = "*UnauthorizedOperation" || $.errorCode = "AccessDenied*") && ($.eventName != "Decrypt" || ($.userIdentity.invokedBy != "config.amazonaws.com"))}

CloudWatch 警报监控将被清除,您不再会收到与 AWS Config 调用的 Decrypt API 有关的“AccessDenied”错误通知。

注意:“AccessDenied”错误日志将会继续存储在您的 CloudTrail 日志中,可以安全地忽略。


这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?