对象存储服务(Object Storage Service)是一种数据存储解决方案,将数据存储为对象,而不是传统的块存储或文件存储。对象存储系统具有高度的扩展性和灵活性,被广泛用于存储海量非结构化数据,如文档、图片、音视频文件等。然而,随着对象存储的普及,安全问题也变得愈发重要。
一、前言
随着业务的发展,企业需要管理急剧增加并且孤立的大量数据,这些数据来自很多被任意数量的应用程序、业务流程和最终用户使用的来源。今天,这些数据中的大部分都是非结构化的,最终采用多种不同的格式和存储介质,并且不容易融入中央存储库。这增加了复杂性,并减慢了创新速度,因为无法访问数据以用于分析、机器学习(ML)或新的云原生应用程序。
对象存储能够提供可以大规模扩展并且经济高效的存储来以原生格式存储任何类型的数据,从而帮助企业打破这些限制。对象存储消除了困扰传统存储系统的复杂性、容量限制和成本障碍,因为对象存储以较低的每 GB 价格提供了无限的可扩展性。可以通过用户友好的应用程序界面集中管理非结构化数据。可以使用策略来优化数据存储成本,并在必要时自动切换存储层。云对象存储可以更轻松地执行分析和获得见解,从而加快决策速度。
数据作为企业的血液和命脉,其妥善保管至关重要。对象存储作为云计算的数据存储底座,并且还在支持数据湖存储能力,它是企业存储数据的理想之地。但是如何安全的存放数据到对象存储,尤其是公有云对象存储,常常让数据管理者感到困惑和疑虑。
本文将深入探讨一系列关键的安全议题,包括账户认证、网络配置、访问控制、数据加密、日志审计以及数据安全等方面,旨在全面解答企业将数据存放到对象存储过程中可能遇到的安全顾虑。
二、厂商对象存储产品
亚马逊对象存储 AWS S3(Simple Storage Service)
美团云对象存储 S3 Plus(Simple Storage Service Plus)
阿里云对象存储 OSS (Object Storage Service)
腾讯云对象存储 COS(Cloud Object Storage)
京东云对象存储 OSS(Object Storage Service)
百度云对象存储 BOS(Baidu Object Storage)
华为云对象存储 OBS(Object Storage Service)
又拍云对象存储 USS( UPYUN Storage Service)
七牛云对象存储 Kodo
开源对象存储 MINIO
三、对象存储基础知识
1.常用术语
术语 | 描述 |
---|---|
OSS | Object Storage Service,对象存储服务,简称为OSS |
Object | OSS存储的单元,即OSS中存储的都是对象。 |
Bucket | 用来存放对象的空间,也是对对象进行管理的空间。 |
Region | 地区与终端节点,即云服务在不同Region有不同的访问域名。 |
Endpoint | OSS的访问域名,对象存储云化后,每个OSS服务都会形成一个URL,方便用户访问。 |
AK/SK | 访问密钥(Access Key ID/Secret Access Key)包含访问密钥ID(AK)和秘密访问密钥(SK)两部分,是您的长期身份凭证,您可以通过访问密钥对API的请求进行签名。OSS通过AK识别访问用户的身份,通过SK对请求数据进行签名验证,用于确保请求的机密性、完整性和请求者身份的正确性。 |
2.AK/SK机制
AK/SK 机制包含长期 AK、临时 AK(Security Token,ST),每个用户可以生成多个 AK/SK。通过 AK 识别访问用户的身份,通过SK对请求数据进行签名验证,用于确保请求的机密性、完整性和请求者身份的正确性。
- 临时 AK/SK 通过 expire 到期时间控制数据访问时效,提高安全性。
- 长期 AK/SK一旦被盗取即获取长久访问权限,而 ST 在到期后要重新申请,所以实现安全加固。
使用原理(签名,验签,非对称加密)
客户端:拿到自己的AK/SK之后,SK需要保密保存。
1.使用原始报文进行hash算法计算得到摘要,然后使用SK对摘要进行加密生成签名(signature);
2.发送HTTP请求给服务端[请求内容 = Authorization(AK + expire_time + signature) + 原始报文]。
服务端:
- 1.根据客户端发送过来的AK,查找数据库得到对应的Ak和AK对应的用户信息;
- 2.使用上面步骤1相同的hash算法对原始报文进行计算得到摘要1,然后再用SK对摘要 1 签名得到一个签名2;
- 3.比较签名和签名2相同则认证通过,反之则不通过。
四、对象存储安全审计
①账户认证
存在问题:AK/SK泄露/盗用
关注问题:采用什么样的账号登陆? 账号认证运行环境是否会被盗取?
企业数据上云,首先就是做好账户认证,即企业首先关注使用怎样的账号来登陆对象存储?保证账户能够正确的登陆对象存储,并且不会泄露AK/SK。
- 对于创业公司来说,很容易接受新账号体系;
- 对于成熟公司来说,已经建设了成熟的账号体系。
新账号体系
一套新的云账号体系,包含云账号、子用户、角色等,支撑企业人员灵活访问云资源。为了方便用于开发环境,即需要在不同的设备(云服务器、移动设备、IoT 等)访问数据,而对于不可信设备,记录账号的用户名和密码易导致泄漏,因此云服务提供了 AK/SK机制,使用 AK/SK 就可以方便的访问数据,而不需要通过账号密码。
成熟账号体系
- 已有 AD 账号通过 SSO 访问云資源 。为兼容已有账号(企业大量使用的 Active Directory 账号),可以通过 SSO 机制,将已有账号映射为用户 SSO、角色 SSO,从而得到长期 AK、临时 AK。
- 已有 开放 ID 账号通过 OAuth 访问云資源 。为兼容已有 OpenID 账号,例如 WebApp、NativeApp、ServerApp的账号,可以通过 OAuth 机制,通过认证交换 Access Token,从而得到临时 AK。
使用临时 AK(STS Token)安全性更高。应用会部署在可信运行环境(独占使用的手机、服务器)和非可信运行环境(部署到第三方运行环境)
采用长期 AK,会在 AK 泄漏时出现数据被盗取风险。因此,在非可信运行环境中,推荐采用临时 AK,它需要定期申请 STS Token 才能访问云資源,过期后将重新申请,从而提高安全性。
非可信运行环境即使被攻破,也很难盗取 STS Token。黑客即使攻破服务器的操作系统,但STS Token是在应用程序里面动态获取,黑客需要破解实时运行的应用才能获取,难度非常大。
②网络配置
存在问题:内鬼转移企业数据、黑客盗取 AK
关注问题:公网访问能否限制来源地址和协议? 云上VPC访问如何防止内鬼转移数据和外部黑客盗取数据?
企业配置完成账号后,首要考虑的就是如何做好网络隔离,限制能够访问数据的地址和协议?
对象存储应提供如下功能:
- 指定数据只能被某些 IP 地址访问,通过 OSS 的 Bucket Policy 限制源地址范围 。不在允许源地址的公网请求,将被拒绝,将数据隔离在允许访问的网络 IP 地址范围内。
- 指定数据只能采用允许的协议访问,通过 OSS 的 Bucket Policy 限制协议类型 。不在允许协议类型的公网请求,将被拒绝,从而应用只能用安全协议(https)来访问,提高网络传输安全性。
企业内鬼可以同时拥有企业的AK和个人AK,从而可以将企业数据读出,然后写入到个人的桶資源。通过限制某VPC只能访问指定桶,从而内鬼在VPC内无法将数据写入其他桶(内鬼个人的桶) 。
黑客盗取企业AK后可以在控制机器盗取数据。通过限制企业桶只能被<企业 VPC>访问,黑客即使盗取企业AK,也无法在非企业 VPC 环境盗取数据,关键是配置 Bucket Policy 设置允许访问的 vpc-id。
③访问控制
OSS提供读写权限ACL、授权策略、防盗链白名单等功能,实现存储资源访问的控制和管理。
存在问题:公有桶遍历、公有桶爆破、私有桶签名未过期
网络配置完成,就是让合理的账户具有合理的权限,此时就是做好授权访问。通过这三步,基本完成企业业务使用方的诉求。
如何授权其他账号访问数据?
常见对象存储 OSS 支持访问控制列表(ACL)和 授权策略(Policy)两种授权方式。
- ACL 包含 Bucket 级和 Object 级,按资源设置权限 。可以设置 ACL 为公共读写、公共读、私有、缺省 4 种类型。
- Policy 提供丰富的语义,可控制用户访问资源的路径和具体操作 。为某个用户 ID 可以访问那些资源,或者为某个桶可以被那些用户访问,使用哪些 API 来访问。
- 除了ACL和Policy外,还提供防盗链为不同网站(或 IP 地址)的跨域访问设置权限 。通过白名单限制能够跨域访问的来源,实现数据共享。
如何授权匿名用户访问?
通常应用都有把数据共享给公众的诉求, 因此如何授权匿名用户访问数据?
- ACL 支持匿名访问设置 。可以设置桶级、对象级的公共读写、公共读,从而任何人都可以直接访问数据。
- 签名URL 。为匿名用户生成签名 URL,并设置过期时间,匿名用户使用该签名URL可访问资源,从而实现指定时间范围内的数据共享。
提供匿名访问能力,可能会带来数据泄漏、攻击植入、费用激增甚至欠费等问题,此时对象存储应提供一键停止公网访问能力,从而实现快速止血。
如何让相同数据支持不同用户、不同权限的访问?
对象存储支持多租户,典型是桶对应 1 个域名,通过 1 个 Bucket Policy 配置文件提供同一数据授权给不同用户不同权限访问。由于只有 1 个配置文件,每次修改某租户权限,运行生效都要加载整个文件,粒度过大。
为了解决该问题,对象存储应提供 Access Point(AP)实现细粒度用户权限。该功能可以为每个用户创建 AP,配置不同的 AP Policy,修改某用户的 AP Policy,对其他用户无影响。
Policy 都采用相同语法,助力实现灵活的多用户权限。通过操作、資源在一定条件下的权限,可实现丰富的用户权限管理。
如何支持数据湖场景的细粒度授权?
④数据加密
提供服务器端加密和客户端加密,并支持基于SSL/TLS的HTTPS加密传输,有效防止数据在云端的潜在安全风险。
如何避免提供云服务的厂家访问到数据?
- 客户不信任云厂家,选择客户端加密(CSE),数据上传前就已加密,无需担心云服务厂家访问到数据 。
- 客户对云产品信任,可选择服务端加密
⑤日志审计
提供访问日志的存储和查询功能,可满足您对企业数据的监控审计需求。同时,企业安全风险人员会要求开启日志审计,在必要时审核数据是否有泄漏风险。
如何监控审计数据被访问日志?
作为企业安全风险管理人员,通常都需要通过日志、监控、审计等来查看数据是否有泄漏风险,审核企业人员行为,对象存储如何支持这些需求呢?
- 提供访问日志持久化存储和实时查询 。访问对象存储 OSS 的过程中会产生大量的访问日志,可以转存到 OSS 自身进行成本优化;同时通过实时查询能力,帮助完成访问统计、异常事件回溯和问题定位等工作。
- 监控告警 。提供系统基本运行状态、性能以及计量等方面的监控数据指标,并提供自定义报警服务,帮助跟踪请求、分析使用情况、统计业务趋势,及时发现以及诊断系统的相关问题。
⑥合规认证
通过Cohasset Associates审计认证、FINRA 4511、CFTC 1.31、ISO、BS10012、CSA STAR等多项合规认证,能够满足您的多种合规要求。企业管理层会则非常关注数据安全,保证业务高可靠、高可用、合规设计等方面有良好的功能支撑。
如何做到数据安全的数据不丢不错的高可靠?
如何做到数据安全的访问高可用?
如何做到全面的数据保护功能?
五、对象存储防护总结
- 加强身份验证和访问控制: 使用身份和访问管理(IAM)来限制对存储桶和其中对象的访问。确保只有授权的用户或服务能够访问,并严格控制他们的权限,采用最小权限原则。
- 加密数据: 对于敏感数据,采用适当的加密措施,包括数据在传输和静态存储时的加密。
- 网络安全配置: 配置网络安全组、防火墙等措施,限制对存储桶的访问仅来自可信来源,减少公开访问的风险。
- 监控和日志记录: 设置监控警报,对存储桶的访问和活动进行实时监控,并记录审计日志,以便及时发现异常行为或潜在的安全威胁。
- 定期备份和恢复: 定期备份存储桶中的重要数据,并建立有效的恢复计划,以防止数据丢失或损坏,例如意外删除或勒索软件攻击。
- 防止公开访问误配置: 定期审查存储桶的访问权限配置,确保没有意外的公开访问权限,避免因配置错误导致数据泄露的风险。
- 实施访问限制策略: 使用 IP 白名单或访问令牌等策略,限制存储桶的访问仅限于授权的用户或系统
📚参考资料
- 对象存储安全的最佳实践和一些反面的案例 - 待注销 - SegmentFault 思否
- 监控审计 - 对象存储 OSS - 阿里云 (alibabacloud.com)
- 如何安全存放数据到对象存储 OSS 及数据湖的13问-阿里云开发者社区 (aliyun.com)
- 一文了解阿里云对象存储OSS (qq.com)
❤️Sponsor
您的支持是我不断前进的动力,如果您感觉本文对您有所帮助的话,可以考虑打赏一下本文,用以维持本博客的运营费用,拒绝白嫖,从你我做起!🥰🥰🥰
支付宝 | 微信 |