放弃自己的基础设施真的安全吗? – Lukasz Sielski –中

放弃自己的基础设施真的安全吗?

这个问题听起来有点过时了。 我们已经在办公室另一端的橱柜里放了自己的金属盒。 首先,我们移至门控数据中心中的专用服务器,然后移至运行在更多密封计算机上的虚拟主机。 后来,我们决定将它们包装在密封的容器中,然后交付到云中某处的执行环境,而不是将它们放在服务器上。 但是,我们还有一步要做。 彻底杀死基础设施,包括操作系统。

让我们现实一点。 即使是互联网上最大的玩家,也无法在地堡中处理他们的数据。 他们向AWS,Azure,DigitalOcean或Google之类的提供商付款,以运行其服务器,并期望具有完全的安全性。 是的。 最简单的是像Digital Ocean这样的设备,至少要确保机器在适当的故障转移和监视下,在安全的建筑物内,远离公众,保持安全。 像AWS这样的更复杂的设备使用安全组构建多层防火墙,或者通过VPN完全将您的东西与网络分离。 尽管如此,总有打开的窗口。 该窗口就是您的实例,比方说EC2或Droplet正在监听网络。 它倾听好东西,但也听坏东西。 那是你的薄弱环节。 那就是你被抓的地方。

如果您很la脚,则可能使FTP运行并保持打开状态,或者您为根SSH帐户使用了弱密码。 如果您采取了应有的操作,并使用RSA密钥和禁用的root登录保护了访问的安全,那么仍然有些地方可能会失败。 像您的HaProxy,Nginx或Apache。 它们中的每一个都会时不时地表现出一些弱点,通常是在DDoS攻击的压力下或PHP / Node / Python / Ruby / Java应用程序中的失败。

我将在下一次讲到关心所有问题的实际成本。 现在,请相信我,这很昂贵。 通常,这是您不想关心的事情。 您无需担心遭受攻击或负载超出服务器时会发生什么。 如果您成功(交通),然后由于成功而失败(停机),该怎么办?

因此,现在考虑一个简单得多的世界。 不运行大型WordPress或Meteor的地方。 您的应用程序是单页JavaScript应用程序,无论您希望从S3存储桶中投放什么。 它向您的API发出请求,该API主要是涵盖了AWS Lambda函数集的API网关。 每个功能都是一个小程序,可根据要求在密封容器中运行。 您可以决定哪些功能有权使用SES发送电子邮件或访问DynamoDB进行读取,写入或两者都有。 用户点击您的页面时,您无需执行所有繁重的操作。 您可以延迟请求缩略图。 用户已将图像上传到自己的个人资料,并看到该图像已保存,可以继续操作。 同时,S3存储桶发送了一个事件,告诉Lambda函数它需要缩略图。 此功能触发了几个子进程,每个子进程创建一个高质量的缩略图并将其保存在存储桶中。 甚至您也没有人可以登录到服务器。 什么服务器? 它是一朵云。 没有物理形式。 您可以使用令牌,电话中的电子邮件,密码和代码登录主帐户。 您(同事)只能有限地访问资源,而不能访问实时数据库。

现在让我们看看。 这是一个安全的世界吗?

S3,DynamoDB,Lambda,API网关-更少实例,无服务器,无限扩展

问:我可以存储多少数据?

数据的总量和 可以存储的对象数是无限的 单个Amazon S3对象的大小范围可以从最小0字节到最大5 TB。 单个PUT中可以上传的最大对象为5 GB。 对于大于100兆字节的对象,客户应考虑使用分段上传功能。

问:Amazon DynamoDB中可以存储多少数据有限制?

不可以。您可以在Amazon DynamoDB表中存储 的数据量没有限制 随着数据集大小的增长,Amazon DynamoDB将自动将数据分布在足够的机器资源上,以满足您的存储需求。

API网关可节制流量,S3,DynamodDB和Lambda可以完美处理负载-DDos将失败

问:如何解决或防止API威胁或滥用?

Amazon API Gateway支持API 中每种方法的 限制 设置。 您可以在REST API中为每种方法设置每秒的标准速率限制和突发速率限制。 此外, 无论是使用伪造请求(第7层)还是SYN泛滥(第3层)进行攻击 ,Amazon API Gateway都会 自动保护 您的后端系统免受分布式拒绝服务( DDoS )攻击。

问:如果来自我的应用程序的流量突然激增怎么办?
Amazon S3完全是为处理任何Internet应用程序的流量而设计的。 随用随付的定价和 无限制的容量 可确保您的增量成本不会改变,并且服务不会中断。 Amazon S3的巨大规模使我们能够平均分散负载,因此流量高峰不会影响单个应用程序。

问:我可以从单个表中获得多少吞吐量是否有限制?

不可以,您可以使用UpdateTable API或在AWS管理控制台中提高为表配置的吞吐量。 DynamoDB能够大规模运行,并且 您可以实现 的最大吞吐量没有理论上的限制 DynamoDB自动将您的表划分为多个分区,每个分区都是一个独立的并行计算单元。 通过添加更多分区,DynamoDB可以实现越来越高的吞吐率。

如果您希望超过10,000次写入/秒或10,000次读取/秒的吞吐率,则必须首先通过此在线表格联系Amazon。

问:如何扩展AWS Lambda函数?

您不必扩展Lambda函数-AWS Lambda 可以代表您 自动扩展它们 每次收到有关您的功能的事件通知时,AWS Lambda都会在其计算团队中快速查找可用容量并运行您的代码。 由于您的代码是无状态的,因此AWS Lambda可以 根据需要 启动 任意 数量 的功能 副本 ,而不会造成长时间的部署和配置延迟。 缩放功能没有基本限制。 AWS Lambda将动态分配容量以匹配传入事件的速率。

我真的必须多说吗?

但要记住。 一切都取决于您如何编写功能代码,设置角色和权限。 但这已经减少了要做的工作。

资料来源
API网关https://aws.amazon.com/api-gateway/faqs/
DynamoDB https://aws.amazon.com/dynamodb/faqs/
Lambda https://aws.amazon.com/lambda/faqs/
S3 https://aws.amazon.com/s3/faqs/