使用 Docker 保护软件供应链安全 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Recommended Services
Amazon Web Services
LeanCloud
New Relic
ClearDB
Tenxcloud10
V2EX    云计算

使用 Docker 保护软件供应链安全

  •  
  •   Tenxcloud10 2016 年 9 月 7 日 2488 次点击
    这是一个创建于 3491 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在 Docker 内部,我们花了很多时间讨论一个话题:如何将运行时安全和隔离作为容器架构的一部分?然而这只是软件流水线的一部分。

    我们需要的不是一次性的标签或设置,而是需要将安全放到软件生命周期的每个阶段。

    由于软件供应链上的人、代码和基础设施一直在改变,交互也越来多,组织(公司)必须将安全纳入供应链的核心部分。

    考虑一个实际存在的产品:如电话,仅仅考虑到最终产品的安全性是不够的。除了决定使用什么样的防盗包装,你可能也想知道材料的来源,以及他们是如何组装,包装,运输。因为,重要的是我们还要确保手机不被改造或运输途中被盗。

    软件供应链几乎跟实际产品的供应链是相同的。你必须能够识别和信任原材料(代码、依赖、打包),把它们组装在一起后,将它们从海上、陆上或空中(网络)运输到一个存储地(存储库),以便将项目(应用)出售(部署)给终端用户。

    确保软件供应链也十分相似。你需要:

    ● 确定流水线中的所有东西,从人,代码,依赖关系,到基础设施

    ● 确保一个一致和优质的构建过程

    ● 在存储和运输中保护产品

    ● 对材料清单的交付保证并验证最终产品 在这篇文章中,我们将诠释 Docker 的安全特性如何为软件供应链提供持续的安全。

    身份

    整个流水线构建在身份验证和访问控制之上 。从根本上说,你需要知道谁可以访问什么资产,可以使用哪些操作。

    Docker 架构中的身份认证理念很清晰,它隐藏在软件供应链策略中:加密密钥允许发布者对镜像进行签名,以保证其来源的真实性。

    一致的构建:好的输入= 好的输出

    确定一致的构建允许你创建一个可重复的过程,并控制你的应用程序依赖和组件,以便使它更容易测试出缺陷和漏洞。当你对你的组件有一个清晰认识的时候,它变得更容易识别异常的组件。

    要获得一致的构建,你必须确保你添加了优质的组件:

    ● 评价依赖的质量,确保它是最新 /兼容的版本,并用你的软件进行测试

    ● 验证组件来自于你期望的来源,并且在传输过程中没有损坏或改变

    ● 确定依赖后不要轻易改变,确保后续重建是一致的,因此如果一个缺陷是由代码或依赖的变化引起的,很容易被发现

    ● 使用 Docker Content Trust ,从可信的、有标识的基础镜像中构建你的镜像

    使用签名”密封”构建结果

    应用程序签名是从构建进行有效“密封”的一步。通过镜像签名,可以确保任何在接收端( docker pull )的签名验证与镜像发布者建立一个安全链。

    这种关系保证了镜像在传输过程中不被改变、添加、或删除。此外,签名表明发布者“赞同”你拉取的该镜像是没问题的 。

    在构建机器和运行环境上启用 Docker Content Trust 后,一个策略就会生效:只有签名镜像才可以被拉取并运行在那些 Docker 主机上。

    在组织中,签名的镜像向其他人传递一个信号:发布者(构建者)声明镜像是没问题的。

    安全扫描和风控

    CI 系统和开发者都需要确认一件事情:构建工具与依赖一起工作,操作你的应用程序时,无论在成功还是失败,都有预期的行为。

    但他们审查过依赖的漏洞吗?审查过子依赖或捆绑系统库的依赖吗?他们知道依赖的许可证吗?这种审查很难通过常规的方式来完成,因为提供错误修正和功能上是一个巨大的开销。

    Docker 安全扫描有助于镜像的自动化扫描。因为这是发生在镜像被推送到 registry 之前,在容器被部署进生产环境之前的最后一次检查。

    该功能目前在 Docker Cloud 中可用,并且很快延伸到 Docker Datacenter 。安全扫描创建了一个清单,清单中包括镜像每一层的打包信息和版本信息。

    这份材料清单被用于连续监测各种 CVE 数据库。确保该扫描不止一次地发生,并在爆出新漏洞时,及时通知使用镜像的系统管理员或应用程序开发者。

    多重签名-- 把签名绑在一起

    安全保证最强大的一点来自 Docker Content Trust 签名,它允许多个签名者参与容器的签名过程。要了解这一点,想象一个简单的 CI 过程,通过以下步骤移动容器镜像:

    1. 自动化 CI

    2. Docker 安全扫描

    3. 推送到 staging 环境

    4. 推送到 production 环境

    这里有四个阶段,每个阶段完成后,都可以添加一个签名,从而 CI/CD 过程的每一个阶段都有验证。

    1 、镜像通过 CI 吗?添加签名!

    2 、 Docker Security Scanning 确定镜像没有漏洞?添加签名!

    3 、 staging 阶段中构建成功?添加签名!

    4 、验证所有 3 个签名的镜像并将其部署到生产中 现在构建被部署到生产集群之前,它可以加密验证, CI / CD 过程各阶段已经签订了一个镜像。

    结论

    在软件生命周期的每个环节, Docker 平台都允许企业将安全纳入其中。从与用户建立信任,到基础设施和代码, docker 模型给了开发者以及 IT 团队足够的自由和控制力。

    从构建安全的基础镜像,到扫描每一个镜像验证签名,每个特性都允许 IT 人员将信任植入到应用中。

    当应用沿着正常的生命周期不断前行,安全信息也能够动态维护和更新,并在部署到生产环境之前通过风控检查。

    本文由时速云翻译,如若转载,需注明转载自“时速云

    原文链接: https://blog.docker.com/2016/08/securing-enterprise-software-supply-chain-using-docker/

    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     987 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 22:18 PVG 06:18 LAX 15:18 JFK 18:18
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86