View a markdown version of this page

对日志使用基于身份的策略(IAM 策略) CloudWatch - 亚马逊 CloudWatch 日志

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

对日志使用基于身份的策略(IAM 策略) CloudWatch

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

重要

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

本主题包含以下内容:

下面是权限策略的示例:

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

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

Resource值中的通配符 (*) 授予对任何 CloudWatch 日志资源执行列出的操作的权限。

  • 要限制特定日志组操作的权限(例如,,DescribeLogStreams)CreateLogGroup,请将通配符替换为日志组 ARN— arn:aws:logs:us-west-2:123456789012:log-group:MyLogGroup

  • 要限制特定日志流操作(例如,CreateLogStream、PutLogEvents)的权限,请将通配符替换为日志流 ARN—arn:aws:logs:us-west-2:123456789012:log-group:MyLogGroup:*(匹配所有流)或arn:aws:logs:us-west-2:123456789012:log-group:MyLogGroup:log-stream:MyStream(特定流)

有关每个 API 所需的资源类型,请参阅服务授权参考。

使用 CloudWatch 控制台所需的权限

要让用户在 CloudWatch 控制台中使用 CloudWatch 日志,该用户必须拥有一组允许用户描述其 AWS 账户中的其他 AWS 资源的最低权限。要在 CloudWatch 控制台中使用 CloudWatch 日志,您必须拥有以下服务的权限:

  • CloudWatch

  • CloudWatch 日志

  • OpenSearch 服务

  • IAM

  • Kinesis

  • Lambda

  • Amazon S3

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

您无需为仅调用 AWS CLI 或 CloudWatch 日志 API 的用户提供最低控制台权限。

对于不使用 CloudWatch 控制台管理日志订阅的用户,使用控制台所需的全部权限为:

  • 云观察:GetMetricData

  • 云表:ListMetrics

  • 日志:CancelExportTask

  • 日志:CreateExportTask

  • 日志:CreateLogGroup

  • 日志:CreateLogStream

  • 日志:DeleteLogGroup

  • 日志:DeleteLogStream

  • 日志:DeleteMetricFilter

  • 日志:DeleteQueryDefinition

  • 日志:DeleteRetentionPolicy

  • 日志:DeleteSubscriptionFilter

  • 日志:DescribeExportTasks

  • 日志:DescribeLogGroups

  • 日志:DescribeLogStreams

  • 日志:DescribeMetricFilters

  • 日志:DescribeQueryDefinitions

  • 日志:DescribeQueries

  • 日志:DescribeSubscriptionFilters

  • 日志:FilterLogEvents

  • 日志:GetLogEvents

  • 日志:GetLogGroupFields

  • 日志:GetLogRecord

  • 日志:GetQueryResults

  • 日志:PutMetricFilter

  • 日志:PutQueryDefinition

  • 日志:PutRetentionPolicy

  • 日志:StartQuery

  • 日志:StopQuery

  • 日志:PutSubscriptionFilter

  • 日志:TestMetricFilter

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

  • 是:DescribeElasticsearchDomain

  • 是:ListDomainNames

  • 我是:AttachRolePolicy

  • 我是:CreateRole

  • 我是:GetPolicy

  • 我是:GetPolicyVersion

  • 我是:GetRole

  • 我是:ListAttachedRolePolicies

  • 我是:ListRoles

  • kinesis:DescribeStreams

  • kinesis:ListStreams

  • lambda: AddPermission

  • lambda: CreateFunction

  • lambda: GetFunctionConfiguration

  • lambda: ListAliases

  • lambda: ListFunctions

  • lambda: ListVersionsByFunction

  • lambda: RemovePermission

  • s3:ListBuckets

AWS CloudWatch 日志的托管(预定义)策略

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

您可以将以下 AWS 托管策略附加到账户中的用户和角色,这些策略特定于 CloudWatch 日志:

  • CloudWatchLogsFullAccess— 授予对 CloudWatch 日志的完全访问权限。

  • CloudWatchLogsReadOnlyAccess— 授予对 CloudWatch 日志的只读访问权限。

CloudWatchLogsFullAccess

该CloudWatchLogsFullAccess政策授予对 CloudWatch 日志的完全访问权限。该策略包括cloudwatch:GenerateQuery和cloudwatch:GenerateQueryResultsSummary权限,因此使用此策略的用户可以根据自然语言提示生成 L CloudWatch ogs Insights 查询字符串。要查看策略的完整内容,请参阅CloudWatchLogsFullAccess《AWS 托管策略参考指南》。

