InfoQ访谈:如何应用多云环境工具Cloud Discovery

Cloud Discovery是Twistlock提供的一个开源工具。它能连接到云供应商并获取一个清单,其中包含已部署的全部基础设施资源。Cloud Discovery用聚合的方式收集和报告资源的元数据。此外,提高了跨环境可见性后,可以识别出应用程序的安全漏洞,例如哪些资源缺少防火墙规则。

Cloud Discovery是Twistlock提供的一个开源工具。它能连接到云供应商并获取一个清单,其中包含已部署的全部基础设施资源。Cloud Discovery用聚合的方式收集和报告资源的元数据。

借助Cloud Discovery,用户不用再搜寻不同云供应商的控制台,手动地遍历所有服务页面(比如像AWS EC2或Azure 虚拟机),然后导出数据并在电子表格中重新校对。 此外,提高了跨环境可见性后,可以识别出应用程序的安全漏洞,例如哪些资源缺少防火墙规则。举例来讲,在 CI/CD管道中增加云资源后,你可以使用Cloud Discovery执行安全检查,然后在新的更改生效前自动告警或者应用程序补丁。 无论应用程序部署在AWS、Azure还是Google Cloud Platform,Cloud Discovery仅需要只读权限就可以收集必要的信息。

除了能发现云供应商提供的服务外,Cloud Discovery 还可以识别“自安装”的云原生组件,例如EC2实例上的Docker注册表或者由用户管理的Kubernetes API服务器。 然后,借助收集到的数据,它能识别出群集上那些薄弱的安全设置,例如公开可访问的SSH。

为了进一步了解案例以及如何使用Cloud Discovery,InfoQ最近与Twistlock首席架构师Liron Levin进行了一次交流。

InfoQ:为什么要选择Cloud Discovery来获取已部署资源的清单,而不用云供应商的原生度量工具?

Liron Levin:如今,云供应商正以惊人的速度推出新服务,开发人员也很乐于尝试它们。 这两个趋势引发了一场完美的“风暴”,让组织无法准确知道哪些服务正在部署、部署在哪个云供应商或云区域,以及有哪些具体权限。 我们希望使所有组织都能快速、轻松地了解已部署的服务以及部署在哪里,让他们知道云原生服务快速发展导致的“未知的未知”。

Cloud Discovery能让组织提高跨云可见性,进而着手保护这些资源,无论是PaaS还是IaaS资源。 缺少安全保护措施的服务越多,组织就越容易受到攻击和威胁。 借助Cloud Discovery,组织能即刻获取部署在不同公有云上的云工件的完整清单,并能了解哪些工件有安全保护,哪些没有。

InfoQ:在多云环境中,如何快速上手使用Cloud Discovery?在哪里以及如何部署它?

Levin:Cloud Discovery能在容器中作为独立服务运行。例如,你可以运行以下命令来启动一个容器:

docker run -d --name cloud-discovery --restart = always \
 -e BASIC_AUTH_USERNAME = admin -e BASIC_AUTH_PASSWORD = pass -e PORT = 9083 -p 9083:9083 twistlock / cloud-discover

然后,要扫描并列出所有部署在AWS上的资产,你可以使用以下API向Cloud Discovery发送查询请求:

 curl -k -v -u admin:pass --raw --data \
'{"credentials": [{"id":"<AWS_ACCESS_KEY>","secret":"<AWS_ACCESS_PASSWORD>"}]}' \
https://localhost:9083/discover\

或者,如果想从GCP获取相同的信息,你可以使用以下调用:

SERVICE_ACCOUNT=$(cat <service_account_secret> | base64 | tr -d '\n')
curl -k -v -u admin:pass --raw --data '{"credentials": [{"secret":"'${SERVICE_ACCOUNT}'", "provider":"gcp"}]}' https://localhost:9083/discover?format=json

目前我们正在为Azure添加支持。

InfoQ:如何将Cloud Discovery与其它工具集成?

Levin:我们在构建Cloud Discovery的过程中,把互操作性和易集成性当作重点。我们遵循Unix“只做一件事情,并把它做好“的理念进行设计,使它能抽取你所有的云原生服务的元数据,并以开放的标准JSON格式返回,无论这些服务部署在哪个云供应商、云帐户或云区域。 有许多对JSON支持良好的工具,这让监控、告警和变化追踪变得很简单。已经有人使用Cloud Discovery向审计人员提供报告,与他们的SIEM集成并对新部署的流氓服务发出告警,甚至用它帮助识别在云上的花费是否存在潜在的浪费。

因此,如果一个组织正在使用的监控技术栈支持JSON,则可以使用集成API来获取JSON格式的响应,并在所选工具中展示这些数据。 实际上,你可以编写一个应用程序,使用Cloud Discovery定时接收数据更新,然后通过相关的API更新监控和告警工具。

InfoQ:您能举例说明如何集成Cloud Discovery吗?告警可配置吗?

Levin:例如,用户可以在自己的环境中使用Cloud Discovery每天执行端口扫描命令,如下所示:

curl -k -v -u admin:pass --raw --data '{"subnet":"172.17.0.1", "debug": true}' https://localhost:9083/nmap

上面的调用生成的输出如下图所示:

在这个例子中,你能很快判断出有人配置了一个注册表和一个MongoDB实例,但它们都不安全,因为其未经授权。

然后,这些JSON数据会被发送到告警系统,并进入预定义的调度流程。接着,系统会向相关人员会发送告警通知,让他们知道有不安全的或这不应该存在的资产。

InfoQ:Cloud Discovery的路线图是什么?

Levin:Cloud Discovery已经支持三大主要的云供应商(AWS,GCP和Azure),但我们希望在不久的将来增加对IBM Cloud和Oracle Cloud的支持。 此外,我们正在为常用的非安全应用添加更多检查,这些应用包括RabbitMQRedisPostgresWordpress(暴力破解支持)、ElasticsearchKibanaVault(确保配置了https)和Nats

针对这些非安全应用,我们正在开发第三个增强功能。这个功能可以探测对常用密码的暴力破解。 它包括更多的暴力破解探测检查,既能检查预定义的用户名和密码,也能检查自定义密码列表。

InfoQ:Cloud Discovery是Twistlock的首次独立贡献。但是您之前一直活跃在开源社区,对吗?

Levin:是的,我们的团队构建了Docker的授权框架。OpenShift、Open Policy Agent和Docker Swarm的第三方可插拔敏感数据后端使用了该框架。 我们还为Kubernetes CIS基准做出了贡献。 我们的首席技术官John Morello与他人共同撰写了NIST SP 800-190,即容器安全指南。我们的研究机构Twistlock Labs发现并公开披露了14个安全漏洞,其CVE ID已收录到NVD。 因此, 除了开源贡献,我们的团队还为改善整个云原生生态系统的容器安全性做出了重大贡献。

我们开源贡献的一些具体例子包括Docker的可插拔敏感数据后端Docker授权插件特权容器(privileged containers)与用户的兼容性使用TLS用户信息扩展Docker认证,以及对Docker注册表认证默认行为的更改

你可以从官方GitHub代码库访问基于Go语言的源代码,并查看对应不同云供应商的具体实现

查看英文原文https://www.infoq.com/news/2019/02/qa-cloud-discovery-multi-cloud

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章