为 CloudWatch使用基于身份的策略(IAM 策略) - Amazon CloudWatch

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

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

本主题提供基于身份的策略的示例,这些示例展示账户管理员如何将权限策略附加到 IAM 身份(即用户、组和角色),从而授予对 CloudWatch 资源执行操作的权限。

重要

我们建议您首先阅读以下介绍性主题,这些主题说明了可用于管理 CloudWatch 资源访问的基本概念和选项。有关更多信息,请参阅 访问控制。)

本主题的各个部分涵盖以下内容:

下面介绍权限策略示例。

{ "Version": "2012-10-17", "Statement":[{ "Effect":"Allow", "Action":["cloudwatch:GetMetricStatistics","cloudwatch:ListMetrics"], "Resource":"*", "Condition":{ "Bool":{ "aws:SecureTransport":"true" } } } ] }

本示例策略包含一个语句,该语句向一个组授予执行两个 CloudWatch 操作(cloudwatch:GetMetricStatisticsdatacloudwatch:ListMetrics)的权限,但前提是该组对请求使用 SSL ("aws:SecureTransport":"true")。有关 IAM 政策声明,请参阅 指定策略元素: 行动、影响和负责人IAM政策元素参考IAM 用户指南.

使用 CloudWatch 控制台所需的权限

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

  • Amazon EC2 Auto Scaling

  • CloudTrail

  • CloudWatch

  • CloudWatch Events

  • CloudWatch Logs

  • Amazon EC2

  • Amazon ES

  • IAM

  • Kinesis

  • Lambda

  • Amazon S3

  • Amazon SNS

  • Amazon SQS

  • Amazon SWF

  • X-Ray(如果您使用的是 ServiceLens 功能)

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

对于仅调用 AWS CLI 或 CloudWatch API 的用户,您不需要允许最低控制台权限。

下面列出了使用 CloudWatch 控制台所需的一整套权限:

  • application-autoscaling:DescribeScalingPolicies

  • autoscaling:DescribeAutoScalingGroups

  • autoscaling:DescribePolicies

  • cloudtrail:DescribeTrails

  • cloudwatch:DeleteAlarms

  • cloudwatch:DescribeAlarmHistory

  • cloudwatch:DescribeAlarms

  • cloudwatch:GetMetricData

  • cloudwatch:GetMetricStatistics

  • cloudwatch:ListMetrics

  • cloudwatch:PutMetricAlarm

  • cloudwatch:PutMetricData

  • ec2:DescribeInstances

  • ec2:DescribeTags

  • ec2:DescribeVolumes

  • es:DescribeElasticsearchDomain

  • es:ListDomainNames

  • events:DeleteRule

  • events:DescribeRule

  • events:DisableRule

  • events:EnableRule

  • events:ListRules

  • events:PutRule

  • iam:AttachRolePolicy

  • iam:CreateRole

  • iam:GetPolicy

  • iam:GetPolicyVersion

  • iam:GetRole

  • iam:ListAttachedRolePolicies

  • iam:ListRoles

  • kinesis:DescribeStream

  • kinesis:ListStreams

  • lambda:AddPermission

  • lambda:CreateFunction

  • lambda:GetFunctionConfiguration

  • lambda:ListAliases

  • lambda:ListFunctions

  • lambda:ListVersionsByFunction

  • lambda:RemovePermission

  • logs:CancelExportTask

  • logs:CreateExportTask

  • logs:CreateLogGroup

  • logs:CreateLogStream

  • logs:DeleteLogGroup

  • logs:DeleteLogStream

  • logs:DeleteMetricFilter

  • logs:DeleteRetentionPolicy

  • logs:DeleteSubscriptionFilter

  • logs:DescribeExportTasks

  • logs:DescribeLogGroups

  • logs:DescribeLogStreams

  • logs:DescribeMetricFilters

  • logs:DescribeQueries

  • logs:DescribeSubscriptionFilters

  • logs:FilterLogEvents

  • logs:GetLogGroupFields

  • logs:GetLogRecord

  • logs:GetLogEvents

  • logs:GetQueryResults

  • logs:PutMetricFilter

  • logs:PutRetentionPolicy

  • logs:PutSubscriptionFilter

  • logs:StartQuery

  • logs:StopQuery

  • logs:TestMetricFilter

  • s3:CreateBucket

  • s3:ListBucket

  • sns:CreateTopic

  • sns:GetTopicAttributes

  • sns:ListSubscriptions

  • sns:ListTopics

  • sns:SetTopicAttributes

  • sns:Subscribe

  • sns:Unsubscribe

  • sqs:GetQueueAttributes

  • sqs:GetQueueUrl

  • sqs:ListQueues

  • sqs:SetQueueAttributes

  • swf:CreateAction

  • swf:DescribeAction

  • swf:ListActionTemplates

  • swf:RegisterAction

  • swf:RegisterDomain

  • swf:UpdateAction