CloudWatchLogsReadOnlyAccess

该CloudWatchLogsReadOnlyAccess策略授予对 CloudWatch 日志的只读访问权限。它包括cloudwatch:GenerateQuery和cloudwatch:GenerateQueryResultsSummary权限,因此具有此策略的用户可以根据自然语言提示生成 L CloudWatch ogs Insights 查询字符串。要查看策略的完整内容,请参阅CloudWatchLogsReadOnlyAccess《AWS 托管策略参考指南》。

CloudWatchOpenSearchDashboardsFullAccess

该CloudWatchOpenSearchDashboardsFullAccess政策授予创建、管理和删除与 Serv OpenSearch ice 集成的权限,以及在这些集成中创建、删除和管理已售日志仪表板的权限。

要查看策略的完整内容,请参阅CloudWatchOpenSearchDashboardsFullAccess《AWS 托管策略参考指南》。

CloudWatchOpenSearchDashboardAccess

该CloudWatchOpenSearchDashboardAccess政策授予查看通过 Amazon OpenSearch Service 分析创建的销售日志仪表板的访问权限。

要查看策略的完整内容,请参阅CloudWatchOpenSearchDashboardAccess《AWS 托管策略参考指南》。

CloudWatchLogsCrossAccountSharingConfiguration

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

要查看策略的完整内容,请参阅CloudWatchLogsCrossAccountSharingConfiguration《AWS 托管策略参考指南》。

CloudWatchLogsAPIKeyAccess

该CloudWatchLogsAPIKeyAccess策略启用 CloudWatch 日志 API 密钥身份验证和加密日志提取。此策略授予使用持有者令牌进行身份验证以及将日志事件写入CloudWatch 日志的 AWS KMS 权限,以及在加密日志时解密和生成数据密钥的额外权限。

此策略授予以下权限:

  • logs— 允许委托人通过 API 密钥持有者令牌进行身份验证并将日志事件写入日志流 CloudWatch 。

  • kms— 允许委托人读取 AWS KMS 密钥元数据、生成用于加密的数据密钥和解密数据。这些权限允许服务使用客户管理的 AWS KMS 密钥加密日志数据,从而支持加密日志。 CloudWatch 访问权限仅限于通过 CloudWatch 日志服务调用的操作。

要查看有关策略(包括 JSON 策略文档的最新版本)的更多信息,请参阅《AWS 托管式策略参考指南》中的 CloudWatchLogsAPIKeyAccess。

CloudWatch 将更新记录到 AWS 托管策略

查看自该服务开始跟踪这些更改以来 CloudWatch 日志 AWS 管理策略更新的详细信息。要自动收到有关此页面更改的警报,请订阅 CloudWatch 日志文档历史记录页面上的 RSS 提要。

更改 描述 日期

CloudWatchLogsAPIKeyAccess – 新策略。

CloudWatch Logs 添加了新的托管策略CloudWatchLogsAPIKeyAccess。

此策略启用 CloudWatch 日志 API 密钥身份验证和加密日志提取,授予使用持有者令牌进行身份验证以及向日志写入日志事件的权限。 CloudWatch

2026 年 2 月 17 日

CloudWatchLogsFullAccess – 对现有策略的更新。

CloudWatch 日志向添加了权限CloudWatchLogsFullAccess。

添加了可观测性管理操作的权限,以允许对遥测管道及 S3 表集成进行只读访问。

2025 年 12 月 2 日

CloudWatchLogsReadOnlyAccess – 对现有策略的更新。

CloudWatch 日志向添加了权限CloudWatchLogsReadOnlyAccess。

添加了可观测性管理操作的权限,以允许对遥测管道及 S3 表集成进行只读访问。

2025 年 12 月 2 日

CloudWatchLogsFullAccess – 对现有策略的更新。

CloudWatch 日志向添加了权限CloudWatchLogsFullAccess。

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

2025 年 5 月 20 日

CloudWatchLogsReadOnlyAccess – 对现有策略的更新。

CloudWatch 日志向添加了权限CloudWatchLogsReadOnlyAccess。

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

2025 年 5 月 20 日

CloudWatchLogsFullAccess – 对现有策略的更新。

CloudWatch 日志向添加了权限CloudWatchLogsFullAccess。

添加了 Amazon OpenSearch Service 和 IAM 的权限,以启用某些功能的 CloudWatch 日志与 OpenSearch 服务的集成。

2024 年 12 月 1 日

CloudWatchOpenSearchDashboardsFullAccess— 新的 IAM 政策。

