You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置Cognito凭证访问S3桶遇公开警告,求排查指导

解决S3桶“您的桶是公开的”警告问题(Cognito凭证访问场景)

嘿,作为AWS新手遇到这个警告确实容易困惑,我来帮你一步步排查问题:

可能的原因及排查步骤

1. 检查桶的ACL是否设置了公开权限

AWS的公开警告会同时检查桶策略和访问控制列表(ACL),哪怕你的桶策略是安全的,如果ACL不小心给了公共权限,也会触发警告:

  • 登录S3控制台,找到bucketName12345桶,进入「权限」标签
  • 查看「访问控制列表(ACL)」部分,确保没有给「Everyone」(任何人)或「Authenticated Users」(所有AWS认证用户,不是你的Cognito用户)添加读/写权限。如果有,立即移除这些条目。

2. 检查桶的「阻止公共访问」设置

有时候这个设置的开关会影响AWS对桶安全性的判断:

  • 在桶的「权限」标签下,找到「阻止公共访问(桶级别)」
  • 建议开启「阻止所有公共访问」,但注意:这个设置不会阻止通过Cognito凭证的合法访问(因为Cognito用户属于AWS认证身份),只会拦截真正的公开匿名访问。开启后再刷新警告,看是否消失。

3. 优化桶策略的权限范围(降低误报风险)

你的当前策略允许所有Cognito身份池的用户访问这个桶,这可能被AWS的安全检测判定为“潜在公开风险”。你可以通过添加身份池ID的限制来缩小权限范围,让策略更安全:

修改后的策略如下(替换为你的目标Cognito身份池ID):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "cognito-identity.amazonaws.com"
      },
      "Action": "s3:ListBucket",
      "Resource": "arn:aws:s3:::bucketName12345",
      "Condition": {
        "StringLike": {
          "s3:prefix": "cognito/angularApplicationName/"
        },
        "StringEquals": {
          "cognito-identity.amazonaws.com:aud": "us-east-1:xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
        }
      }
    },
    {
      "Effect": "Allow",
      "Principal": {
        "Federated": "cognito-identity.amazonaws.com"
      },
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject"
      ],
      "Resource": [
        "arn:aws:s3:::bucketName12345/cognito/angularApplicationName/${cognito-identity.amazonaws.com:sub}",
        "arn:aws:s3:::bucketName12345/cognito/angularApplicationName/${cognito-identity.amazonaws.com:sub}/*"
      ],
      "Condition": {
        "StringEquals": {
          "cognito-identity.amazonaws.com:aud": "us-east-1:xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
        }
      }
    }
  ]
}

这里添加了cognito-identity.amazonaws.com:aud条件,指定只有你的目标Cognito身份池的用户才能访问,大幅降低权限范围。

4. AWS安全检测的误报

如果以上步骤都检查过,确认没有公开权限,那可能是AWS的自动检测误判了Cognito联邦身份的策略。你的策略实际上是安全的:

  • 只有持有合法Cognito凭证的用户才能访问
  • 每个用户只能操作自己sub路径下的资源,完全隔离

这种情况下,你可以忽略这个警告,或者通过提交支持工单让AWS确认。


内容的提问来源于stack exchange,提问作者Aiguo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:10:17