V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Explr
V2EX  ›  程序员

为什么国内云服务商的 API 鉴权机制往往比较复杂而国外的相对简单?

  •  
  •   Explr · 2020-10-05 22:19:40 +08:00 · 2972 次点击
    这是一个创建于 1299 天前的主题,其中的信息可能已经有所发展或是发生改变。

    腾讯云和阿里云的 API 鉴权都是公共参数+接口参数排序后计算 HMAC 当作签名。而 Cloudflare,Github,Godaddy 的 API 往往都是直接把凭据写进 HTTP 头,然后直接发请求。

    腾讯云 API

    阿里云 API

    Cloudflare API

    Github API

    使用 HMAC 的优点是凭据无需通过互联网传输,然而 API Key 的特点就是很长,保存在计算机上而不是用脑子记,可以定期更换,泄露也不会导致撞库攻击,为什么要对 API Key 采取比密码更严格的保护措施?以及 HMAC 方案应对的威胁模型是什么?

    另外,阿里云和腾讯云的 API 都单独具有抗重放攻击性,在两端点不被入侵的情况下 HTTPS 已经确保了这一点。如果客户机或服务器被入侵,HMAC 签名似乎也只能增大一点点攻击难度,理论上并不能阻止入侵或非法调用 API 。

    再者就是,如果一定要用数字签名,为什么他们不用JWS之类的方案,而要用排序接口参数再签名的方案?文档上也往往没有具体说排序的标准,大写在前还是小写在前也不清晰,尽管接口行为往往和编程语言的排序库行为一致,不过作为 API 文档来说,这是有歧义的。

    并且,阿里云 API 接口编码来编码去的,好像也没有比 JWS 简洁多少……

    5 条回复    2020-10-07 01:51:09 +08:00
    oott123
        1
    oott123  
       2020-10-05 22:27:06 +08:00   ❤️ 1
    你比较的对象错了,你要去看看 AWS 的 API 咋签名的,因为国内这些云也是参考 AWS 之类的东西的
    kangsheng9527
        2
    kangsheng9527  
       2020-10-05 22:35:17 +08:00
    相互伤害(增加攻击成本,计算消耗了攻击方 cpu 时间),防止低成本攻击。
    正如你说的保护原始 key 。。。增加接触 api 的人员门槛有助于整个圈子的健康。。。
    我是认同国内这一套的。。。
    刚好我也用过阿里云 api 。。。
    Explr
        3
    Explr  
    OP
       2020-10-05 22:38:21 +08:00
    @oott123 有道理,AWS 的方案是相似的,我最近在维护一个 ACME 客户端,从 Let's encrypt 自动获取数字证书,要用 API 增删 DNS 记录,所以就把阿里云、腾讯云和 Cloudflare 、Godaddy 联系起来了。不过说真的,为啥不用 JWS……
    Explr
        4
    Explr  
    OP
       2020-10-05 22:40:09 +08:00
    @kangsheng9527 对,不过我总不能为了增删一下 DNS 记录,就把整个阿里云 SDK 加进项目依赖吧……API 调用还得自己写……
    lihongming
        5
    lihongming  
       2020-10-07 01:51:09 +08:00 via iPhone
    安全性和方便性肯定是相对的,但有 SDK 的情况下,自己其实不用处理签名,通过 SDK 发起请求就好
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1701 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 17:06 · PVG 01:06 · LAX 10:06 · JFK 13:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.