我的 S3 对象是否静态加密?

CFL*_*eff 4 encryption amazon-s3

我已指定以下存储桶策略来强制对 PUT 进行加密:

{
    "Version": "2012-10-17",
    "Id": "PutObjPolicy",
    "Statement": [
        {
            "Sid": "DenyUnEncryptedObjectUploads",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::com.my.bucket/*",
            "Condition": {
                "StringNotEquals": {
                    "s3:x-amz-server-side-encryption": "aws:kms"
                }
            }
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

上传的bucket对象的属性表明它们是加密的

图像属性表示已加密

然而

我的“存储桶属性”表明我没有使用默认加密:

存储桶加密设置

我可以从控制台下载这些“加密”的图像并在下载后在本地查看它们,如果它们真的被加密,我希望这是不可能的。

那么......我是否实现了“静态加密”?

Mad*_*Jha 6

由于您上传的对象将加密显示为 aws-kms,这意味着它在静态时已明确加密。您直接从 s3 UI 上传,默认情况下不加密。上传后,您将看到加密为 none。静态加密意味着,您的数据以加密形式存储在 s3 磁盘/存储基础设施上。但是,这并不意味着它会以加密格式显示在用户界面/或下载后。当您通过 sdk 下载时,它会自动解密数据。你总是得到解密的数据。同样,s3 UI 显示解密的内容。您要实现的是客户端加密。服务器端加密是静态加密。当您进行客户端加密时,数据以加密格式进入 s3。再次下载时,客户端必须解密数据。

https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingEncryption.html

注意:术语“休息”是指数据正在休息时(不是在数据正在传输到 s3 的过渡中)。服务器端加密 - 这有助于静态加密。

客户端加密 - 这有助于在过渡和静止时进行加密。

单独使用 ssl 也可以实现过渡中的加密。