KS3服务端加密使用指南
目录
1. 概述
服务器端加密关乎静态数据加密,即 KS3 在将您的数据写入数据中心内的磁盘时会在对象级别上加密这些数据,并在您访问这些数据时为您解密这些数据。只要您验证了您的请求并且拥有访问权限,您访问加密和未加密数据元的方式就没有区别。例如,如果您使用预签名的 URL 来共享您的对象,那么对于加密和解密对象,该 URL 的工作方式是相同的。
2. 使用方式
KS3目前支持两种方式管理加密密钥:
3. API支持
3.1 使用具有 KS3 托管密钥的服务器端加密 (SSE-S3)
PUT 操作
请求头
名称 |
描述 |
x-kss-server-side-encryption |
如果请求中包含此头,服务端将对数据进行加密处理,合法值:AES256 |
响应头
名称 |
描述 |
x-kss-server-side-encryption |
如果请求头里包含该值,则响应头将包含该值 |
错误返回
类型 |
描述 |
x-kss-server-side-encryption |
如果x-kss-server-side-encryption请求头的值不是AES256 |
POST 操作
表单项
如果用户需要服务器使用默认加密,需要以下表单项
名称 |
描述 |
x-kss-server-side-encryption |
如果存储 object 时使用了服务端加密,则需要配置该表单项,值为使用的加密算法,目前支持AES256。 类型:String |
错误返回
类型 |
描述 |
加密类型无效 |
报400错误,x-kss-server-side-encryption表单项的值不是AES256 |
Initiate Multipart Upload 操作
请求头
名称 |
描述 |
x-kss-server-side-encryption |
如果请求中包含此头,服务端将生成加密密钥,并在分块上传时使用该密钥进行加密,合法值:AES256 |
响应头
名称 |
描述 |
x-kss-server-side-encryption |
* 如果请求头里包含该值,则响应头将包含该值 |
错误返回
类型 |
描述 |
加密类型无效 |
报400错误,x-kss-server-side-encryption请求头的值不是AES256 |
加密类型无效 |
报400错误,x-kss-server-side-encryption请求头为空 |
Upload Part 操作
响应头
名称 |
描述 |
x-kss-server-side-encryption |
如果数据通过KS3 托管密钥的服务器端加密,则响应头将包含该值 |
错误返回
类型 |
描述 |
非法参数 |
如果提供x-kss-server-side-encryption请求头,将报400错误,提示参数非法 |
Complete Multipart Upload 操作
响应头
名称 |
描述 |
x-kss-server-side-encryption |
如果数据通过KS3 托管密钥的服务器端加密,则响应头将包含该值 |
错误返回
类型 |
描述 |
非法参数 |
如果提供x-kss-server-side-encryption请求头,将报400错误,提示参数非法 |
COPY 操作
请求头
名称 |
描述 |
x-kss-server-side-encryption |
合法值:AES256 |
x-kss-copy-source-server-side-encryption-customer-algorithm |
如果被拷贝对象为客户端提供密钥加密方式,需提供该请求头 |
x-kss-copy-source-server-side-encryption-customer-key |
如果被拷贝对象为客户端提供密钥加密方式,需提供该请求头 |
x-kss-copy-source-server-side-encryption-customer-key-MD5 |
如果被拷贝对象为客户端提供密钥加密方式,需提供该请求头 |
注:x-kss-copy-source-server-side-encryption-customer-algorithm 、x-kss-copy-source-server-side-encryption-customer-key 、x-kss-copy-source-server-side-encryption-customer-key-MD5此三个请求头必须同时存在
响应头
名称 |
描述 |
x-kss-server-side-encryption |
如果请求头里包含该值,则响应头将包含该值 |
错误返回
类型 |
描述 |
加密类型无效 |
400错误,x-kss-server-side-encryption请求头的值不是AES256 |
MD5值错误 |
400错误,x-kss-copy-source-server-side-encryption-customer-key-MD5 不是 x-kss-copy-source-server-side-encryption-customer-key 的MD5值 |
加密算法错误 |
400错误,x-kss-copy-source-server-side-encryption-customer-algorithm不是合法的AES256 |
非法参数 |
400错误,x-kss-copy-source-server-side-encryption-customer-algorithm 、x-kss-copy-source-server-side-encryption-customer-key 、x-kss-copy-source-server-side-encryption-customer-key-MD5 3个请求头未同时存在 |
GET 操作
响应头
名称 |
描述 |
x-kss-server-side-encryption |
如果数据通过KS3 托管密钥的服务器端加密,则响应头将包含该值 |
错误返回
类型 |
描述 |
非法参数 |
如果提供x-kss-server-side-encryption请求头,将报400错误,提示参数非法 |
HEAD 操作
响应头
名称 |
描述 |
x-kss-server-side-encryption |
如果数据通过KS3 托管密钥的服务器端加密,则响应头将包含该值 |
错误返回
类型 |
描述 |
非法参数 |
如果提供x-kss-server-side-encryption请求头,将报400错误,提示参数非法 |
3.2 通过使用客户提供的加密密钥的服务器端加密 (SSE-C) 保护数据
PUT 操作
请求头
名称 |
描述 |
x-kss-server-side-encryption-customer-algorithm |
客户端提供的加密算法,合法值:AES256 |
x-kss-server-side-encryption-customer-key |
客户端提供的加密密钥 |
x-kss-server-side-encryption-customer-key-MD5 |
客户端提供的通过BASE64编码的通过128位MD5加密的密钥的MD5值 |
注:此三个请求头必须同时存在
响应头
名称 |
描述 |
x-kss-server-side-encryption-customer-algorithm |
如果请求头里包含该值,则响应头将包含该值 |
x-kss-server-side-encryption-customer-key-MD5 |
如果请求头里包含该值,则响应头将包含该值 |
错误返回
类型 |
描述 |
MD5值错误 |
400错误,xx-kss-server-side-encryption-customer-key-MD5 不是 x-kss-server-side-encryption-customer-key 的MD5值 |
加密算法错误 |
400错误,x-kss-server-side-encryption-customer-algorithm不是合法的AES256 |
非法参数 |
400错误,上述3个请求头未同时存在 |
POST 操作
请求头
名称 |
描述 |
x-kss-server-side-encryption-customer-algorithm |
客户端提供的加密算法,合法值:AES256 |
x-kss-server-side-encryption-customer-key |
客户端提供的加密密钥 |
x-kss-server-side-encryption-customer-key-MD5 |
客户端提供的通过BASE64编码的通过128位MD5加密的密钥的MD5值 |
注:此三个请求头必须同时存在
响应头
名称 |
描述 |
x-kss-server-side-encryption-customer-algorithm |
如果请求头里包含该值,则响应头将包含该值 |
x-kss-server-side-encryption-customer-key-MD5 |
如果请求头里包含该值,则响应头将包含该值 |
错误返回
类型 |
描述 |
MD5值错误 |
400错误,x-kss-server-side-encryption-customer-key-MD5 不是 x-kss-server-side-encryption-customer-key 的MD5值 |
加密算法错误 |
400错误,x-kss-server-side-encryption-customer-algorithm 不是合法的AES256 |
非法参数 |
400错误,上述3个请求头未同时存在 |
Initiate Multipart Upload 操作
请求头
名称 |
描述 |
x-kss-server-side-encryption-customer-algorithm |
客户端提供的加密算法,合法值:AES256 |
x-kss-server-side-encryption-customer-key |
客户端提供的加密密钥 |
x-kss-server-side-encryption-customer-key-MD5 |
客户端提供的通过BASE64编码的通过128位MD5加密的密钥的MD5值 |
注:此三个请求头必须同时存在
响应头
名称 |
描述 |
x-kss-server-side-encryption-customer-algorithm |
如果请求头里包含该值,则响应头将包含该值 |
x-kss-server-side-encryption-customer-key-MD5 |
如果请求头里包含该值,则响应头将包含该值 |
错误返回
类型 |
描述 |
MD5值错误 |
400错误,x-kss-server-side-encryption-customer-key-MD5 不是 x-kss-server-side-encryption-customer-key 的MD5值 |
加密算法错误 |
400错误,x-kss-server-side-encryption-customer-algorithm不是合法的AES256 |
非法参数 |
400错误,上述3个请求头未同时存在 |
Upload Part 操作
请求头
名称 |
描述 |
x-kss-server-side-encryption-customer-algorithm |
客户端提供的加密算法,合法值:AES256 |
x-kss-server-side-encryption-customer-key |
客户端提供的加密密钥 |
x-kss-server-side-encryption-customer-key-MD5 |
客户端提供的通过BASE64编码的通过128位MD5加密的密钥的MD5值 |
注:此三个请求头必须同时存在
响应头
名称 |
描述 |
x-kss-server-side-encryption-customer-algorithm |
如果请求头里包含该值,则响应头将包含该值 |
x-kss-server-side-encryption-customer-key-MD5 |
如果请求头里包含该值,则响应头将包含该值 |
错误返回
类型 |
描述 |
MD5值错误 |
400错误,x-kss-server-side-encryption-customer-key-MD5 不是 x-kss-server-side-encryption-customer-key 的MD5值 |
加密算法错误 |
400错误,x-kss-server-side-encryption-customer-algorithm不是合法的AES256 |
非法参数 |
400错误,上述3个请求头未同时存在 |
缺少客户密钥 |
400错误,数据通过客户端提供密钥加密,但是请求中未提供客户密钥 |
MD5值不一致 |
400错误,获取数据时提供的密钥的MD5和存储时不一致 |
Complete Multipart Upload 操作
响应头
名称 |
描述 |
x-kss-server-side-encryption-customer-algorithm |
如果请求头里包含该值,则响应头将包含该值 |
x-kss-server-side-encryption-customer-key-MD5 |
如果请求头里包含该值,则响应头将包含该值 |
错误返回
类型 |
描述 |
非法参数 |
400错误,不应该携带客户端提供密钥进行加密的请求头,如果携带,提示参数非法 |
COPY 操作
请求头
名称 |
描述 |
xx-kss-server-side-encryption-customer-algorithm |
客户端提供的加密算法,合法值:AES256 |
x-kss-server-side-encryption-customer-key |
客户端提供的加密密钥 |
x-kss-server-side-encryption-customer-key-MD5 |
客户端提供的通过BASE64编码的通过128位MD5加密的密钥的MD5值 |
x-kss-copy-source-server-side-encryption-customer-algorithm |
如果被拷贝对象为客户端提供密钥加密方式,需提供该请求头 |
x-kss-copy-source-server-side-encryption-customer-key |
如果被拷贝对象为客户端提供密钥加密方式,需提供该请求头 |
x-kss-copy-source-server-side-encryption-customer-key-MD5 |
如果被拷贝对象为客户端提供密钥加密方式,需提供该请求头 |
注: x-kss-server…三个请求头以及x-kss-copy-source…三个请求头必须同时存在
响应头
名称 |
描述 |
x-kss-server-side-encryption-customer-algorithm |
如果请求头里包含该值,则响应头将包含该值 |
x-kss-server-side-encryption-customer-key-MD5 |
如果请求头里包含该值,则响应头将包含该值 |
错误返回
类型 |
描述 |
MD5值错误 |
400错误,x-kss(-copy-source)-server-…-MD5 不是 x-kss(-copy-source)-server-…-key 的MD5值 |
加密算法错误 |
400错误,x-kss(-copy-source)-server-side-…-algorithm不是合法的AES256 |
非法参数 |
400错误,上述3个请求头未同时存在 |
缺少客户密钥 |
400错误,数据通过客户端提供密钥加密,但是请求中未提供客户密钥 |
MD5值不一致 |
400错误,获取数据时提供的密钥的MD5和存储时不一致 |
GET 操作
请求头
名称 |
描述 |
x-kss-server-side-encryption-customer-algorithm |
客户端提供的加密算法,合法值:AES256 |
x-kss-server-side-encryption-customer-key |
客户端提供的加密密钥 |
x-kss-server-side-encryption-customer-key-MD5 |
客户端提供的通过BASE64编码的通过128位MD5加密的密钥的MD5值 |
注:此三个请求头必须同时存在
响应头
名称 |
描述 |
x-kss-server-side-encryption-customer-algorithm |
如果请求数据通过客户提供的加密密钥的服务器端加密,则响应头将包含该值 |
x-kss-server-side-encryption-customer-key-MD5 |
如果请求数据通过客户提供的加密密钥的服务器端加密,则响应头将包含该值 |
错误返回
类型 |
描述 |
MD5值错误 |
400错误,x-kss-server-…-MD5 不是 x-kss-server-…-key 的MD5值 |
加密算法错误 |
400错误,x-kss-server-side-…-algorithm不是合法的AES256 |
非法参数 |
400错误,上述3个请求头未同时存在 |
缺少客户密钥 |
400错误,数据通过客户端提供密钥加密,但是请求中未提供客户密钥 |
MD5值不一致 |
400错误,获取数据时提供的密钥的MD5和存储时不一致 |
HEAD 操作
请求头
名称 |
描述 |
x-kss-server-side-encryption-customer-algorithm |
客户端提供的加密算法,合法值:AES256 |
x-kss-server-side-encryption-customer-key |
客户端提供的加密密钥 |
x-kss-server-side-encryption-customer-key-MD5 |
客户端提供的通过BASE64编码的通过128位MD5加密的密钥的MD5值 |
注:此三个请求头必须同时存在
响应头
名称 |
描述 |
x-kss-server-side-encryption-customer-algorithm |
如果请求数据通过客户提供的加密密钥的服务器端加密,则响应头将包含该值 |
x-kss-server-side-encryption-customer-key-MD5 |
如果请求数据通过客户提供的加密密钥的服务器端加密,则响应头将包含该值 |
错误返回
类型 |
描述 |
MD5值错误 |
400错误,x-kss-server-…-MD5 不是 x-kss-server-…-key 的MD5值 |
加密算法错误 |
400错误,x-kss-server-side-…-algorithm不是合法的AES256 |
非法参数 |
400错误,上述3个请求头未同时存在 |
缺少客户密钥 |
400错误,数据通过客户端提供密钥加密,但是请求中未提供客户密钥 |
MD5值不一致 |
400错误,获取数据时提供的密钥的MD5和存储时不一致 |