对象存储 · S3

对象存储的事故,九成来自配置而不是漏洞

公开读的桶、过宽的桶策略、没开版本控制的关键数据,这三样是我们审计时最常发现的问题。

S3 安全基线检查项

访问控制

  • 账号级 Block Public Access 全部开启
  • 桶策略遵循最小权限,禁止 Principal: "*" 除非确实是公开资源桶
  • 跨账号访问用 IAM Role 而不是桶策略直接放通
  • VPC Endpoint 策略限制只允许特定 VPC 访问敏感桶
  • 预签名 URL 有效期不超过 15 分钟

加密与完整性

  • 默认加密开启,敏感数据用 SSE-KMS 而非 SSE-S3
  • KMS 密钥策略与桶策略双向约束
  • 强制 HTTPS:桶策略拒绝 aws:SecureTransport = false
  • 开启版本控制,防止误删与勒索软件覆写
  • 合规归档数据启用 Object Lock 合规模式

审计与监控

  • CloudTrail 数据事件覆盖敏感桶
  • 服务端访问日志写入独立的日志桶
  • Macie 扫描识别 PII 与敏感数据分布
  • Config 规则持续检测公开访问与加密缺失
  • GuardDuty S3 Protection 开启异常访问检测

强制加密与 HTTPS 的桶策略

json bucket-policy-baseline.json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyInsecureTransport",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:*",
      "Resource": [
        "arn:aws:s3:::mushan-sensitive-data",
        "arn:aws:s3:::mushan-sensitive-data/*"
      ],
      "Condition": {
        "Bool": { "aws:SecureTransport": "false" }
      }
    },
    {
      "Sid": "DenyUnencryptedUpload",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::mushan-sensitive-data/*",
      "Condition": {
        "StringNotEquals": {
          "s3:x-amz-server-side-encryption": "aws:kms"
        }
      }
    },
    {
      "Sid": "DenyWrongKmsKey",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::mushan-sensitive-data/*",
      "Condition": {
        "StringNotEqualsIfExists": {
          "s3:x-amz-server-side-encryption-aws-kms-key-id":
            "arn:aws:kms:ap-northeast-1:111122223333:key/EXAMPLE-KEY-ID"
        }
      }
    },
    {
      "Sid": "RestrictToVpcEndpoint",
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::mushan-sensitive-data/*",
      "Condition": {
        "StringNotEquals": { "aws:SourceVpce": "vpce-0abc123def456" },
        "Bool": { "aws:PrincipalIsAWSService": "false" }
      }
    }
  ]
}

Deny 语句优先级最高,即使 IAM 策略给了权限也会被拒绝。上线前一定在测试桶验证,避免锁死自己。

防勒索三件套

版本控制 + MFA Delete + 跨账号复制到独立的备份账号。攻击者即使拿到生产账号权限,也无法删除备份账号里的副本。关键数据再加 Object Lock 合规模式,连 root 都删不掉。

下一步

把云的复杂度交给我们,你只管做业务

留下需求,沐杉云的解决方案架构师会在一个工作日内联系你,提供免费的现状评估、迁移方案草案与 TCO 测算表。