云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

免备案CDN_阿里云解析二级域名_

小七 141 0

布里奇沃特:用保险库保护他们的AWS基础设施

这是Bridgewater Associates系统工程师Joel Thompson的客座帖子。Joel是Bridgewater Associates的Vault用户,也是HashiCorp Vault项目的贡献者,特别是本文讨论的AWS IAM认证方法。HashiCorp发布了vault0.7.1,它附带了对AWS-EC2身份验证后端的主要增强,现在改名为AWS身份验证后端,这使得许多不同的AWS资源类型可以轻松地安全地通过Vault进行身份验证并获得一个Vault令牌。Lambda函数、ECS作业、EC2实例或任何其他可以访问AWS IAM凭据的客户机都可以使用这些凭据安全地对Vault进行身份验证以检索其机密。我真的对这个功能很兴奋,我想它会改变所有有安全意识的AWS客户的游戏规则。不过,首先是一些介绍。Bridgewater Associates专注于了解世界是如何运作的。通过对全球经济和金融市场有最深入的了解,并将其转化为与机构客户的良好投资组合和战略伙伴关系,我们已经建立了一个独特的成功记录。今天,我们为大约350家最大和最成熟的全球机构客户管理约1600亿美元,包括公共和企业养老基金、大学捐赠基金、慈善基金、超国家机构、主权财富基金和中央银行。几年前,Bridgewater开始转向amazonweb服务的云服务,我是第一批参与这项工作的工程师之一。我们喜欢AWS提供的许多优点,但是有一个问题一直给我们带来痛苦。我们如何在不牺牲安全性的前提下利用云提供商提供的动态计算能力?或者,具体地说,我们如何安全地授予AWS自动缩放组中的新实例访问所需机密的权限?这显然是社区其他人的共同需求。社区里有一些关于如何实现这个目标的建议,包括我的一个同事丹·皮布尔斯的两个建议。为了满足这一需求,HashiCorp发布了AWS-EC2身份验证后端。AWS-EC2身份验证后端在当时是可行的,但它有局限性——特别是,它只适用于EC2实例,而不适用于AWS Lambda函数或ECS作业或其他AWS场景。当AWS添加sts:GetCallerIdentity方法。突然间,GH-948中的提议似乎触手可及。作为一个热爱AWS、热爱安全性和HashiCorp的人,实现这个提议并使之成为现实,对我来说是一个很好的机会,可以为社区贡献一些有意义的东西。在与HashiCorp保险库工程团队密切合作,并得到Dan(他最初建议使用GH-948)的帮助后,AWS认证后端诞生了。AWS认证后端现在有了身份验证类型的概念,目前支持两种。EC2身份验证类型对应于AWS-EC2身份验证后端的先前行为,而IAM身份验证类型是新方法,它允许您使用AWS IAM凭据进行身份验证,将IAM用户或角色映射到保险库角色。在许多情况下,AWS已经在努力为计算资源安全地提供IAM凭证,例如实例概要文件中的EC2实例、AWS Lambda函数、ECS作业和AWS代码构建步骤。AWS已经为您的资源提供了IAM凭据,现在您的应用程序只需使用这些凭据就可以对Vault进行身份验证,从而访问它们的机密。通过让客户端签署AWS API请求来执行保险库身份验证,sts:GetCallerIdentity。API请求,然后将签名的请求发送到Vault。实际的AWS密钥从不发送到保险库,帮助您保护敏感凭证的安全。Vault将签名的请求转发到AWS并观察结果;如果结果与在Vault角色中配置的实体匹配,则请求将被验证,并将Vault令牌返回给客户端。这也解决了另一个常见的问题:如何使开发人员的工作流程尽可能地与生产工作流程相匹配。许多开发人员希望在自己的笔记本电脑上进行本地测试,而笔记本电脑无法使用EC2身份验证方法轻松地对保险库进行身份验证。但是,使用新的IAM身份验证方法,客户机可以使用开发人员的awsapi凭据来对Vault进行身份验证,从而提供与生产环境中相同的工作流。IAM身份验证方法还支持一种称为"推断"的功能。EC2身份验证方法允许您对可以对角色进行身份验证的EC2实例施加限制,例如实例从哪个AMI启动,或实例位于哪个子网中。因为这些是关于EC2实例而不是IAM主体的属性,所以类似的限制在IAM身份验证方法中通常是不可能的。但是,IAM实例配置文件中的EC2实例以使其实例ID对Vault可见的方式进行身份验证。推断告诉Vault查找实例ID,在EC2中查找,并将客户端视为EC2实例,从而允许您像使用EC2 auth方法一样应用许多EC2特定的绑定。(请注意,在盲目相信推断之前,您应该注意一些非常重要的安全警告,这些警告在文档中有描述。)vault命令行工具使使用AWS身份验证后端很容易对vault进行身份验证。只需运行:$vault auth-method=aws role=vault_角色\u名称这将自动从AWS定义的标准位置(环境变量、凭证文件或IAM实例概要文件)中查找AWS凭证,并使用这些凭证对Vault进行身份验证。如果需要,CLI还可以在命令行上接受访问密钥和密钥,但是如果可能,您应该避免在命令行上放置敏感凭据。对于编程用例,您应该查看AWS Signature v4文档和vaultcli工具的源代码,以了解如何生成这些值并将其传递给Vault的示例。将新的IAM身份验证方法与社区支持的Vault客户端集成是我们期待帮助社区实施的内容;如果您有兴趣参与集成,请联系社区以获得帮助或建议(如果需要)。我很自豪能参与创造一些东西,我相信社区成员会发现这些东西非常有价值。我还要感谢HashiCorp保险库团队的工程师Jeff和Vishal,以及我的同事Dan,感谢他们在这方面给予我的帮助和耐心。如果没有他们的帮助,这将不会成为现实。HashiCorp Vault是一种保护任何基础设施和应用程序的产品。Vault提供了一致的工作流来安全地存储和管理机密、提供加密即服务以及细粒度的权限访问管理。要了解有关HashiCorp保险库的更多信息,请访问https://www.hashicorp.com/products/vault/。