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