如何设置S3存储桶策略,只允许组织内部的VPC流日志访问?

0

【以下的问题经过翻译处理】 你好,

我已经使用Control Tower创建了一个landing zone(包括审计和日志账户等)。在日志账户中,我有一个S3存储桶,用来从组织中的所有当前和未来的账户中接收VPC流日志。因此,我想创建一个存储桶策略,只允许接收属于组织的源账户的VPC流日志。其他团队通过自助服务的方式使用Control Tower Factory创建了新的账户,因此我需要按照组织的方式进行过滤,而不是按照账户ID或具体的ARN进行过滤。

根据VPC流日志用户指南,我得将以下语句(还有另一个类似的语句,但咱们简化点来说)添加到S3存储桶策略的目标存储桶中:

   

{
             "Sid":“AWSLogDeliveryWrite”,
             "Effect":“Allow”,
             "Principal":{"Service":“delivery.logs.amazonaws.com”},
             "Action":“s3:PutObject”,
             "Resource":“my-s3-arn”,
             "Condition":{
                 “StringEquals”:{
                     “s3:x-amz-acl”:“bucket-owner-full-control”,
                     “aws:SourceAccount”:account_id
                 },
                 “ArnLike”:{
                     “aws:SourceArn”:“arn:aws:logs:region:account_id:*”
                 }
             }
         }

因为我需要按组织而不是按账户进行过滤,所以我尝试使用aws:PrincipalOrgID条件键代替SourceAccd'sount和SourceArn。然而,我会收到一个错误,说aws:PrincipalOrgID不支持service principals,所以无法创建策略。

我也尝试过使用aws:PrincipalOrgPaths条件键。然而,虽然我创建policy成功了,但是创建日志流的时候又报错: "Access Denied for LogDestination: bucket_name. Please check LogDestination permissions."

我也试过将principal设置成"*"并且条件键设置为"aws:PrincipalServiceName": "delivery.logs.amazonaws.com" ,但是也是在设置日志流的时候报了同样的错误。

有谁知道这该怎么办吗?先谢了。

profile picture
专家
已提问 5 个月前23 查看次数
1 回答
0

【以下的回答经过翻译处理】 您不能使用与组织相关的任何条件,因为service principal不是您组织的成员。只需删除与Account ID相关的所有条件即可。并将S3存储桶名称保密。我相信 delivery.logs.amazonaws.com 服务足够安全。

{
   "Sid":"AWSLogDeliveryWrite",
   "Effect":"Allow",
   "Principal":{
      "Service":"delivery.logs.amazonaws.com"
   },
   "Action":"s3:PutObject",
   "Resource":"my-s3-arn",
   "Condition":{
      "StringEquals":{
         "s3:x-amz-acl":"bucket-owner-full-control"
      }
   }
}

我知道这并不是最好的解决方法,但是很简单! :)

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则