我在 Amazon Web Services 上被扣了 14,000 美元
我们或许都会承认,我们偶尔会对自己撒谎。我记得我曾经想过:
我永远不会将我的代码放在公共存储库中,因为这是一个仅由我自己维护的自由项目。
事实是,生活中任何事情都有可能发生。
我每个月都使用 AWS 的 S3 来存储生产环境中几个应用的照片和文档,同时还使用 Route 53 路由应用本身的域名。我的月账单大约是 1 美元。没错,这几乎不算什么,但这个月(去年 4 月)我却不得不支付 14,267.86 美元(至少我的账单是这么写的)。
4月13日(一个令人昏昏欲睡的星期一),早上10点左右,我收到了一封来自亚马逊网络服务(AWS)的邮件,欢迎我使用EC2服务,这封邮件让我感到很开心。然而,当我收到这封邮件时,我竟然还不知道这项服务的存在。这让我怀疑自己是不是误收了这封邮件,还是我的账户……被黑了。
几分钟后,我给 AWS 支持部门写了一条消息,询问那封邮件的情况。他们很快就回复了我,并在不到 48 小时内给我打了五次电话。他们告诉我,我的账户可能已被盗用,并给了我一些建议,以加强账户安全,避免再次使用 EC2 服务。我删除了所有正在使用的访问密钥,添加了多因素身份验证,并更改了密码。(我不是在为 AWS 背书或推广,但我不得不说,AWS 支持部门的工作人员非常友善,这次真的帮了大忙。)
一切都始于一个无聊的周末(至少我是这样认为的)。我和一个朋友聊天,跟他聊起我正在做的一个业余项目。突然,我决定把我的代码放到 GitHub 上,给他炫耀一下。在我把它托管到 gitlab 上,让它保持私密之后,它在网上最多上线了 10 分钟。两天后,我收到了之前跟你说过那封来自 AWS 的邮件。
发生了什么?
包含我的 AWS 凭证的文件在 git 中没有被忽略,所以当我推送我的本地存储库时,所有内容,甚至我的凭证,都在 github 上线了(虽然只有几分钟,但它们确实在那里)。
建议
:请务必保密保存您的凭证。您可以使用环境变量来存储访问密钥和凭证,因为这些可能会危及您的账户或账单安全。千万不要只考虑本地存储库,毕竟现在互联网已经无处不在。
这是怎么发生的?
既然你可以列出 GitHub 上所有公共仓库,我设想一个作业/任务/进程/程序不断运行,克隆每个项目,并查找 .yml 文件和诸如“KEY”或“ACCESS_KEY”之类的关键字。这只是我对这件事怎么会发生的猜测。如果真是这样,我真为人们如此恶意却毫不顾忌后果而感到难过。
TL;DR
永远不要将您的 API 密钥留在公共存储库中(上传前务必检查)
经常查看您的电子邮件,不要将任何一封电子邮件视为错误
成为一名黑客,这样您就可以追踪并抓住偷走您密钥的人(好吧,这只是一个梦想)
祝你今天过得愉快!
(如果你还在疑惑,那我不用为没用的东西付钱。)