本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
适用于 Amazon S3 存储桶政策 CloudTrail
默认情况下,Simple Storage Service(Amazon S3)存储桶和对象都是私有的。仅资源所有者(创建存储桶的 AWS 账户)能够访问存储桶及其包含的对象。资源所有者可以通过编写访问策略来向其他资源和用户授予访问权。
要创建或修改 Simple Storage Service(Amazon S3)存储桶以接收企业跟踪记录的日志文件,您必须修改存储桶策略。有关更多信息,请参阅 使用为组织创建跟踪 AWS CLI。
要将日志文件传送到 S3 存储桶, CloudTrail 必须具有所需的权限,并且不能将其配置为申请方付款存储桶。
CloudTrail 为您在策略中添加以下字段:
-
允许的 SIDs
-
存储桶名称
-
的服务主体名称 CloudTrail
-
存储日志文件的文件夹的名称,包括存储桶名称、前缀(如果您已指定)和您的 AWS 账户 ID
作为安全最佳实践,请将 aws:SourceArn
条件密钥添加到 Simple Storage Service(Amazon S3)存储桶策略。IAM全局条件密钥aws:SourceArn
有助于确保仅针对一个或多个特定跟踪 CloudTrail 写入 S3 存储桶。的值始终aws:SourceArn
是使用存储桶存储日志的跟踪(或跟踪数组ARNs)的值。ARN确保将 aws:SourceArn
条件密钥添加到现有跟踪记录的 S3 存储桶策略。
注意
如果您错误配置了跟踪(例如,无法访问 S3 存储桶),则 CloudTrail 会尝试将日志文件重新传送到您的 S3 存储桶,持续 30 天,这些 attempted-to-deliver 事件将按标准费用收费。 CloudTrail 为避免配置错误的跟踪产生费用,您需要删除跟踪。
以下策略 CloudTrail 允许将日志文件写入支持的存储桶 AWS 区域。Replace(替换) amzn-s3-demo-bucket
,
[optionalPrefix]/
, myAccountID
,
region
,以及 trailName
使用适合您的配置的值。
S3 存储桶策略
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSCloudTrailAclCheck20150319", "Effect": "Allow", "Principal": {"Service": "cloudtrail.amazonaws.com"}, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:cloudtrail:region
:myAccountID
:trail/trailName
" } } }, { "Sid": "AWSCloudTrailWrite20150319", "Effect": "Allow", "Principal": {"Service": "cloudtrail.amazonaws.com"}, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/[optionalPrefix]/
AWSLogs/myAccountID
/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceArn": "arn:aws:cloudtrail:region
:myAccountID
:trail/trailName
" } } } ] }
有关的更多信息 AWS 区域,请参阅CloudTrail 支持的区域。
目录
指定用于 CloudTrail 日志传输的现有存储桶
如果您将现有 S3 存储桶指定为日志文件传输的存储位置,则必须将允许 CloudTrail 写入该存储桶的策略附加到该存储桶。
注意
最佳做法是使用专用 S3 存储桶存储 CloudTrail 日志。
将所需的 CloudTrail 策略添加到 Amazon S3 存储桶
打开 Amazon S3 控制台,网址为https://console.aws.amazon.com/s3/
。 -
选择要将日志文件传送 CloudTrail 到的存储桶,然后选择权限。
-
选择编辑。
-
将 S3 bucket policy 复制到 Bucket Policy Editor 窗口。用您的存储桶名称、前缀和账号替换斜体占位符。如果您在创建跟踪时指定了前缀,请在此处包含该前缀。前缀是 S3 对象键的可选附加内容,可在存储桶中创建类似于文件夹的组织结构。
注意
如果现有存储桶已附加了一个或多个策略,请添加用于 CloudTrail 访问该策略的声明。评估生成的权限集,确保它们适合于访问存储桶的用户。
从其他账户接收日志文件
您可以配置 CloudTrail 为将来自多个 AWS 账户的日志文件传送到单个 S3 存储桶。有关更多信息,请参阅 接收来自多个账户的 CloudTrail 日志文件。
创建或更新 Simple Storage Service(Amazon S3)存储桶以用于存储组织跟踪的日志文件
您必须指定一个 Simple Storage Service(Amazon S3)存储桶以接收组织跟踪的日志文件。此存储桶必须有 CloudTrail 允许将组织的日志文件放入存储桶的策略。
以下是名为的 Amazon S3 存储桶的示例策略 amzn-s3-demo-bucket
,该账户归该组织的管理账户所有。Replace(替换) amzn-s3-demo-bucket
,
region
, managementAccountID
,
trailName
,以及 o-organizationID
与贵组织的价值观相结合
此存储桶策略包含三条语句。
-
第一条语句允许 CloudTrail 对亚马逊 S3 存储桶调用 Amazon S3
GetBucketAcl
操作。 -
第二条语句支持在跟踪仅从组织跟踪更改为该账户的跟踪时进行日志记录。
-
第三条语句支持对组织跟踪进行日志记录。
示例策略包括 Simple Storage Service(Amazon S3)存储桶策略的 aws:SourceArn
条件密钥。IAM全局条件密钥aws:SourceArn
有助于确保仅针对一个或多个特定跟踪 CloudTrail 写入 S3 存储桶。在组织跟踪中,的值aws:SourceArn
必须ARN是管理账户拥有的跟踪,并且使用管理账户 ID。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AWSCloudTrailAclCheck20150319", "Effect": "Allow", "Principal": { "Service": [ "cloudtrail.amazonaws.com" ] }, "Action": "s3:GetBucketAcl", "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:cloudtrail:region
:managementAccountID
:trail/trailName
" } } }, { "Sid": "AWSCloudTrailWrite20150319", "Effect": "Allow", "Principal": { "Service": [ "cloudtrail.amazonaws.com" ] }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/AWSLogs/managementAccountID
/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceArn": "arn:aws:cloudtrail:region
:managementAccountID
:trail/trailName
" } } }, { "Sid": "AWSCloudTrailOrganizationWrite20150319", "Effect": "Allow", "Principal": { "Service": [ "cloudtrail.amazonaws.com" ] }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/AWSLogs/o-organizationID
/*", "Condition": { "StringEquals": { "s3:x-amz-acl": "bucket-owner-full-control", "aws:SourceArn": "arn:aws:cloudtrail:region
:managementAccountID
:trail/trailName
" } } } ] }
此示例策略不允许来自成员账户的任何用户访问为组织创建的日志文件。默认情况下,组织日志文件只能由管理账户访问。有关如何允许成员账户中的IAM用户读取 Amazon S3 存储桶的信息,请参阅在 AWS 账户之间共享 CloudTrail 日志文件。
Simple Storage Service(Amazon S3)存储桶策略问题排查
以下部分说明如何对 S3 存储桶策略进行问题排查。
注意
如果您错误配置了跟踪(例如,无法访问 S3 存储桶),则 CloudTrail 会尝试将日志文件重新传送到您的 S3 存储桶,持续 30 天,这些 attempted-to-deliver 事件将按标准费用收费。 CloudTrail 为避免配置错误的跟踪产生费用,您需要删除跟踪。
Simple Storage Service(Amazon S3)策略配置常见错误
在创建或更新跟踪的过程中创建新存储桶时,会将所需的权限 CloudTrail附加到您的存储桶。存储桶策略使用服务主体名称"cloudtrail.amazonaws.com"
,该名称允许 CloudTrail 为所有区域传送日志。
如果没有 CloudTrail 为某个区域传送日志,则您的存储桶可能有IDs为每个区域指定 CloudTrail 账户的较旧策略。此策略仅 CloudTrail允许传输指定区域的日志。
作为最佳实践,请更新策略以使用 CloudTrail 服务主体的权限。为此,请将账户 ID ARNs 替换为服务主体名称:"cloudtrail.amazonaws.com"
。这 CloudTrail 允许为当前和新区域传送日志。作为安全最佳实践,请将 aws:SourceArn
或 aws:SourceAccount
条件密钥添加到 Simple Storage Service(Amazon S3)存储桶策略。这有助于防止未经授权的账户访问您的 S3 存储桶。如果您有现有跟踪记录,请务必添加一个或多个条件密钥。以下示例展示了建议的策略配置。Replace(替换) amzn-s3-demo-bucket
, [optionalPrefix]/
,
myAccountID
, region
,以及 trailName
使用适合您的配置的值。
例 具有服务委托方名称的存储桶策略示例
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AWSCloudTrailAclCheck20150319",
"Effect": "Allow",
"Principal": {"Service": "cloudtrail.amazonaws.com"},
"Action": "s3:GetBucketAcl",
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket
",
"Condition": {
"StringEquals": {
"aws:SourceArn": "arn:aws:cloudtrail:region
:myAccountID
:trail/trailName
"
}
}
},
{
"Sid": "AWSCloudTrailWrite20150319",
"Effect": "Allow",
"Principal": {"Service": "cloudtrail.amazonaws.com"},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket
/[optionalPrefix]/
AWSLogs/myAccountID
/*",
"Condition": {"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control",
"aws:SourceArn": "arn:aws:cloudtrail:region
:myAccountID
:trail/trailName
"
}
}
}
]
}
更改现有存储桶的前缀
如果您尝试添加、修改或删除从跟踪记录接收日志的 S3 存储桶的日志文件前缀,可能会收到以下错误消息:There is a problem with the bucket policy。存储桶策略包含错误的前缀会阻碍跟踪向存储桶传送日志。要解决此问题,请使用 Amazon S3 控制台更新存储桶策略中的前缀,然后使用 CloudTrail控制台为跟踪中的存储桶指定相同的前缀。
更新 Simple Storage Service(Amazon S3)存储桶的日志文件前缀
打开 Amazon S3 控制台,网址为https://console.aws.amazon.com/s3/
。 -
选择要修改其前缀的存储桶,然后选择 Permissions(权限)。
-
选择编辑。
-
在存储桶策略中,在
s3:PutObject
操作下,编辑Resource
条目以添加、修改或删除日志文件prefix/
根据需要。"Action": "s3:PutObject", "Resource": "arn:aws:s3:::
amzn-s3-demo-bucket
/prefix/
AWSLogs/myAccountID
/*", -
选择保存。
打开 CloudTrail 控制台,网址为https://console.aws.amazon.com/cloudtrail/
。 -
选择跟踪,并在 Storage location 中点击铅笔图标来编辑存储桶的设置。
-
对于 S3 bucket,选择要更改前缀的存储桶。
-
对于 Log file prefix,更新前缀,使其与您在存储桶策略中输入的前缀相符。
-
选择保存。
其他 资源
有关 S3 存储桶和策略的更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的使用存储桶策略。