如何在分布式、可伸缩环境中保护你的秘密?
去年十月份,在阿姆斯特丹 速度会议 上,来自 Fugue的首席安全工程师 Alex Schoof 解释 了如何在一个分布式、可伸缩的环境中管理秘密,比如云平台。Schoof提议将秘密管理系统分解成多个组件,每个组件都有自己特定的功能,并将彼此孤立,以减少必要的表面接触。
据 Schoof所言,该设计是考虑了5项原则进行大规模秘密管理后的结果。秘密管理系统应该严格依赖认证、授权和访问控制策略,以保证每个客户只能访问秘密的一个子集。
Schoof强调,该系统应该易于使用,允许快速访问和更新到期的秘密。有一点很重要,应该避免让用户以编码或者纯文本文件的形式通过硬编码或者存储秘密围绕系统工作,因为这会破坏系统的目的。因为你的系统依赖秘密,因此Schoof建议实施高可用性架构,避免秘密管理系统发生故障时所有系统的停机时间。
Schoof称被加密在数据库中的代码为“秘密库(secret store)”,称独立存储在另一个数据库中用于加密和解密的密匙为“主密匙库(master key storage)”。这两个组件是彼此孤立的,只能通过“秘密服务(secret service)”进行访问。
任何客户端、用户或者计算机需要访问秘密时,必须将请求发送至秘密服务。秘密服务可以是一个网络服务,需要客户端的身份认证和验证客户端的权限。该服务从秘密库中请求服务,并从主密匙库中请求相应的密匙。然后用密匙解密秘密,并将秘密发送回客户端。
你还需要一个管理界面来配置系统。这可以是个网站、图形用户界面程序或者一组命令行工具,用来授权或者撤销授权,同时配置访问控制策略。秘密服务应该允许能够提供身份认证的所有客户端的访问,与秘密服务形成鲜明反差的是,管理界面、主密匙库和秘密库必须要有严格的访问策略。它们应该是,例如,只能通过特定的网络进行访问,并且需要额外级别的身份认证,允许访问的用户数量也是有限的。
Alex Shoof发表的“ Managing systems at scale ”演讲,现场挤满了人,并且他的演讲是速度会议上通过 O’Reilly移动应用或者速度会议网站投票结果中评价最高的演讲之一。
查看英文原文: Keeping Your Secrets Safe in a Distributed and Scalable Environment
来自: http://www.infoq.com/cn/news/2015/12/safe-secrets-at-scale