本文介绍如何通过对象存储OSS提供的加密、访问控制、日志与监控及数据保护等多种方式来保障OSS的数据安全性。

加密

OSS提供服务器端加密、客户端加密以及数据传输加密三种数据加密方式。

  • 服务器端加密

    OSS通过服务器端加密机制,提供静态数据保护。适合于对于文件存储有高安全性或者合规性要求的应用场景。例如,深度学习样本文件的存储、在线协作类文档数据的存储。

    说明 有关服务器端加密原理的更多信息,请参考原理介绍

    针对不同的应用场景,OSS有如下三种服务器端加密方式:

    • 使用OSS默认托管的KMS密钥(SSE-KMS)

      您可以将Bucket默认的服务器端加密方式设置为KMS且不指定具体的CMK ID,也可以在上传Object或修改Object的meta信息时,在请求中携带X-OSS-server-side-encryption并指定其值为KMS且不指定具体的CMK ID。OSS将使用默认托管的CMK生成不同的密钥来加密不同的对象,并且在下载时自动解密。

    • 使用BYOK进行加密(SSE-KMS BYOK)

      服务器端加密支持使用BYOK进行加密,您可以将Bucket默认的服务器端加密方式设置为KMS并指定具体的CMK ID,也可以在上传Object或修改Object的meta信息时,在请求中携带X-OSS-server-side-encryption,指定其值为KMS,并指定X-OSS-server-side-encryption-key-id为具体的CMK ID。OSS将使用指定的CMK生成不同的密钥来加密不同的对象,并将加密Object的CMK ID记录到对象的元数据中,因此具有解密权限的用户下载对象时会自动解密。

      安全白皮书_白皮书_对象存储 OSS 阿里云技术文档 第1张
    • 使用OSS完全托管加密(SSE-OSS)

      基于OSS完全托管的加密方式,是Object的一种属性。OSS服务器端加密使用AES256加密每个对象,并为每个对象使用不同的密钥进行加密,作为额外的保护,它将使用定期轮转的主密钥对加密密钥本身进行加密。

  • 客户端加密
    客户端加密是指将数据发送到OSS之前在用户本地进行加密,对于数据加密密钥的使用,目前支持如下两种方式:
    • 使用KMS托管用户主密钥
      当使用KMS托管用户主密钥用于客户端数据加密时,无需向OSS加密客户端提供任何加密密钥。只需要在上传对象时指定KMS用户主密钥ID(也就是CMK ID)。其具体工作原理如下图所示。安全白皮书_白皮书_对象存储 OSS 阿里云技术文档 第2张
    • 使用用户自主管理密钥
      使用用户自主管理密钥,需要用户自主生成并保管加密密钥。当用户本地客户端加密时,由用户自主上传加密密钥(对称加密密钥或者非对称加密密钥)至本地加密客户端。其具体加密过程如下图所示。安全白皮书_白皮书_对象存储 OSS 阿里云技术文档 第3张
  • 数据传输加密

    OSS支持通过HTTP或HTTPS的方式访问,但您可以在Bucket Policy中设置仅允许通过HTTPS(TLS)来访问OSS资源。安全传输层协议(TLS)用于在两个通信应用程序之间提供保密性和数据完整性。

访问控制

OSS提供了多种权限控制方式,包括ACL、RAM Policy和Bucket Policy。

  • ACL:OSS为权限控制提供访问控制列表(ACL)。ACL是基于资源的授权策略,可授予Bucket和Object访问权限。您可以在创建Bucket或上传Object时设置ACL,也可以在创建Bucket或上传Object后的任意时间内修改ACL。

  • RAM Policy:RAM(Resource Access Management)是阿里云提供的资源访问控制服务。RAM Policy是基于用户的授权策略。通过设置RAM Policy,您可以集中管理您的用户(比如员工、系统或应用程序),以及控制用户可以访问您名下哪些资源的权限。比如能够限制您的用户只拥有对某一个 Bucket 的读权限。子账号是从属于主账号的,并且这些账号下不能拥有实际的任何资源,所有资源都属于主账号。

  • Bucket Policy:Bucket Policy是基于资源的授权策略。相比于RAM Policy,Bucket Policy操作简单,支持在控制台直接进行图形化配置,并且Bucket拥有者直接可以进行访问授权,无需具备RAM操作权限。Bucket Policy支持向其他账号的RAM用户授予访问权限,以及向匿名用户授予带特定IP条件限制的访问权限。

