将 SSL 流量强制传输到现有 S3 存储桶:如何确保事情不会中断?

Force SSL traffic to existing S3 bucket: How to ensure things won't break?

在我的公司,我们有多个 S3 存储桶,我们希望对它们强制执行 HTTPS 流量。这些存储桶已启动并且 运行,即 lambda 函数和外部集成(例如安全监控系统)一直向它们写入对象或从中获取对象。

我计划执行以下 ACL 策略:

{
    "Version": "2012-10-17",
    "Id": "Enforce HTTPS",
    "Statement": [
        {
            "Sid": "HTTPSOnly",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::mybucket",
                "arn:aws:s3:::mybucket/*"
            ],
            "Condition": {
                "Bool": {
                    "aws:SecureTransport": "false"
                }
            }
        }
    ]

我应该采取哪些步骤来确保 lambda 函数和外部集成在实施 ACL 策略后仍然能够 write/read 从存储桶中获取?

提前致谢

您从 Lambda 函数和 AWS CLI 执行的 S3 操作默认使用 TLS。您需要检查是否有任何使用 S3 的外部集成使用 SSL 或以托管方式执行 S3 操作。如果是这样,我会说没问题。

需要注意的一件小事。最后添加的条件非常重要:)。我在合并过程中错误地错过了条件部分。添加了一个显式拒绝,它拒绝了所有 S3 请求。 root用户只能帮忙重新更新一下策略

另一件需要注意的事情,如果您有单独的服务负责部署此更改,则需要允许该服务的角色执行 s3:PutBucketPolicy 操作,以便可以在那里修改存储桶策略之后。