对 CloudWatch Logs 使用基于身份的策略(IAM policy) - Amazon CloudWatch Logs

对 CloudWatch Logs 使用基于身份的策略(IAM policy)

本主题提供了基于身份的策略的示例,在这些策略中,账户管理员可以向 IAM 身份(即:用户、组和角色)附加权限策略。

重要

我们建议您首先阅读以下介绍性主题,这些主题讲解了管理 CloudWatch Logs 资源访问的基本概念和选项。有关更多信息,请参阅 管理您的 CloudWatch Logs 资源的访问权限概述

本主题包含以下内容:

下面是权限策略的示例:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:*:*" ] } ] }

本策略具有一个语句,该语句授予了创建日志组和日志流、将事件上传到日志流和列出有关日志流的详细信息的权限。

Resource 值结尾的通配符 (*) 表示一个语句,该语句授予了对任何日志组执行 logs:CreateLogGrouplogs:CreateLogStreamlogs:PutLogEventslogs:DescribeLogStreams 操作的权限。要将此权限限制到特定日志组,请使用将资源 ARN 中的通配符 (*) 替换为特定日志组 ARN。有关 IAM policy 语句中各部分的更多信息,请参阅 IAM 用户指南中的 IAM policy 元素引用。有关显示所有 CloudWatch Logs 操作的列表,请参阅 CloudWatch Logs 权限参考

使用 CloudWatch 控制台所需的权限

用户若要能够在 CloudWatch 控制台中使用 CloudWatch Logs,则必须拥有一组最低的权限来允许其描述自己AWS账户中的其他AWS资源。要在 CloudWatch 控制台中使用 CloudWatch Logs,您必须拥有来自以下服务的权限:

  • CloudWatch

  • CloudWatch Logs

  • OpenSearch Service

  • IAM

  • Kinesis

  • Lambda

  • Amazon S3

如果创建比必需的最低权限更为严格的 IAM policy,对于附加了该 IAM policy 的用户, 控制台将无法按预期正常运行。要确保这些用户仍可使用 CloudWatch 控制台,也可向用户附加 CloudWatchReadOnlyAccess 托管策略,如 AWS用于 CloudWatch Logs 的托管(预定义)策略 中所述。

对于只需要调用 AWS CLI 或 CloudWatch Logs API 的用户,无需为其提供最低控制台权限。

对于未使用控制台管理日志订阅的用户,使用 CloudWatch 控制台所需的完整权限集为:

  • cloudwatch:GetMetricData

  • cloudwatch:ListMetrics

  • logs:CancelExportTask

  • logs:CreateExportTask

  • logs:CreateLogGroup

  • logs:CreateLogStream

  • logs:DeleteLogGroup

  • logs:DeleteLogStream

  • logs:DeleteMetricFilter

  • logs:DeleteQueryDefinition

  • logs:DeleteRetentionPolicy

  • logs:DeleteSubscriptionFilter

  • logs:DescribeExportTasks

  • logs:DescribeLogGroups

  • logs:DescribeLogStreams

  • logs:DescribeMetricFilters

  • logs:DescribeQueryDefinitions

  • logs:DescribeQueries

  • logs:DescribeSubscriptionFilters

  • logs:FilterLogEvents

  • logs:GetLogEvents

  • logs:GetLogGroupFields

  • logs:GetLogRecord

  • logs:GetQueryResults

  • logs:PutMetricFilter

  • logs:PutQueryDefinition

  • logs:PutRetentionPolicy

  • logs:StartQuery

  • logs:StopQuery

  • logs:PutSubscriptionFilter

  • logs:TestMetricFilter

对于同时使用控制台来管理日志订阅的用户,还需要以下权限:

  • es:DescribeElasticsearchDomain

  • es:ListDomainNames

  • iam:AttachRolePolicy

  • iam:CreateRole

  • iam:GetPolicy

  • iam:GetPolicyVersion

  • iam:GetRole

  • iam:ListAttachedRolePolicies

  • iam:ListRoles

  • kinesis:DescribeStreams

  • kinesis:ListStreams

  • lambda:AddPermission

  • lambda:CreateFunction

  • lambda:GetFunctionConfiguration

  • lambda:ListAliases

  • lambda:ListFunctions

  • lambda:ListVersionsByFunction

  • lambda:RemovePermission

  • s3:ListBuckets

AWS用于 CloudWatch Logs 的托管(预定义)策略

AWS通过提供由AWS创建和管理的独立 IAM policy 来满足许多常用案例的要求。托管策略可针对常见使用案例授予必要权限,因此,您无需自行调查具体需要哪些权限。有关更多信息,请参阅《IAM 用户指南》中的 AWS 托管式策略

以下 AWS 托管式策略(可附加到您账户中的用户和角色)特定于 CloudWatch Logs:

  • CloudWatchLogsFullAccess – 授予对 CloudWatch Logs 的完全访问权限。

  • CloudWatchLogsReadOnlyAccess – 授予对 CloudWatch Logs 的只读访问权限。

