View a markdown version of this page

Contributor Insights 日志组访问专用条件键 - Amazon CloudWatch

Contributor Insights 日志组访问专用条件键

要在 Contributor Insights 中创建规则并查看其结果,用户必须具有 cloudwatch:PutInsightRule 权限。默认情况下,拥有该权限的用户可创建规则,对 CloudWatch Logs 内任意日志组进行分析并查看分析结果。结果中会包含对应日志组的贡献者洞察数据,这类数据可能含有敏感信息。

您可基于条件键编写 IAM 策略:仅授予用户针对指定日志组创建 Contributor Insights 规则的权限,同时禁止其访问其他日志组的数据。

有关 IAM 策略中 Condition 元素的更多信息,请参阅 IAM JSON 策略元素:条件

了解 Contributor Insights 权限模型

Contributor Insights 相关操作使用 cloudwatch: IAM 权限命名空间。日志组相关操作使用 logs: 命名空间。Contributor Insights 在处理日志组数据时,不会校验、也不需要任何 logs: 开头的权限。

如果身份主体拥有 cloudwatch:PutInsightRulecloudwatch:GetInsightRuleReport 权限,即可创建规则分析任意日志组并检索分析结果,即便该主体对这些日志组不具备任何 logs: 权限。

重要

聚合结果可能包含敏感信息,例如用作贡献者标识键的日志字段。仅为需要访问全部引用日志组数据的身份主体授予 cloudwatch:PutInsightRulecloudwatch:GetInsightRuleReport 权限。

跨账户访问场景说明:若源账户已配置 AWS Organizations 链接用于共享日志组访问,监控账户内的身份主体仅需配置 cloudwatch:PutInsightRule 权限,即可创建指向源账户日志组的洞察规则。

限制 Contributor Insights 仅访问指定日志组

使用以下条件键,可限定身份主体创建 Contributor Insights 规则时能够指定的日志组范围:

  • cloudwatch:requestInsightRuleLogGroups:匹配规则内填写的日志组名称

  • cloudwatch:requestInsightRuleLogGroupARNs:匹配规则内填写的日志组资源 ARN

重要

规则创建完成后,只要身份主体拥有 cloudwatch:GetInsightRuleReport 权限,即可检索该规则的分析结果,不受日志组访问限制约束。

下方策略仅允许针对名为 AllowedLogGroup 的日志组、名称前缀为 AllowedWildCard 的日志组创建 Contributor Insights 规则。禁止针对其余任意日志组新建规则。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowCertainLogGroups", "Effect": "Allow", "Action": "cloudwatch:PutInsightRule", "Resource": "arn:aws:cloudwatch:*:*:insight-rule/*", "Condition": { "ForAllValues:StringLike": { "cloudwatch:requestInsightRuleLogGroups": [ "AllowedLogGroup", "AllowedWildcard*" ] } } } ] }

下述策略默认允许为任意日志组创建洞察规则,但会显式禁止针对名为 ExplicitlyDeniedLogGroup 的日志组新建规则。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowInsightRulesOnLogGroupsByDefault", "Effect": "Allow", "Action": "cloudwatch:PutInsightRule", "Resource": "arn:aws:cloudwatch:*:*:insight-rule/*" }, { "Sid": "ExplicitDenySomeLogGroups", "Effect": "Deny", "Action": "cloudwatch:PutInsightRule", "Resource": "arn:aws:cloudwatch:*:*:insight-rule/*", "Condition": { "ForAllValues:StringEqualsIgnoreCase": { "cloudwatch:requestInsightRuleLogGroups": [ "/test/alpine/ExplicitlyDeniedLogGroup" ] } } } ] }

另一策略会拒绝所有目标日志组 ARN 路径包含 /production/ 的规则创建操作。

{ "Version": "", "Statement": [ { "Sid": "DenyProductionLogGroupsByARN", "Effect": "Deny", "Action": "cloudwatch:PutInsightRule", "Resource": "*", "Condition": { "ForAnyValue:StringLike": { "cloudwatch:requestInsightRuleLogGroupARNs": [ "arn:aws:logs:*:*:log-group:*/production/*" ] } } } ] }
注意
  • 条件键仅与规则定义内填写的匹配模式字符串做比对,不会与解析后实际指向的日志组进行匹配校验。

  • 若规则采用完整 ARN 格式填写日志组,使用 /production/* 这类条件匹配值将无法命中,原因是完整 ARN 字符串并不以该字段作为前缀。如需匹配以 ARN 形式填写的日志组,应采用 */production/* 作为通配匹配前缀。

Contributor Insights 安全最佳实践

请遵循以下安全最佳实践,保障 Contributor Insights 配置安全。

  • 应用最低权限原则 – 仅为确有日志组数据分析需求的身份主体授予 cloudwatch:PutInsightRulecloudwatch:GetInsightRuleReport 权限

  • 使用条件键限制日志组 – 通过条件键管控身份主体在 Contributor Insights 规则中可引用的日志组

  • 保护敏感字段 – 使用 CloudWatch Logs 数据保护功能,在 Contributor Insights 处理日志前掩蔽敏感日志数据。有关更多信息,请参阅 Protect sensitive log data with masking(使用屏蔽保护敏感日志数据)。

  • 重视贡献者标识键的数据敏感性 – 贡献者标识键会在规则分析结果中展示各类数值,例如 IP 地址、用户标识符

  • 核查跨账户访问 – 审计 AWS Organizations 链接配置,仅预期授权监控账户可创建针对源账户日志组的规则