此外,要查看 ServiceLens 中的服务地图,您需要 AWSXrayReadOnlyAccess

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

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

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

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

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

  • CloudWatchActionsEC2Access – 授予对 CloudWatch 警报和指标,以及 Amazon EC2 元数据的只读访问权限。授予对 EC2 实例的停止、终止和重启 API 操作的访问权限。

注意

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

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

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

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

  • CloudWatchSyntheticsFullAccessCloudWatchSyntheticsReadOnlyAccess – 为了查看 Canary 详细信息和 Canary 测试运行的结果。

  • AmazonS3ReadOnlyAccessCloudWatchReadOnlyAccess – 为了能够在 CloudWatch 控制台中读取所有 Synthetics 数据。

  • AWSLambdaReadOnlyAccess – 为了能够查看 Canary 使用的源代码。

  • CloudWatchSyntheticsFullAccess – 使您能够创建 Canary。此外,要创建将为其创建新 IAM 角色的 Canary,您还需要以下内联策略语句:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:CreateRole", "iam:CreatePolicy", "iam:AttachRolePolicy" ], "Resource": [ "arn:aws:iam::*:role/service-role/CloudWatchSyntheticsRole*", "arn:aws:iam::*:policy/service-role/CloudWatchSyntheticsPolicy*" ] } ] }
    重要

    通过向用户授予 iam:CreateRoleiam:CreatePolicyiam:AttachRolePolicy 权限,用户将获得对 AWS 账户的完全管理访问权限。例如,具有这些权限的用户可以创建一个对所有资源具有完全权限的策略,并将该策略附加到任何角色。请谨慎地为相关人员授予这些权限。

    有关附加策略和向用户授予权限的信息,请参阅更改 IAM 用户的权限为用户或角色嵌入内联策略

客户托管的策略示例

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

示例 #1 允许用户完全访问 CloudWatch

以下策略允许用户对所有 CloudWatch 操作、CloudWatch Logs 操作和 Amazon SNS 操作进行访问以及对 Amazon EC2 Auto Scaling 进行只读访问。

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

示例 2 允许只读访问 CloudWatch

以下策略允许用户对 CloudWatch 进行只读访问以及查看 Amazon EC2 Auto Scaling 操作、CloudWatch 指标、CloudWatch Logs 数据和警报相关 Amazon SNS 数据。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "autoscaling:Describe*", "cloudwatch:Describe*", "cloudwatch:Get*", "cloudwatch:List*", "logs:Get*", "logs:Describe*", "sns:Get*", "sns:List*" ], "Effect": "Allow", "Resource": "*" } ] }

示例 3 停止或终止 Amazon EC2 实例

以下策略允许 CloudWatch 警报操作停止或终止 EC2 实例。在以下示例中,GetMetricStatistics、ListMetrics 和 DescribeAlarms 操作是可选的。建议您选择这些操作以确保正确停止或终止了实例。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "cloudwatch:PutMetricAlarm", "cloudwatch:GetMetricStatistics", "cloudwatch:ListMetrics", "cloudwatch:DescribeAlarms" ], "Sid": "00000000000000", "Resource": [ "*" ], "Effect": "Allow" }, { "Action": [ "ec2:DescribeInstanceStatus", "ec2:DescribeInstances", "ec2:StopInstances", "ec2:TerminateInstances" ], "Sid": "00000000000000", "Resource": [ "*" ], "Effect": "Allow" } ] }