CloudWatchLogsFullAccess

CloudWatchLogsFullAccess 策略授予对 CloudWatch Logs 的完全访问权限。该策略包含 cloudwatch:GenerateQuerycloudwatch:GenerateQueryResultsSummary 权限,以便具有此策略的用户可以从自然语言提示生成 CloudWatch Logs Insights 查询字符串。要查看该策略的全部内容,请参阅《AWS 托管式策略参考指南》中的 CloudWatchLogsFullAccess

CloudWatchLogsReadOnlyAccess

CloudWatchLogsReadOnlyAccess 策略授予对 CloudWatch Logs 的只读访问权限。它包含 cloudwatch:GenerateQuerycloudwatch:GenerateQueryResultsSummary 权限,以便具有此策略的用户可以从自然语言提示生成 CloudWatch Logs Insights 查询字符串。要查看该策略的全部内容,请参阅《AWS 托管式策略参考指南》中的 CloudWatchLogsReadOnlyAccess

CloudWatchOpenSearchDashboardsFullAccess

CloudWatchOpenSearchDashboardsFullAccess 策略授予创建、管理和删除与 OpenSearch Service 的集成以及在这些集成中创建、删除和管理公开发布的日志控制面板的权限。有关更多信息,请参阅 使用 Amazon OpenSearch Service 进行分析

要查看该策略的全部内容,请参阅《AWS 托管式策略参考指南》中的 CloudWatchOpenSearchDashboardsFullAccess

CloudWatchOpenSearchDashboardAccess

CloudWatchOpenSearchDashboardAccess 策略授予查看使用 Amazon OpenSearch Service 分析创建的公开发布的日志控制面板的权限。有关更多信息,请参阅 使用 Amazon OpenSearch Service 进行分析

重要

除了授予此策略之外,要使角色或用户能够查看公开发布的日志控制面板,您还必须在创建与 OpenSearch Service 的集成时指定它们。有关更多信息,请参阅 步骤 1:创建与 OpenSearch Service 的集成

要查看该策略的全部内容,请参阅《AWS 托管式策略参考指南》中的 CloudWatchOpenSearchDashboardAccess

CloudWatchLogsCrossAccountSharingConfiguration

CloudWatchLogsCrossAccountSharingConfiguration 策略授予可创建、管理和查看可观测性访问管理器链接的权限,用于在账户之间共享 CloudWatch 日志资源。有关更多信息,请参阅 CloudWatch 跨账户可观察性

要查看该策略的全部内容,请参阅《AWS 托管式策略参考指南》中的 CloudWatchLogsCrossAccountSharingConfiguration

CloudWatch Logs 对AWS托管策略的更新

查看有关 CloudWatch Logs 的AWS托管策略更新的详细信息(从该服务开始跟踪这些更改开始)。有关此页面更改的自动提示,请订阅 CloudWatch Logs 文档历史记录页面上的 RSS 源。

更改 描述 日期

CloudWatchLogsFullAccess – 更新现有策略。

CloudWatch Logs 已向 CloudWatchLogsFullAccess 添加了权限。

添加了 cloudwatch:GenerateQueryResultsSummary 的权限,以允许生成查询结果的自然语言摘要。

2025 年 5 月 20 日

CloudWatchLogsReadOnlyAccess - 更新现有策略。

CloudWatch Logs 已向 CloudWatchLogsReadOnlyAccess 添加了权限。

添加了 cloudwatch:GenerateQueryResultsSummary 的权限,以允许生成查询结果的自然语言摘要。

2025 年 5 月 20 日

CloudWatchLogsFullAccess – 更新现有策略。

CloudWatch Logs 已向 CloudWatchLogsFullAccess 添加了权限。

添加了 Amazon OpenSearch Service 和 IAM 的权限,以便将 CloudWatch Logs 与 OpenSearch Service 集成,从而实现某些功能。

2024 年 12 月 1 日

CloudWatchOpenSearchDashboardsFullAccess – 新的 IAM 策略。

CloudWatch Logs 新增了 IAM 策略 CloudWatchOpenSearchDashboardsFullAccess。此策略授予创建、管理和删除与 OpenSearch Service 的集成以及在这些集成中创建、管理和删除公开发布的日志控制面板的权限。有关更多信息,请参阅 使用 Amazon OpenSearch Service 进行分析

2024 年 12 月 1 日

CloudWatchOpenSearchDashboardAccess – 新的 IAM 策略。

CloudWatch Logs 新增了 IAM 策略 CloudWatchOpenSearchDashboardAccess。此策略授予查看由 Amazon OpenSearch Service 提供支持的公开发布的日志控制面板的权限。有关更多信息,请参阅 使用 Amazon OpenSearch Service 进行分析

2024 年 12 月 1 日

CloudWatchLogsFullAccess – 更新现有策略。

CloudWatch Logs 已向 CloudWatchLogsFullAccess 添加了权限。

