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

中间件_数据库审计日志_

小七 141 0

如何使用hiera5的保险库对Puppet进行秘密管理

»一点历史Puppet已经有13年的历史了,已经为各种软件配置用例收集了大量的追随者。Puppet可用于配置管理目的,例如配置MongoDB集群或在使用Nginx作为负载平衡器时自动进行故障转移。Puppet已经发展了一批强大的追随者,开创了将服务器配置视为代码的概念,并将其部署到一个大的领域中。»松懈的嘴唇使船沉没然而,使用Puppet的主要风险之一是害怕秘密蔓延。毫不奇怪,当您开始像应用程序一样管理服务器时,您就开始管理SSH密钥、PKI证书、密码和API令牌。一想到在分布式云、系统和应用程序之间意外泄漏这些机密,就会产生一个低信任度的网络,并带来严重的安全风险。因此,许多人想出了用傀儡代码保守秘密的解决方案,其中最受欢迎的是hiera eyaml。但是,新员工的加入和管理eyaml的密钥可能是一件痛苦的事情,同时也缺乏对服务器使用什么秘密的可审计性。如果有更好的方法。。。»进入HashiCorp保险库金库是一个伟大的解决方案集中管理秘密在傀儡。这将机密问题从操作员身上移开,并将转换和静止时的数据加密到专用服务中的困难,并为您提供运行专用保密服务的好处,如可审核性、细粒度ACL,以及使用GUI配置和旋转机密的能力。»使用Hiera作为后端在网络研讨会的演示中,我们展示了一个通过Puppet的Hiera查找工具将Vault用作秘密存储后端的基本示例。这意味着机密在目录编译时通过到Vault的连接获取,然后在与Puppet一起使用的正常工作流中将信息输入到Hiera中。这并不是将Vault与Puppet一起使用的唯一方法,但它是集成使用现有Puppet基础设施的有效方法。»演示环境对于那些无法参加现场网络研讨会录音的人,我们在这里简要解释一下。架构大致如下:这需要一些设置,因为vaultgem需要更新版本的Ruby(>2.0.0),而旧的Puppetserver附带JRuby附带的ruby1.9.1,这会导致一些问题。这可以通过配置Puppetserver使用新的jruby9kjar来解决,它使用了一个新版本的Ruby,可以避免这个问题。如果您使用的是Puppet Enterprise,可以通过设置JRuby设置的Hiera键来配置,如下所示:puppet_企业::master::puppetserver::jruby_jar:"/opt/puppetlabs/server/apps/puppetserver/jruby-9k.jar"Puppet Enterprise 2018.1默认情况下将JRuby设置为9k,而Puppetserver 6.0.0+版本将完全删除旧版JRuby并切换到JRuby 9k。用于引导此进程的代码在GitHub上是可用的(欢迎Pull requests!)。当代理请求目录时,任何与密钥限制相匹配的查找(即它包含Vault或其中包含"password"一词),Vault后端将访问Vault,查看系统名称下的机密后端下是否存在机密。如果是这样,它将返回该值,并将由Puppet资源使用。»网络研讨会的问题现场演示有太多的问题,我们无法在规定的时间内回答,因此我们将跟进下面的答案。问题:如何保护数据不受非特权用户手工制作清单的影响?可以从Vault中获取的数据范围是通过查找层次结构确定的。在演示中,我们将其锁定到有问题的机器的可信证书名。在Puppet证书签名阶段,可信事实会印在代理上,这意味着您只能访问证书名(通常是计算机的完全限定域名)范围内的机密。证书名也是唯一的。例如,如果您有一个fqdn为prod-db-1的生产数据库。example.com网站,并且有人试图制造另一台欺骗机器,意图获取生产数据库凭据,则原始节点将不得不撤销并清除其证书;然后新机器将必须创建一个签名请求并获得批准。因此,在本例中,安全引入是在Puppet CA级别,所以要确保它是正确安全的。这可以通过基于策略的自动签名来实现。另外,如果您对任何机密使用敏感函数,这些信息将从Puppet报告中隐藏,因此直接访问机密的唯一方法是访问计算机以及对磁盘上的这些文件具有必需的权限。在这一点上,它将您的数据暴露在漏洞中,而不管Vault或Puppet干预如何!这个解决方案在Windows服务器上运行吗?这取决于窗户的哪一部分!Puppetserver是一个仅限于unix的应用程序。Puppet代理可以运行,并且在现代Windows节点上完全受支持。这个过程是相同的,因此Hiera lookup with Vault可以用于获取秘密以用于Windows代理,例如IIS服务器的凭据。Vault本身可以在Windows机器上运行,但我们建议使用linux环境来运行Vault服务,因为这是大多数社区正在做的,以及我们在HashiCorp内部使用的功能。有没有办法避免在希拉。亚姆?将令牌以明文形式输入不是有很大的安全风险吗希拉。亚姆?有什么方法可以减轻它?这是一个非常有效的问题。这可以通过环境变量而不是通过中的纯文本标记来设置希拉·亚姆:地址:Vault服务器的地址,也可以读作ENVVAULT_ADDR"]\Token:要向Vault认证的令牌,也称为ENVVAULT_Token"]因此,您可以在Puppetserver启动配置中使用环境变量设置令牌:对于RHEL/CentOS,/etc/sysconfig/puppetserver。对于Debian/Ubuntu,/etc/default/puppetserver。我们将在GitHub repo中添加一个通过环境变量执行此操作的示例。您是否有关于性能影响的指标或信息(对于基于hiera的方法),尤其是当您有许多具有许多参数的类时?我们没有任何关于性能影响的具体指标,但这是"限制密钥到密钥"设置可用的原因之一,即指定一个正则表达式来限制保险库查找,这应该可以避免保险库查找对性能的很大影响。如果有人在这方面有任何指标或可靠的数字,请随时伸出援手!除了通用密钥/值之外,是否支持其他类型的保险库机密后端?特别是我对PKI后端很感兴趣。现在,davealden/hiera保险库仅用于k/v后端,但可以编写与其他保险库后端(如PKI后端)交互的Puppet函数。它们将在编译时在Puppetserver上运行,并且可以在磁盘上创建证书。如果有人打算这么做,请联系我,我们很乐意帮忙!你能谈谈审计机密和变更时的版本控制吗?这是在尼斯和安全:良好的OpSec卫生与傀儡!在PuppetConf 2016。您可以使用Trufflehog、Gittyleaks或shell regex之类的工具来审核现有的代码库。您还可以确保请求请求进程有一个人工审阅者,或者使用CI/CD作业或预提交钩子来尝试检测凭据泄漏。使用Jerekia与Vault交谈有什么好处吗?我们与Craig Dunn进行了广泛的交流,Craig Dunn是Puppet开源社区的一位知名成员;他还写了一篇很棒的博客文章,用Jerakia和Vault管理Puppet的秘密。我们建议联系他了解更多信息。有没有可能锁定在希拉中使用的令牌,以便只有傀儡主人才能使用它?就令牌而言,这可以通过Vault Sentinel实现,这是Vault Enterprise独有的功能。使用角色管理策略(RGP),可以将Puppet命名空间的使用限制在特定的ipaddress范围内。这里记录了一些例子。在系统级别上,可以使用防火墙等标准工具限制对Vault的访问。什么是consur?为什么建议将其用于生产Vault部署?"CONSUR是一个高可用性和分布式服务发现和KV存储,旨在支持现代数据中心,使分布式系统和配置更容易。"—CONSURconsur是任何生产Vault部署的推荐后端,因为它具有分布式特性和HA特性。除了提供持久的存储,consur后端还将通过默认的健康检查在consur中注册Vault作为服务。此外,与某些保险库后端不同,consur后端由HashiCorp正式支持。阅读这里了解更多关于使用consur作为后端。如果我们在AWS上运行,我们可以在Puppetserver上使用AWS auth,这样我们就不必把令牌放在yaml中或作为一个环境变量吗?由于后端现在启动,没有。它假定给定的approve或特定的令牌。但它可以作为一个新功能添加。一个常见的问题是,当使用consur作为保险库后端时,当保险库依赖它时,您如何保存领事的秘密就成了一个鸡毛蒜皮的问题。关于木偶、执政官和金库的组合有什么可分享的经验吗?保存在consur for Vault中的信息是完全加密的,concur将其视为任何其他数据,并且不必担心泄露,因为它不是明文。如果我有一套应用程序,而不是直接在每个应用程序中集成vault,不如创建一个单独的微服务,它只对云上的任何服务进行秘密管理并与vault交互?这是一个完全有效的选择,而且有一些人已经这样做了。BanzaiCloud专门为Kubernetes中的保险库交互编写了一个工具:BanzaiCloud的GitHub看起来大卫·奥尔登的hiera_vault Puppet模块限制我们只能查找密钥为"value"的机密。有没有办法在sa中查找其他密钥/值数据