本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
当您的存储空间(Bucket)被恶意攻击、流量被恶意盗刷时,会出现高带宽或者大流量突发的情况,进而产生高于日常消费金额的账单。如果您希望降低因类似情况带来的大额资金损失的风险,请参考本文提供的多种安全最佳实践。
以下最佳实践遵循通用准则,并不等同完整的安全解决方案。这些最佳实践可能不适合您的环境或不满足您的环境要求,仅建议将其视为参考因素。请您在日常使用中提高数据安全意识并时刻做好内容安全防范措施。
大额资金损失风险
当您的Bucket被恶意攻击、流量被恶意盗刷时,会产生以下大额资金损失风险:
高额账单:当您的Bucket被恶意攻击、流量被恶意盗刷时,实际消耗了OSS的带宽资源,因此您需要自行承担攻击产生的流量带宽费用。
超出账户余额的账单:OSS按量计费,其账单金额受计费周期和账单处理时延等因素的影响,无法做到账户余额为0的情况下立即停机,因而可能会出现欠费金额大于0,或者单条账单的欠费金额直接超出您的延期免停权益范围。当您的存储空间(Bucket)被恶意攻击、流量被恶意盗刷时,极易出现高额账单,连带出现的风险是账单金额往往会超出您的账户余额。
阻止公共访问
OSS支持通过设置Bucket Policy以及ACL的方式实现公共访问。公共访问是指无需特定权限或身份验证即可对OSS资源进行访问。公共访问容易引发数据泄露以及被恶意访问而产生大量外网下行流量的风险。为避免公共访问可能带来的风险,OSS支持在OSS全局、单个Bucket、单个接入点和单个对象FC接入点的维度一键开启阻止公共访问。开启阻止公共访问后,已有的公共访问权限会被忽略,且不允许创建新的公共访问权限,以此关闭数据的公开访问渠道,确保数据安全。具体步骤,请参见阻止公共访问。
通过终端节点私网访问OSS资源
使用终端节点私网(PrivateLink)允许您将VPC与OSS进行安全的私有连接,避免通过公网访问带来的各种潜在安全风险。这种连接方式不仅可以提高数据安全性,还可以降低因恶意访问流量导致的大额资金损失的可能性。具体说明如下:
隔离性:使用终端节点私网访问OSS资源,可以将OSS与公共互联网隔离。确保只有在您明确授权的VPC内,才能访问到您的OSS资源,避免了来自公共互联网上的恶意访问和攻击。
控制权限:通过VPC内的终端节点,您可以更精细地控制对OSS资源的访问权限。例如,限制某些IP地址或子网的访问,或者设置特定的安全组规则等,进一步增强了安全性。
流量监控:在VPC内部署服务,您可以更好地监控和管理网络流量,及时发现并处理异常流量,防止恶意访问带来的风险。
具体步骤,请参见通过终端节点私网访问OSS资源。
修改ACL为私有访问权限
除非您明确要求包括匿名访问者在内的任何人都能读写您的OSS资源,包括存储空间(Bucket)以及文件(Object),否则请勿将Bucket或者Object的读写权限ACL设置为公共读(public-read)或者公共读写(public-read-write)。设置公共读或者公共读写权限后,对访问者的权限说明如下:
公共读写:任何人(包括匿名访问者)都可以对该Bucket内的Object进行读写操作。
警告互联网上任何用户都可以对该Bucket内的Object进行访问,并且向该Bucket写入数据。这有可能造成您数据的外泄以及费用激增,若被人恶意写入违法信息还可能会侵害您的合法权益。除特殊场景外,不建议您配置公共读写权限。
公共读:只有该Bucket的拥有者可以对该Bucket内的Object进行写操作,任何人(包括匿名访问者)都可以对该Bucket内的Object进行读操作。
警告互联网上任何用户都可以对该Bucket内的Object进行访问,这有可能造成您数据的外泄以及费用激增,请谨慎操作。
鉴于公共读或者公共读写权限对OSS资源带来的数据安全风险考虑,强烈建议您将Bucket或者Object的读写权限设置为私有(private)。设置为私有权限后,只有该Bucket拥有者可以对该Bucket以及Bucket内的Object进行读写操作,其他人均无访问权限。因此,在修改ACL为私有访问权限之前,请自行确认业务本身不受影响。
具体步骤,请参见设置存储空间读写权限ACL和设置文件读写权限ACL。
通过云监控配置报警规则
当您需要监控OSS资源的使用和运行情况时,可以通过云监控创建阈值报警规则,实现监控指标超过静态阈值或动态阈值后自动发送报警通知的功能,帮助您及时了解监控数据异常并快速进行处理。
例如,您可以为某个Bucket配置报警规则,并在报警规则中指定当连续一个周期(1周期=1分钟)出现公网流入流量、公网流出流量、CDN流入流量、CDN流出流量等在其大于或等于100 Mbytes,将告警信息写入日志服务指定的Logstore中。
以公网流入流量大于或者等于100 Mbytes时触发报警为例,其报警规则配置如下:
您可以基于Bucket的维度配置报警规则,您还可以为当前阿里云账号下的所有OSS资源配置报警规则。具体步骤,请参见创建报警规则。
配置防盗链
通过在OSS中配置基于请求标头Referer的访问规则,可以阻止某些Referer访问您的OSS文件,从而防止其他网站盗用您的文件,并避免由此引起的不必要的流量费用增加。
当浏览器向OSS发送请求时,请求标头中将包含Referer,用于告知OSS该请求的页面链接来源。如果配置了防盗链,OSS将根据请求的Referer与配置的Referer规则来判断是否允许此请求:
如果浏览器附带的Referer与黑名单Referer匹配,或与白名单Referer不匹配,则OSS将拒绝该请求的访问。
如果浏览器附带的Referer与白名单Referer匹配,则OSS将允许该请求的访问。
例如,某个Bucket配置了白名单Referer为https://10.10.10.10
。
用户A在
https://10.10.10.10
嵌入test.jpg图片,当浏览器请求访问此图片时会带上https://10.10.10.10
的Referer,此场景下OSS将允许该请求的访问。用户B盗用了test.jpg的图片链接并将其嵌入
https://192.168.0.0
,当浏览器请求访问此图片时会带上https://192.168.0.0
的Referer,此场景下OSS将拒绝该请求的访问。
更多信息,请参见防盗链。
设置跨域资源共享
跨域资源共享CORS(Cross-Origin Resource Sharing)简称跨域访问,是HTML5提供的标准跨域解决方案,允许Web应用服务器进行跨域访问控制,确保跨域数据传输的安全性。跨域访问是浏览器出于安全考虑而设置的限制,是一种用于隔离潜在恶意文件的关键安全机制。当A、B两个网站属于不同域时,来自于A网站页面中的JavaScript代码访问B网站时,浏览器会拒绝该访问。
OSS支持根据需求灵活配置CORS规则,实现允许或者拒绝相应的跨域请求。例如,您希望仅允许来源为www.aliyun.com
、跨域请求方法为GET
的请求,则CORS规则配置如下:
具体步骤,请参见设置跨域资源共享。
避免使用顺序前缀的方式命名文件
当您上传大量文件时,如果使用顺序前缀(如时间戳或字母顺序)、日期、数字ID等可以被遍历的方式来命名文件,攻击者可通过总结规律以及编写脚本的方式获取全部的文件,最终造成数据泄露。强烈建议您通过向文件名添加十六进制哈希前缀或以反转文件名的方式命名文件,从而有效降低文件名被遍历的风险。具体操作,请参见数据安全。