添加了 cloudwatch:GenerateQuery 权限,以便拥有此策略的用户可以根据自然语言提示来生成 CloudWatch Logs Insights 查询字符串。

2023 年 11 月 27 日

CloudWatchLogsReadOnlyAccess - 更新现有策略。

CloudWatch 已向 CloudWatchLogsReadOnlyAccess 添加了权限。

添加了 cloudwatch:GenerateQuery 权限,以便拥有此策略的用户可以根据自然语言提示来生成 CloudWatch Logs Insights 查询字符串。

2023 年 11 月 27 日

CloudWatchLogsReadOnlyAccess - 更新到现有策略

CloudWatch Logs 已向 CloudWatchLogsReadOnlyAccess 添加了权限。

添加了 logs:StartLiveTaillogs:StopLiveTail 权限,以便使用此策略的用户可以使用控制台启动和停止 CloudWatch Logs live tail 会话。有关更多信息,请参阅 使用 Live Tail 近乎实时地查看日志

2023 年 6 月 6 日

CloudWatchLogsCrossAccountSharingConfiguration – 新策略

Amazon CloudWatch Logs 添加了新策略,助力您管理用于分享 Amazon CloudWatch Logs 指标的 CloudWatch 跨账户可观测性链接。

有关更多信息,请参阅 CloudWatch 跨账户可观察性

2022 年 11 月 27 日

CloudWatchLogsReadOnlyAccess - 更新到现有策略

CloudWatch Logs 已向 CloudWatchLogsReadOnlyAccess 添加了权限。

添加了 oam:ListSinksoam:ListAttachedLinks 权限,以便使用此策略的用户可以借助控制台在 CloudWatch 跨账户可观察性中查看源账户共享的数据。

2022 年 11 月 27 日

客户管理型策略示例

您可以创建您自己的自定义 IAM policy,以授予对 CloudWatch Logs 操作和资源的相关权限。您可以将这些自定义策略附加到需要这些权限的用户或组。

本节的用户策略示例介绍如何授予对各 CloudWatch Logs 操作的权限。当您使用 CloudWatch Logs API、AWS开发工具包或 AWS CLI 时,可以使用这些策略。

示例 1:允许对 CloudWatch Logs 进行完全访问

以下策略允许用户访问所有 CloudWatch Logs 操作。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Action": [ "logs:*" ], "Effect": "Allow", "Resource": "*" } ] }

示例 2:允许对 CloudWatch Logs 进行只读访问

AWS提供了一个 CloudWatchLogsReadOnlyAccess 策略,该策略允许对 CloudWatch Logs 数据进行只读访问。该策略包含以下权限。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Action": [ "logs:Describe*", "logs:Get*", "logs:List*", "logs:StartQuery", "logs:StopQuery", "logs:TestMetricFilter", "logs:FilterLogEvents", "logs:StartLiveTail", "logs:StopLiveTail", "cloudwatch:GenerateQuery" ], "Effect": "Allow", "Resource": "*" } ] }

示例 3:允许访问一个日志组

以下策略允许用户在一个指定的日志组中读取和写入日志事件。

重要

Resource 行中日志组名称末尾的 :* 是必需的,以指示该策略适用于此日志组中的所有日志流。如果省略 :*,则不会强制执行该策略。

JSON
{ "Version":"2012-10-17", "Statement":[ { "Action": [ "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:PutLogEvents", "logs:GetLogEvents" ], "Effect": "Allow", "Resource": "arn:aws:logs:us-west-2:123456789012:log-group:SampleLogGroupName:*" } ] }

使用标记和 IAM policy 在日志组级别进行控制

您可以为用户授予某些日志组的访问权限,同时禁止他们访问其他日志组。为此,请标记您的日志组,并使用引用这些标记的 IAM policy。要将标签应用于日志组,您需要拥有 logs:TagResourcelogs:TagLogGroup 权限。这既适用于在创建日志组时为其分配标签,也适用于稍后分配标签。

有关标记日志组的更多信息,请参阅 在 Amazon CloudWatch Logs 中标记日志组

在标记日志组时,您可以为用户授予 IAM policy 以仅允许访问具有特定标记的日志组。例如,以下策略语句仅授予 Green 标签键值为 Team 的日志组的访问权限。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Action": [ "logs:*" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringLike": { "aws:ResourceTag/Team": "Green" } } } ] }

StopQueryStopLiveTail API 操作不与传统意义上的 AWS 资源交互。它们不会返回任何数据、放置任何数据或以任何方式修改资源。相反,它们仅对给定的 Live Tail 会话或给定的 CloudWatch Logs Insights 查询进行操作,这些会话和查询不属于资源。因此,在 IAM policy 中为这些操作指定 Resource 字段时,必须将 Resource 字段的值设置为 *,如下例所示。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:StopQuery", "logs:StopLiveTail" ], "Resource": "*" } ] }

有关使用 IAM policy 语句的更多信息,请参阅 IAM 用户指南中的使用策略控制访问