我们有一个多帐户设置,我们在根帐户的控制塔中部署了组织级 CloudTrail。
组织级 CloudTrail 允许我们在每个账户中部署 CloudTrail,并让他们能够将日志发送到我们的根账户中的 CloudWatch 以及我们中央日志账户中的 S3 日志存储桶。
现在我在日志帐户中设置了 AWS Athena,以尝试对通过组织级 CloudTrail 部署生成的日志运行查询。到目前为止,我已经成功创建了基于上述日志记录存储桶构建的 Athena 表,并且还为查询结果创建了目标存储桶。
当我尝试运行简单的“预览表”查询时,出现以下错误:
S3 路径上的权限被拒绝:s3://BUCKET_NAME/PREFIX/AWSLogs/LOGGING_ACCOUNT_NUMBER/CloudTrail/LOGS_DESTINATION 此查询针对“默认”数据库运行,除非查询限定。请在我们的论坛上发布错误消息或联系客户支持并提供查询 ID:f72e7dbf-929c-4096-bd29-b55c6c41f582
我认为该错误是由于日志存储桶的策略缺少任何允许 Athena 访问的语句引起的,但是当我尝试编辑存储桶策略时,出现以下错误:
您的存储桶策略更改无法保存: 您无权编辑存储桶策略,或者您的存储桶策略授予的公共访问级别与您的阻止公共访问设置冲突。要编辑存储桶策略,您需要 s3:PutBucketPolicy 权限。要查看启用了哪些阻止公共访问设置,请查看您的账户和存储桶设置。了解有关 Amazon S3 中的身份和访问管理的更多信息
这很奇怪,因为我使用的角色拥有该帐户的完全管理员访问权限。
请指教。
提前致谢!
我发现这是您上一个问题的后续问题:使用 Athena 时 S3 权限被拒绝
Control Tower Guardrail 自动部署一个 Guardrail,禁止更新 aws-controltower 存储桶策略。
在您的主账户中,转到 AWS Organizations。然后,转到您的安全 OU。然后转到策略选项卡。您应该看到 2 个护栏策略:
其中一个将包含此政策:
{
"Condition": {
"ArnNotLike": {
"aws:PrincipalARN": "arn:aws:iam::*:role/AWSControlTowerExecution"
}
},
"Action": [
"s3:PutBucketPolicy",
"s3:DeleteBucketPolicy"
],
"Resource": [
"arn:aws:s3:::aws-controltower*"
],
"Effect": "Deny",
"Sid": "GRCTAUDITBUCKETPOLICYCHANGESPROHIBITED"
},
在 AWSControlTowerExecution 下面添加这些主体:
arn:aws:iam::*:role/aws-reserved/sso.amazonaws.com/*/AWSReservedSSO_AWSAdministratorAccess*
arn:aws:iam::*:role/aws-reserved/sso.amazonaws.com/*/AWSReservedSSO_AdministratorAccess*
你的情况应该是这样的:
"Condition": {
"ArnNotLike": {
"aws:PrincipalArn": [
"arn:aws:iam::*:role/AWSControlTowerExecution",
"arn:aws:iam::*:role/aws-reserved/sso.amazonaws.com/*/AWSReservedSSO_AWSAdministratorAccess*",
"arn:aws:iam::*:role/aws-reserved/sso.amazonaws.com/*/AWSReservedSSO_AdministratorAccess*"
]
}
},
应用此功能后,您应该能够更新存储桶。
我建议 AWS Support 给出不同的答案。您应该使用切换角色选项并使用 AWSControlTowerExecution 角色,然后您可以修改策略,而不是修改护栏,这会导致发生漂移。