前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用腾讯云SCF实现COS费用封顶的最佳实践

使用腾讯云SCF实现COS费用封顶的最佳实践

原创
作者头像
wainsun
修改于 2023-04-13 07:32:13
修改于 2023-04-13 07:32:13
11.9K00
代码可运行
举报
运行总次数:0
代码可运行

概述

腾讯云COS对象存储,在使用的过程中,为了降低开发成本或单纯的出于“便捷”的考虑,往往将存储桶设置为公有读状态。但这也埋下了巨大的安全风险的种子,在各种流量盗刷场景下,会快速吸干账户余额,正可谓“公有一时爽,盗刷就破产”。

那么对于我们这些中小企业个人用户,盗刷都有哪些具体危害呢?

  1. 恶意竞争:盗刷流量的行为可能是某些企业或个人恶意竞争的手段,通过消耗竞争对手的流量来获取商业利益或个人利益。
  2. 经济损失:盗刷流量会导致网站运营商面临经济损失,因为他们需要支付更多的非业务流量费用,同时也会影响网站或应用的正常业务体验等。
  3. 法律维权:盗刷流量是一种违法行为,在盗刷导致损失后,需要收集相关证据,上报至网警备案,追根溯源进行打击。
  4. 无形成本:包括证据采集,日志分析,多方沟通产生的时间等额外无形成本。

那么有没有一种折中方案,允许我们在使用匿名用户访问的情况下的安全使用呢?既在常态模式下方便用户访问,又能在极端情况下为我们及时止损。

下面就介绍一下用过使用SCF来自动实现COS的权限修改的方式。

整体的逻辑为 创建SCF云函数-->定时拉取存bucket的准实时流量-->判断流量是否超过阈值-->修改为私有读方式

功能事件图

实现方式

功能介绍与组件

方案中所用到的产品包括

1.云函数(Serverless Cloud Function,SCF)

云函数的主要作用和优势

代码语言:txt
AI代码解释
复制
1)可以创建主动型触发事件,可根据需要设定触发周期。
代码语言:txt
AI代码解释
复制
2)已内置腾讯云 通用云openapi SDK以及COS SDK库,无需外部引用。
代码语言:txt
AI代码解释
复制
3)同园区与COS内网互访,不产生外网流量。

2.腾讯云可观测平台(Tencent Cloud Observability Platform,TCOP) AKA :(云监控

云监控主要作用

代码语言:txt
AI代码解释
复制
1)多维度采集COS监控项,包括外网流量,请求次数,CDN回源流量,跨地域复制流量等等。更多指标详见

https://cloud.tencent.com/document/product/248/45140

代码语言:txt
AI代码解释
复制
2)数据采集延时低,通过实际测试,一般10分钟内可采集到分钟级数据指标。

实现逻辑与步骤

云监控调用方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# MetricName 参数 InternetTraffic 指的是外网下行流量
     
    req = models.GetMonitorDataRequest()
    params = {
        "Namespace": "QCE/COS",
        "MetricName": "InternetTraffic",
        "Period": 60,
        "StartTime": time_start.strftime("%Y-%m-%d %H:%M:%S"),
        "EndTime": time_end.strftime("%Y-%m-%d %H:%M:%S"),
        "Instances": [
            {
                "Dimensions": [
                    {
                        "Name": "bucket",
                        "Value": bucket
                    }
                ]
            }
        ]
    }
    req.from_json_string(json.dumps(params))

返回数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "Response": {
    "DataPoints": [
      {
        "Dimensions": [
          {
            "Name": "bucket",
            "Value": "wainsun-1253985742"
          }
        ],
        "Timestamps": [
          1680576000,
          1680576060,
          1680576120,
          1680576180,
          1680576240,
          1680576300
        ],
        "Values": [
          155189649,
          169098752,
          0,
          0,
          0,
          0
        ]
      }
    ],
    "EndTime": "2023-04-04 10:45:00",
    "MetricName": "InternetTraffic",
    "Msg": "",
    "Period": 60,
    "RequestId": "57d5d310-0989-47db-8982-26b1903afe85",
    "StartTime": "2023-04-04 10:40:00"
  }
}

返回结果中

Timestamps以及对应的Values是我们得到并用于判断的数据信息。通过简单的SUM就可以得到这个时间段的总流量,从而做出限制性操作。

实践案例

