【发布时间】:2015-12-04 00:17:39
【问题描述】:
尝试让 Amazon S3 客户端加密与 Javascript 一起使用。
为存储桶中的特定 S3 对象建立 SSE 是 可选,并且可以很容易地在单个对象级别建立。 还可以设置“一揽子”策略,要求将所有数据发送到 S3 要加密的存储桶。此类策略的示例如下:
{
"Version":"2013-05-17",
"Id":"PutObjPolicy",
"Statement":[{
"Sid":"DenyUnEncryptedObjectUploads",
"Effect":"Deny",
"Principal":{
"AWS":"*"
},
"Action":"s3:PutObject",
"Resource":"arn:aws:s3:::SensitiveBucket/*",
"Condition":{
"StringNotEquals":{
"s3:x-amz-server-side-encryption":"AES256"
}
}
}
]
}
要成功地将任何数据放入此 S3 存储桶,请求将 需要包含“x-amz-server-side-encryption”标头。
因为它是客户端,所以我得到了这个 JSON 策略设置:
{
"expiration": "2020-01-01T00:00:00Z",
"conditions": [
{"bucket": "angular-file-upload"},
["starts-with", "$key", ""],
{"acl": "private"},
{ "x-amz-server-side-encryption": "AES256"},
{"x-amz-server-side-encryption-customer-key": "ABC1234835784375349754857893"},
{"x-amz-server-side-encryption-customer-key-MD5": "d0259989a64a9234457dbc51d5202c24"},
["starts-with", "$Content-Type", ""],
["starts-with", "$filename", ""],
["content-length-range", 0, 524288000]
]
}
将文件 CORs-ways 发送到 S3 (POST),并在上传期间另外发送 x-amz-server-side-encryption 标头。
尝试了两种 json 策略,但是它们都抛出了相同的结果。
响应如下:
<Error><Code>AccessDenied</Code>
<Message>Invalid according to Policy: Extra input fields: x-amz-server-side-encryption-customer-key</Message><RequestId>...</RequestId><HostId>...</HostId></Error>
有人知道这里发生了什么吗? 最近我什至好奇是否有可能使用 JS 和 Cors 加密客户端。
干杯。
【问题讨论】:
-
不发送标头。
标签: javascript json amazon-web-services encryption amazon-s3