CloudWatch Logs 添加了新的 IAM 策略CloudWatchOpenSearchDashboardsFullAccess。-该策略授予创建、管理和删除与 Serv OpenSearch ice 集成的权限,以及在这些集成中创建、管理和删除已售日志仪表板的权限。

2024 年 12 月 1 日

CloudWatchOpenSearchDashboardAccess— 新的 IAM 政策。

CloudWatch Logs 添加了新的 IAM 策略CloudWatchOpenSearchDashboardAccess。-该策略授予查看由 Amazon OpenSearch Service其提供支持的供应商日志仪表板的访问权限。

2024 年 12 月 1 日

CloudWatchLogsFullAccess – 对现有策略的更新。

CloudWatch 日志向添加了权限CloudWatchLogsFullAccess。

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

2023 年 11 月 27 日

CloudWatchLogsReadOnlyAccess – 对现有策略的更新。

CloudWatch 向... 添加了权限CloudWatchLogsReadOnlyAccess。

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

2023 年 11 月 27 日

CloudWatchLogsReadOnlyAccess:对现有策略的更新

CloudWatch 日志向添加了权限CloudWatchLogsReadOnlyAccess。

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

2023 年 6 月 6 日

CloudWatchLogsCrossAccountSharingConfiguration:新策略

CloudWatch Logs 添加了一项新策略,使您能够管理共享 CloudWatch 日志组的 CloudWatch跨账户可观察性链接。

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

2022 年 11 月 27 日

CloudWatchLogsReadOnlyAccess:对现有策略的更新

CloudWatch 日志向添加了权限CloudWatchLogsReadOnlyAccess。

添加了oam:ListSinks和oam:ListAttachedLinks权限,这样具有此策略的用户就可以使用控制台查看 CloudWatch 跨账户可观察性中源账户共享的数据。

2022 年 11 月 27 日

客户管理型策略示例

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

在本节中,您可以找到授予各种 CloudWatch 日志操作权限的用户策略示例。这些策略在您使用 CloudWatch 日志 API、 AWS 软件开发工具包或时起 AWS CLI作用。

示例 1:允许完全访问 CloudWatch 日志

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

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

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

AWS 提供允许对 CloudWatch 日志数据进行只读访问的CloudWatchLogsReadOnlyAccess策略。该策略包含以下权限。

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:允许访问一个日志组/日志流

CloudWatch 日志有两种具有不同 ARN 格式的资源类型:

  • 日志组:arn:aws:logs:region:account:log-group:LogGroupName

  • 日志流:arn:aws:logs:region:account:log-group:LogGroupName:log-stream:StreamName

在编写 IAM 策略时,您使用的 ARN 格式必须与 API 授权的资源类型相匹配。有关每个 API 所需的资源类型,请参阅服务授权参考。

示例 3a:允许访问特定日志组上的日志组级操作
{ "Version":"2012-10-17", "Statement":[ { "Action": [ "logs:DeleteLogGroup", "logs:PutRetentionPolicy", "logs:PutSubscriptionFilter", "logs:DescribeLogStreams" ], "Effect": "Allow", "Resource": "arn:aws:logs:us-west-2:123456789012:log-group:SampleLogGroupName" } ] }

这些操作对log-group资源类型进行授权。支持标准 ARN 格式(不支持:*)。

示例 3b:允许访问特定日志组上的日志流级别操作
{ "Version":"2012-10-17", "Statement":[ { "Action": [ "logs:CreateLogStream", "logs:PutLogEvents", "logs:GetLogEvents" ], "Effect": "Allow", "Resource": "arn:aws:logs:us-west-2:123456789012:log-group:SampleLogGroupName:*" } ] }

这些操作对log-stream资源类型进行授权。必须使用:*后缀来匹配日志组中的所有日志流,或者使用:log-stream:StreamName指定特定的流。

示例 3c:日志组和日志流操作的组合策略
{ "Version":"2012-10-17", "Statement":[ { "Action": [ "logs:DeleteLogGroup", "logs:PutRetentionPolicy", "logs:DescribeLogStreams", "logs:FilterLogEvents" ], "Effect": "Allow", "Resource": "arn:aws:logs:us-west-2:123456789012:log-group:SampleLogGroupName" }, { "Action": [ "logs:CreateLogStream", "logs:PutLogEvents", "logs:GetLogEvents" ], "Effect": "Allow", "Resource": "arn:aws:logs:us-west-2:123456789012:log-group:SampleLogGroupName:*" } ] }

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

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

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

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

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

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

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

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