介绍一个具体的实践案例,展示如何使用以上方法来实现流量费用封顶。

  1. 登录腾讯云官网,进入到SCF控制台--函数服务--选择园区--点击“新建”按钮
  1. 选择模板创建--过滤 timer关键词--找到定时拨测 标签:python3.6的模板
  1. 确认配置
代码语言:txt
AI代码解释
复制
1)修改自定义函数名称,修改对应函数描述。
代码语言:txt
AI代码解释
复制
2)确认函数代码执行环境为运行环境:Python3.6执行方法: index.main\_handler
代码语言:txt
AI代码解释
复制
3)启动日志,选择默认配置
代码语言:txt
AI代码解释
复制
4)修改触发器为自定义创建,触发方式定时触发,周期修改为每1分钟
代码语言:txt
AI代码解释
复制
5)点击完成
  1. 创建函数并设置函数代码

创建过程很快,十几秒可创建成功。

进入到函数管理--函数代码--复制github上的脚本内容 到函数内。

https://github.com/colasun/serverless-demo/tree/master/Python3.6-COSLimitSpendingDemo/src

如果不能访问github,也可以下载文章下面附件中的函数代码内容并粘贴进来。

注意,这里需要按照自己的环境,修改4个必选变量

secret_id 和 secret_key

这个是账号的API 秘钥,建议使用子账号秘钥,子账号需要授权COS存储桶的putbucketacl权限。

region

这个是存储桶所在地域,更多地域信息可参见 COS地域列表

bucket

这个是存储桶的完整名称,通常为bucket-appid的形式,这个可以在COS控制台的桶列表中查看到。

其他可选变量

"MetricName": "InternetTraffic",

这里默认设置为公网下行流量,其他监控指标详见

if _flow > 100*1024*1024:   #超过100MB流量阈值 

这里默认设置100MB,主要用于测试,测试完成后根据业务所需要的限额流量自行设置。

  1. 部署与测试

点击测试,会自动执行 :部署+1次函数 触发

执行正常可以看到测试成功,并返回执行日志。

  1. 验证有效性

设置对应存储桶权限为公共读权限,并验证匿名访问一个对象,正常可以返回200 ok

找到一个大于我们设置阈值100MB的文件,再次下载。

注意:不要使用同地域的CVM或docker测试,同地域走内网,不会产生公网下行流量。

大约10分钟后,可以看到云函数检查到了公网下行流量超过阈值,并将存储桶ACL改为私有。

控制台检查并再次匿名测试下载资源

均符合预期。

这样就实现了盗刷场景发生后自动及时止损。这里为什么会延时10分钟的,这个是因为存储桶数据的采集,向云监控推送,统一计算等等均需要时间。所以根据实践测试,将延时设置为10分钟。

总结

上面通过这个实践,我们将SCF,COS,云监控整合在一起,通过基础数据采集,事件触发,ACL修改等方式,实现了盗刷即停服的保护措施,同时又弥补了告警+人工处理的时效性低的问题。针对于费用敏感又必须使用匿名方式对外提供访问的用户,是一个比较适合的方案。

多说几句。

上面的实践是通过检测外网下行流量并修改存储桶的ACL的方式实现止损。

如果使用CDN(回源鉴权)+COS的方式,那么修改私有是没有效果的,因为CDN的回源参数都会带上签名,这样的场景就需要修改授权CDN的策略来实现止损,(需要将授权给CDN策略的allow改为deny),接口调用方式详见。如果有朋友需要也可以在下面留言,我会再补充文档。

再多说几句。

如果对停服敏感,可以将代码中这段注释去掉。这样就可实现盗刷流量峰值过去后即恢复服务。但可能有反复盗刷的情况。对于结果优劣各位亲家自行评估。