日志与监控

OSS提供访问日志存储及实时日志查询服务,便于您从多个维度来对日志进行细化跟踪。此外,OSS提供的监控服务,帮助您更好的了解OSS服务的运行状态并进行自主诊断和故障排除。

  • 访问日志查询

    您在访问OSS的过程中,会产生大量的访问日志。日志存储功能,可将OSS的访问日志,以小时为单位,按照固定的命名规则,生成一个Object写入您指定的Bucket(目标 Bucket,Target Bucket)。您可以使用阿里云DataLakeAnalytics或搭建Spark集群等方式对这些日志文件进行分析。同时,您可以配置目标Bucket的生命周期管理规则,将这些日志文件转成归档存储,长期归档保存。有关OSS访问日志的更多信息,请参考访问日志存储

  • 实时日志查询

    实时日志查询功能将OSS与日志服务(LOG)相结合, 允许您在OSS控制台直接查询OSS访问日志,帮助您完成OSS访问的操作审计、访问统计、异常事件回溯和问题定位等工作,提升您的工作效率并更好地帮助您基于数据进行决策。有关实时日志查询的更多信息,请参考实时日志查询

  • 监控服务

    OSS监控服务为您提供系统基本运行状态、性能以及计量等方面的监控数据指标,并且提供自定义报警服务,帮助您跟踪请求、分析使用情况、统计业务趋势,及时发现以及诊断系统的相关问题。有关监控服务的更多信息,请参考监控服务概览

数据保护

OSS提供合规保留策略、同城冗余存储及版本控制等特性来保障OSS的数据安全性。
  • 合规保留策略

    OSS现已全面支持WORM(一次写入,多次读取)特性,允许用户以“不可删除、不可篡改”方式保存和使用数据。

    OSS提供强合规策略,用户可针对存储空间(Bucket)设置基于时间的合规保留策略。当策略锁定后,用户可以在Bucket中上传和读取文件(Object),但是在Object的保留时间到期之前,任何用户都无法删除Object和策略。Object的保留时间到期后,才可以删除Object。OSS支持的WORM特性,适用于金融、保险、医疗、证券等行业。您可以基于OSS搭建“云上数据合规存储空间”。

    有关合规保留策略的更多信息,请参考合规保留策略

  • 同城冗余存储
    OSS采用多可用区(AZ)机制,将用户的数据分散存放在同一地域(Region)的3个可用区。当某个可用区不可用时,仍然能够保障数据的正常访问。OSS同城冗余存储(多可用区)是基于99.9999999999%(12个9)的数据可靠性设计,并且能够提供99.995%的数据设计可用性 。安全白皮书_白皮书_对象存储 OSS 阿里云技术文档 第4张

    OSS的同城冗余存储能够提供机房级容灾能力。当断网、断电或者发生灾难事件导致某个机房不可用时,仍然能够确保继续提供强一致性的服务能力,整个故障切换过程用户无感知,业务不中断、数据不丢失,可以满足关键业务系统对于“恢复时间目标(RTO)”以及“恢复点目标(RPO)”等于0的强需求。

    有关同城冗余存储的更多信息,请参考同城冗余存储

  • 版本控制
    开启存储空间(Bucket)版本控制特性后,针对数据的覆盖和删除操作将会以历史版本的形式保存下来。通过文件(Object)的版本管理,用户在错误覆盖或者删除Object后,能够将Bucket中存储的Object恢复至任意时刻的历史版本。
    说明 版本控制特性将在近期推出,敬请期待。

    版本控制应用于Bucket内的所有Object。当第一次针对Bucket开启版本控制后,该Bucket中所有的Object将在之后一直受到版本控制,并且每个版本都具有唯一的版本ID。

    Bucket开启版本控制后,针对文件的每次覆盖都会生成一个历史版本,并且针对每个版本进行收费。您可以通过生命周期规则自动删除过期版本。