AWS CloudTrail
用户指南 (版本 1.0)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

向 CloudTrail 用户授予自定义权限

CloudTrail 策略向使用 CloudTrail 的用户授予权限。如果您需要向用户授予不同权限,可将 CloudTrail 策略挂载到 IAM 组或用户。您可以编辑策略,使之包括或排除特定权限。您还可以创建自己的自定义策略。策略是一些 JSON 文档,它们定义了允许用户执行的操作以及允许用户对哪些资源执行这些操作。

只读访问权限

以下示例展示了一个策略,该策略授予对 CloudTrail 跟踪的只读访问权。它对用户授予查看跟踪信息的权限,而不是创建或更新跟踪的权限。此策略还授予了读取 Amazon S3 存储桶中的对象的权限,而不是创建或删除这些对象的权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetBucketLocation" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "cloudtrail:DescribeTrails", "cloudtrail:GetTrailStatus", "cloudtrail:LookupEvents", "s3:ListAllMyBuckets", "kms:ListAliases" ], "Resource": "*" } ] }

在这些策略语句中,Effect 元素指定是允许还是拒绝操作。Action 元素列出了允许用户执行的特定操作。Resource 元素列出允许用户对其执行这些操作的 AWS 资源。对于控制对 CloudTrail 操作的访问的策略,Resource 元素始终设置为 *(一个表示“所有资源”的通配符)。

Action 元素中的值对应于服务支持的 API。操作前附加了 cloudtrail: 以表示其指的是 CloudTrail 操作。您可以在 Action 元素中使用 * 通配符,如以下示例所示:

  • "Action": ["cloudtrail:*Logging"]

    这允许以“Logging”结尾的所有 CloudTrail 操作(StartLoggingStopLogging)。

  • "Action": ["cloudtrail:*"]

    这允许所有 CloudTrail 操作,但不允许其他 AWS 服务的操作。

  • "Action": ["*"]

    这将允许所有 AWS 操作。此权限适合授予充当您账户的 AWS 管理员的用户。

只读策略不对用户授予执行 CreateTrailUpdateTrailStartLoggingStopLogging 操作的权限。具有此策略的用户不能够创建跟踪、更新跟踪或启用和关闭日志记录。有关 CloudTrail 操作的列表,请参阅 AWS CloudTrail API Reference

完全访问权限

以下示例展示了一个授予对 CloudTrail 的完全访问权限的策略。它对用户授予执行所有 CloudTrail 操作的权限。它还允许用户管理 Amazon S3 存储桶中的文件、管理 CloudWatch Logs 对 CloudTrail 日志事件的监控方式,以及管理与用户关联的账户中的 Amazon SNS 主题。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sns:AddPermission", "sns:CreateTopic", "sns:DeleteTopic", "sns:ListTopics", "sns:SetTopicAttributes", "sns:GetTopicAttributes" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:DeleteBucket", "s3:GetObject", "s3:ListAllMyBuckets", "s3:PutBucketPolicy", "s3:GetBucketLocation", "s3:GetBucketPolicy" ], "Resource": "*" }, { "Effect": "Allow", "Action": "cloudtrail:*", "Resource": "*" }, { "Effect": "Allow", "Action": [ "logs:CreateLogGroup" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole", "iam:ListRoles", "iam:GetRolePolicy", "iam:GetUser" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "kms:ListKeys", "kms:ListAliases" ], "Resource": "*" } ] }

控制针对特定跟踪的用户操作权限

您可以使用资源级权限控制用户对 CloudTrail 跟踪执行特定操作的能力。

例如,您不想贵公司的开发人员组中的用户开始或停止对特定跟踪的日志记录,但想对他们授予权限以对该跟踪执行 DescribeTrailsGetTrailStatus 操作。您希望开发人员组中的用户能够对自己创建和管理的跟踪执行 StartLoggingStopLogging 操作。

您可以创建两条策略语句,然后将它们挂载到此开发人员用户组。

在第一条策略中,您拒绝对您指定的跟踪 ARN 执行 StartLoggingStopLogging 操作。在下面的示例中,跟踪 ARN 为 arn:aws:cloudtrail:us-east-2:111122223333:trail/Default

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1446057698000", "Effect": "Deny", "Action": [ "cloudtrail:StartLogging", "cloudtrail:StopLogging" ], "Resource": [ "arn:aws:cloudtrail:us-east-2:111122223333:trail/Default" ] } ] }

在第二条策略中,允许对所有 CloudTrail 资源执行 DescribeTrailsGetTrailStatus 操作:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1446072643000", "Effect": "Allow", "Action": [ "cloudtrail:DescribeTrails", "cloudtrail:GetTrailStatus" ], "Resource": [ "*" ] } ] }

如果开发人员组中的用户尝试针对您在第一条策略中指定的跟踪启动或停止日志记录,该用户会收到拒绝访问异常。该开发人员组中的用户可针对自己创建和管理的跟踪启动和停止日志记录。

以下 CLI 示例显示已在名为 devgroup 的 AWS CLI 配置文件中配置开发人员组。首先,devgroup 的用户运行 describe-trails 命令。

$ aws --profile devgroup cloudtrail describe-trails

该命令成功完成:

{ "trailList": [ { "IncludeGlobalServiceEvents": true, "Name": "Default", "TrailARN": "arn:aws:cloudtrail:us-east-2:111122223333:trail/Default", "IsMultiRegionTrail": false, "S3BucketName": "myS3bucket ", "HomeRegion": "us-east-2" } ] }

然后,该用户针对您在第一条策略中指定的跟踪运行 get-trail-status 命令。

$ aws --profile devgroup cloudtrail get-trail-status --name Default

该命令成功完成:

{ "LatestDeliveryTime": 1449517556.256, "LatestDeliveryAttemptTime": "2015-12-07T19:45:56Z", "LatestNotificationAttemptSucceeded": "", "LatestDeliveryAttemptSucceeded": "2015-12-07T19:45:56Z", "IsLogging": true, "TimeLoggingStarted": "2015-12-07T19:36:27Z", "StartLoggingTime": 1449516987.685, "StopLoggingTime": 1449516977.332, "LatestNotificationAttemptTime": "", "TimeLoggingStopped": "2015-12-07T19:36:17Z" }

接下来,一位 devgroup 用户针对同一个跟踪运行 stop-logging 命令。

$ aws --profile devgroup cloudtrail stop-logging --name Default

该命令返回拒绝访问异常:

A client error (AccessDeniedException) occurred when calling the StopLogging operation: Unknown

该用户针对同一个跟踪运行 start-logging 命令。

$ aws --profile devgroup cloudtrail start-logging --name Default

该命令返回拒绝访问异常:

A client error (AccessDeniedException) occurred when calling the StartLogging operation: Unknown

通过资源级权限,您可以授予或拒绝对您的账户内特定跟踪的访问。

授予在 CloudTrail 控制台中查看 AWS Config 信息的权限

您可以在 CloudTrail 控制台中查看事件信息,包括与该事件相关的资源。对于这些资源,您可以选择 AWS Config 图标在 AWS Config 控制台中查看资源的时间表。可将此策略挂载到您的用户,以对其授予只读 AWS Config 访问权。该策略不对他们授予在 AWS Config 中更改设置的权限。

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

有关更多信息,请参阅 在 AWS Config 中查看引用的资源

附加信息

要了解有关创建 IAM 用户、组、策略和权限的更多信息,请参阅 IAM 用户指南 中的 创建您的第一个 IAM 用户和管理员访问管理