index.rar

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
COS&CDN防盗刷方案
近年来随着互联网行业的发展,我们很多开发者小伙伴会使用云服务器、轻量应用服务器等云产品来搭建图床、博客等站点,但是传统iass层产品的外网带宽费用较贵,以至于外网带宽非常小就导致单一站点的访问压力非常大,几个人同时访问网站时,网站就经常出现图片加载失败等情况。所以像宝塔、WordPress、开源图床等软件商,也都推出了对接对象存储、内容分发与网络等云产品的内置插件,来减轻源站的压力并且加速网站的访问速度,并且对象存储产品,还可以有效的减少网站存储空间压力。但是云产品也是一把双刃剑,给用户们带来高速体验的同时,也同时带来了潜在风险,例如存储桶内的文件被恶意高频次的访问,产生了高额的流量账单费用,同时云厂商也为此付出了高昂的流量费用成本,所以因恶意攻击或流量盗刷产生的高额账单云厂商也是受害者,无法为用户免除费用。因此,为尽量避免此类潜在风险,本文为您介绍这一类情况的应对办法。
yjwang
2023/03/13
17K6
COS&CDN防盗刷方案
运维干货|对象存储COS成本管理秘籍
成本管理是业务运维的一项重要内容,我们在使用云产品时一定要熟悉其计费规则,在保证服务质量、数据安全的前提下尽可能的降低服务运营成本,下文从预防预期外成本增长、现有成本的优化、以及成本的持续运营思路来探讨对象存储COS成本管理方案。
覃春善
2021/02/25
2.9K0
运维干货|对象存储COS成本管理秘籍
对象存储COS-防盗刷指引
近年来,越来越多的用户在搭建网站或图床时将图片视频等资源上传到对象存储COS,提升了访问稳定性的同时降低了服务器的存储空间压力,但随之而来的流量盗刷、图片盗链问题也困扰着不少开发者,一旦存储空间被恶意访问,会产生高额的流量费用,产生不必要的纠纷。这类问题实际上可以通过多种手段来防护,本文将主要介绍一些常见的防护手段,帮助开发者合理配置存储桶,建立安全机制,降低因类似问题带来的大额资金损失的风险。
云存储
2023/09/22
1.9K0
对象存储COS-防盗刷指引
基于腾讯云的个人网站架构
本文介绍如何基于腾讯云的各种云产品优雅地搭建个人网站,涉及的云产品有云服务器、SSL、企业邮箱、对象存储、CDN、云函数、API网关、云监控等。
zhayujie
2020/06/17
5.5K0
基于腾讯云的个人网站架构
卢萌凯:玩转SCF与COS的结合应用
大家好。我是腾讯云中间件及无服务器云函数架构师。我今天介绍分四部分:第一,对象存储COS简介。第二,比较实用的一部分,SCF与COS结合使用的应用场景。第三,比较有意思,人脸识别Demo。调用AI的接口,用几行代码就把人脸识别的Demo就实现了。最后一部分是最佳实践。其实主要是来看一下在COS使用过程当中有哪些需要注意的地方。
腾讯云开发者社区技术沙龙
2018/08/29
2.2K0
基于SCF+CloudMonitor实现COS敏感操作监控告警
作者介绍 饶云枭:腾讯云前端高级工程师,现主要负责对象存储COS相关前端研发工作,最近正在探索COS与其他云产品进行结合的轻应用场景。 导读 数据,是一家公司最核心的资产,也是业务的生命线,随着近年来数据上云的趋势,越来越多的公司都选择将数据托管在对象存储服务上。 有这么一个故事 这其实是一次事故,成立不久的创业公司T公司也是其中一员,他们最近就遇到数据安全相关的问题,一个新员工的误操作导致数据丢失,让我们看看到底发生了什么并分析下如何规避该类问题。 画面切换到T公司办公室
云存储
2020/07/14
7880
使用 SCF 自动刷新被 CDN 缓存的 COS 资源
本实践将引导您在使用腾讯云对象存储 COS 上传对象时,借助云函数 SCF 实现自动刷新在 CDN 上指定的缓存文件,让其自动获取到更新后的资源。
云存储
2020/05/26
3.4K0
使用 SCF 自动刷新被 CDN 缓存的 COS 资源
GitHub Actions+腾讯云COS+SCF云函数刷新CDN自动化部署静态网站
Stille:互联网重度爱好者,喜欢追求一切基于互联网的前沿科技、技术、产品,目前从事互联网软硬件相关工作。
云存储
2020/05/26
2.4K1
【玩转腾讯云】GitHub Actions + 腾讯云COS + SCF云函数刷新CDN 自动化部署静态网站
作为强迫症患者,一直对自动化部署非常痴迷,个人认为全自动部署最重要的就是稳定可靠,经过研究测试,最终使用GitHub和腾讯云两大平台,成功完成了全自动部署网站的实践.
Stille
2020/04/21
6.1K3
【玩转腾讯云】GitHub Actions + 腾讯云COS + SCF云函数刷新CDN 自动化部署静态网站
SCF函数同个COS目录前缀后缀实现ZIP自动解压缩功能
登录控制台-》访问管理-》角色-》新建角色-》选择角色载体-》选择腾讯云产品服务-》QcloudAccessForCOSBatchRole载体勾选后下一步确认,具体步骤如下截图:
╰ゑ迷羊ぉ
2020/03/11
1.2K0
SCF函数同个COS目录前缀后缀实现ZIP自动解压缩功能
Cloudreve添加腾讯云对象存储策略教程
Cloudreve安装好后就可以添加存储策略了,设置文件存储的位置,我将文件存储在腾讯云对象存储,使用腾讯云内容分发进行下载加速和保护源站。
幻影龙王
2023/01/17
8.5K0
Cloudreve添加腾讯云对象存储策略教程
云监控最佳实践:在SCF中上报自定义监控数据
目前内测阶段免费使用,无需审核,开通服务即用。诚邀您点击 申请页面 参与内测体验!
腾讯云可观测平台
2019/12/20
1.4K0
云监控最佳实践:在SCF中上报自定义监控数据
GitHub Actions + 腾讯云COS + SCF云函数 + 自动刷新CDN 完美自动化部署静态网站
作为强迫症患者,一直对自动化部署非常痴迷,个人认为全自动部署最重要的就是稳定可靠,经过研究测试,最终使用GitHub和腾讯云两大平台,成功完成了全自动部署网站的实践.
用户8851537
2021/07/30
1.6K0
cdn+cos,1+1>2!
所以从流量的费用上来计算,最理想的状态(cdn缓存住所有数据,cos数据不进行更新),每GB可以节省0.29元。 当然,这只是极特殊情况;那么看下最坏的情况,cdn侧数据完全不缓存,通过cdn分发cos侧数据流量费用为:0.21(cdn访问流量)+0.15(cdn回源cos流量)=0.36元/GB,每GB也要节省0.14元。
杜志强
2020/10/28
1.8K0
cdn+cos,1+1>2!
使用腾讯云函数SCF快速解压对象存储COS中的ZIP文件
在本实践中,我们用到了云函数 SCF 和对象存储 COS。假定用户上传到 COS 的 zip 文件需要进行解压缩,并以 zip 包名作为文件夹名,回传到 COS。用户可根据示例代码进行扩展,例如支持其他格式文件的解压缩操作。
云存储
2019/11/26
4.3K0
使用腾讯云函数SCF快速解压对象存储COS中的ZIP文件
【scf】scf工具使用cos部署应用
登录腾讯云Serverless 控制台,单击左侧导航栏的函数服务可以创建云函数,也可以单机左侧导航栏的Serverless 应用来新建应用
williamji
2022/11/08
7540
SCF VS Code 实践:基于腾讯云scf和对象存储cos实现的图床。
clone本仓库或者下载zip包直接上传腾讯云无服务器云函数也可(这里强烈推荐下腾讯云云函数产品的命令行工具SCF CLI)
用户1618303
2019/10/07
1.8K1
SCF VS Code 实践:基于腾讯云scf和对象存储cos实现的图床。
使用 SCF 自动刷新被 CDN 缓存的 COS 资源
当静态内容需要更新时,通常会往 COS 覆盖上传一个更新版本的资源或删除该资源。若您配置的 CDN 缓存过期时间较长,则 CDN 的某些边缘节点可能会仍然缓存旧资源。缓存过期时间太短,则会影响到加速的效果。具体详情请参见 节点缓存配置 的相关信息。
haimingli
2020/12/29
1.7K0
通过云函数SCF把视频处理VC迁移到云转码
本文将引导你逐步把视频处理的功能迁移到云转码,从腾讯云官网得知,视频处理VC的功能已迁移至云转码,不过老用户依然可以正常使用视频处理VC,但云转码不支持文件上传到cos后自动转码,需要调用一次云API发起转码;
美女视频
2019/07/24
1.8K0
通过云函数SCF把视频处理VC迁移到云转码
Mastodon 对接腾讯云 COS 存储实战
看到文档活动中心出了 COS 征文活动,就又来参加了,这次会介绍一下自己在微博客场景下是如何使用 COS 的
远哥制造
2022/08/30
40.8K1
Mastodon 对接腾讯云 COS 存储实战
推荐阅读
相关推荐
COS&CDN防盗刷方案
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验