对 CloudWatch Logs 使用基于身份的策略(IAM 策略) - Amazon CloudWatch Logs
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

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

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

重要

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

注意

CloudWatch Logs 不支持 IAM 策略,这些策略阻止用户使用aws:Resource/key-name或者aws:TagKeys条件键。此外,您无法控制对DescribeLogGroups操作,通过使用aws:ResourceTag/key-name条件键。其他 CloudWatch Logs 操作支持使用aws:ResourceTag/key-name条件键来控制访问。有关使用标签控制访问的更多信息,请参阅使用标签控制对 Amazon Web Services 资源的访问

本主题包含以下内容:

下面是权限策略的示例:

{ "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 策略语句中的部分的更多信息,请参阅IAM 策略元素参考IAM 用户指南。有关显示所有 CloudWatch Logs 操作的列表,请参阅CloudWatch Logs 权限参考

使用 CloudWatch 控制台所需的权限

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

  • CloudWatch

  • CloudWatch Logs (CloudWatch 日志)

  • Amazon ES

  • IAM

  • Kinesis

  • Lambda

  • Amazon S3

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

对于只需要调用的用户,无需为其提供最低控制台权限。Amazon命令行界面或 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:describeSubscriptionFilters

  • logs:filterLogEvents

  • logs:getLogEvents

  • logs:putMetricFilter

  • logs:putQueryDefinition

  • logs:putRetentionPolicy

  • 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

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

Amazon通过提供由创建和管理的独立 IAM 策略来满足许多常用案例的要求。Amazon。托管策略可授予常用案例的必要权限,因此,您可以免去调查都需要哪些权限的工作。有关更多信息,请参阅 。Amazon管理的策略中的IAM 用户指南

以下Amazon托管策略(您可以将它们附加到自己账户中的用户)是特定于 CloudWatch Logs 的:

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

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

注意

您可以通过登录到 IAM 控制台并在该控制台中搜索特定策略来查看这些权限策略。

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

客户托管策略示例

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

示例 1:允许对 CloudWatch Logs 的完全访问权限

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

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

示例 2:允许对 CloudWatch Logs 的只读访问权限

Amazon提供CloudWatchLogsReadOnlyAccess策略允许对 CloudWatch Logs 数据进行只读访问。此策略包含以下权限。

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

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

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

{ "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 策略进行控制

您可以为用户授予某些日志组的访问权限,同时禁止他们访问其他日志组。为此,请标记您的日志组,并使用引用这些标签的 IAM 策略。

有关标记日志组的更多信息,请参阅标记亚马逊 CloudWatch Logs 中的日志组

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

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

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