浅谈块存储的安全配置

介绍

我们已经多次关注亚马逊S3、阿里云oss这类对象存储的安全性问题,比如Bucket的权限管理,上传文件的xss问题、AK\SK的保护。如果说对象存储Object Storage Service像云盘,而本文所说的块存储Block Storage是类似于机械硬盘、固态硬盘的“云硬盘”。亚马逊方面在Elastic Compute Cloud (EC2)的实例的持久块存储称为Elastic Block Storage。阿里云EBS是指为ECS云服务器提供的块设备,高性能、低时延,满足随机读写,可以像使用物理硬盘一样格式化、创建文件系统,可用于云硬盘、快照、模板。在底层所承载的分布式存储系统是盘古系统,技术实现类似于HDFS,分为Master、Client、Chunk Server,基本的产品矩阵如下:

在设计之初,主要关注的安全特性为:

  • 存储空间由很多chunk(数据块)组成,分布式存储的方式使得某处chunk被窃取,也不会发生数据安全问题;
  • 底层数据每个chunk通过三副本存储在集群中的不同节点上,保证数据可用性;
  • 为了满足云中静态数据加密的安全性和加密合规性要求,支持对于传输的和保存、启动的数据以行业通用的AES-256算法利用KMS服务的数据密钥加密,并在读取数据时自动解密;
  • 在传输过程中,使用 SSL 或 TLS 对数据进行加密;
  • 支持定期对 EBS 卷做快照,

Amazon EBS做得好的一点是可以对启动卷默认也加密。

安全

今年DEF Con来自Bishop Fox的高级安全分析师Ben Morris显示了公共EBS卷可能公开未加密公共暴露给外部客户,通过任意加载快照即可暴露磁盘内容,有点像本地C盘开启了共享,然后被攻击者以net use的方式挂载磁盘一样泄露安全信息。

很难界定是安全问题还是功能,只能说是客户不安全的配置,并非是云计算公司的问题。在亚马逊官网的最佳实践介绍中已经说明

By modifying the permissions of a snapshot, you can share it with the AWS accounts that you specify. Users that you have authorized can use the snapshots you share as the basis for creating their own EBS volumes, while your original snapshot remains unaffected. If you choose, you can make your unencrypted snapshots available publicly to all AWS users. You can't make your encrypted snapshots available publicly.

对此事也发出声明:“Amazon EBS快照默认情况下是安全的。客户可以控制快照是否设置为公共。已经通知所有无意间配置Amazon EBS快为公共访问的所有客户进行脱机处理。与往常一样,AWS建议客户在修改默认共享权限或将其公开之前查看快照中包含的数据。客户还可以配置其帐户以在其EBS快照和卷上默认强制加密。通过采用此设置,所有新EBS卷在发布时都会被加密,现有的未加密快照副本也是如此。“

问:如何发现已与我共享的 Amazon EBS 快照?

从 AWS 管理控制台“快照”部分的列表中选择“私有快照”,即可找到已与您共享的快照。本部分列出了您拥有的快照和与您共享的快照。

问:如何了解哪些 Amazon EBS 快照是全局共享的?

从 AWS 管理控制台“快照”部分的列表中选择“公有快照”,即可找到全局共享的快照。

这个快照功能类似于操作系统共有镜像功能,市场中共享镜像就是ECS实例系统盘某一时刻的快照,这个安全问题只是数据盘里可能有敏感信息而已。

笔者实践使用这样的命令可以自助审计

aws ec2 describe-snapshot-attribute    --region us-east-1    --snapshot-id snap-0ee33391e721cfe2f    --attribute createVolumePermission    --query 'CreateVolumePermissions[]'

当国外已经出现安全漏洞时,国内可能还没有实现这类功能….腾讯云CBS(云硬盘),百度云的CDS(云磁盘),华为云的EVS都没有存储快照功能,而阿里云类似的共享块存储功能仍处于内部测试中,但是可以翻看API手册方便预测此类安全威胁。

例如,通过github获取某子账户的ak和secret,

使用cli接口调用api查询./aliyun ecs DescribeDisks --RegionId cn-beijing --EnableShared true,

获取到目标DiskId后,执行匹配目标主机的命令:aliyun ecs AttachDisk --RegionId default --InstanceId InstanceId --DiskId DiskId即可绑定实例挂载云盘,当然该磁盘的状态必须为待挂载(Available)。

本文分享自微信公众号 - 安全乐观主义(gh_d6239d0bb816)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券