全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 智能硬件
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 更多
对象存储 OSS

数据安全性

更新时间:2018-07-11 16:43:26

Java SDK提供了数据完整性校验、服务器端加密、客户端加密等方法,来保证您在上传、下载和拷贝过程中数据的安全性。

数据完整性校验

Java SDK提供基于MD5和CRC的数据校验,确保上传、下载和拷贝过程中的数据完整性。

MD5

如果上传时设置了Content-MD5,OSS会根据接收的内容计算MD5。OSS计算的MD5值和上传提供的MD5值不一致时,则返回InvalidDigest。从而保证数据的完整性。

以下代码用于上传时进行MD5校验:

  1. // Endpoint以杭州为例,其它Region请按实际情况填写。
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. // 创建OSSClient实例。
  7. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  8. // 上传字符串。
  9. String content = "Hello OSS";
  10. ObjectMetadata meta = new ObjectMetadata();
  11. // 设置MD5校验。
  12. String md5 = BinaryUtil.toBase64String(BinaryUtil.calculateMd5(content.getBytes()));
  13. meta.setContentMD5(md5);
  14. ossClient.putObject("<yourBucketName>", "<yourObjectName>", new ByteArrayInputStream(content.getBytes()), meta);
  15. // 关闭OSSClient。
  16. ossClient.shutdown();

说明:putObject、getObject、appendObject、postObject、uploadPart支持MD5校验。

CRC64

上传、下载和拷贝文件时默认开启CRC数据校验,确保数据的完整性。

以下代码用于上传时查看CRC数据校验是否生效:

  1. // Endpoint以杭州为例,其它Region请按实际情况填写。
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. // 创建OSSClient实例。
  7. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  8. // 上传字符串。
  9. String content = "Hello OSS";
  10. PutObjectResult result = ossClient.putObject("<yourBucketName>", "<yourObjectName>", new ByteArrayInputStream(content.getBytes()));
  11. // 判断是否开启CRC校验,true为开启,false为关闭。
  12. if (ossClient.getClientConfiguration().isCrcCheckEnabled()) {
  13. // 通过响应结果查看CRC校验是否生效。
  14. OSSUtils.checkChecksum(result.getClientCRC(), result.getServerCRC(), result.getRequestId());
  15. }
  16. // 关闭OSSClient。
  17. ossClient.shutdown();

说明:

  • putObject、getObject、appendObject、uploadPart支持CRC64校验。
  • CRC64校验会占用一定的CPU,上传、下载速度会有影响。

服务器端加密

上传文件时,设置元信息中serverSideEncryption参数为AES256或KMS,即可实现该文件在服务器端加密存储。更多信息请参见开发指南中的服务器端加密编码

以下代码用于上传时设置服务器端加密:

  1. // Endpoint以杭州为例,其它Region请按实际情况填写。
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. // 创建OSSClient实例。
  7. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  8. // 上传字符串。
  9. String content = "Hello OSS";
  10. ObjectMetadata meta = new ObjectMetadata();
  11. // 指定此文件在服务器端的加密编码为AES256。
  12. meta.setServerSideEncryption(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION);
  13. ossClient.putObject("<yourBucketName>", "<yourObjectName>", new ByteArrayInputStream(content.getBytes()), meta);
  14. // 关闭OSSClient。
  15. ossClient.shutdown();

客户端加密

如需客户端加密,您可将数据在本地加密,然后上传到OSS,并在下载到本地后解密。详情请参见开发指南中的客户端加密SDK介绍

本文导读目录