小编set*_*rgo的帖子

HashiCorp Vault - 生产中的设置/架构

我正准备用我的网络应用程序设置HashiCorp Vault,虽然HashiCorp提供的示例很有意义,但我还不清楚预期的生产设置应该是什么.

就我而言,我有:

  • 少量AWS EC2实例为我的Web应用程序提供服务
  • 一对EC2实例为Jenkins提供连续部署服务

我需要:

  • 我的配置软件(Ansible)和Jenkins能够在部署期间读取秘密
  • 允许公司中的员工根据需要读取秘密,并可能为某些类型的访问生成临时密码.

我可能会使用S3作为Vault的存储后端.

我的问题类型是:

  1. 是否应该在我的所有EC2实例上运行保险库,并在127.0.0.1:8200收听?

  2. 或者,我是否只创建一个实例(可能是2个可用性),只运行Vault并根据需要将其他实例/服务连接到秘密访问?

  3. 如果我需要员工能够从本地机器访问机密,那该怎么办?他们是否在本地针对S3存储设置了保险库,还是应该从步骤2访问远程服务器的REST API来访问他们的秘密?

  4. 并且要明确的是,任何运行保险库的机器,如果它重新启动,那么保险库需要再次启封,这似乎是涉及x个密钥持有者的手动过程?

sysadmin amazon-web-services jenkins hashicorp-vault

6
推荐指数
1
解决办法
884
查看次数

Chef - 从powershell脚本返回变量

我想知道是否有办法从powershell_script资源中定义的powershell脚本返回变量值?

我的powershell资源如下:

powershell_script "Test Script" do
  code <<-EOH
    Write-Host "Hello World!"
   return "test"
  EOH
end
Run Code Online (Sandbox Code Playgroud)

我想使用test脚本中返回的值来根据if条件在其他资源中使用.

谢谢

powershell-2.0 chef-infra

5
推荐指数
1
解决办法
4521
查看次数

单元测试Chef提供者

如何为Chef提供商编写单元测试?

到目前为止,我们的单元测试策略使用ChefSpec作为配方,我们为库中的提供程序填充了大部分有趣的逻辑,使逻辑更易于测试.但是,我们仍遇到供应商调用其他资源(以及其他简单的逻辑问题)的问题.例如:

action :run do

   helper = Helper.new
   template '/etc/hosts' do
     source 'hosts.erb'
     variables ({
              "host" => @new_resource.host,
              "ip_address" => node['ipaddress']
          })
     only_if { helper.update_hosts }
   end

   service 'httpd' do
      action :restart
   end
end
Run Code Online (Sandbox Code Playgroud)

(这不是真正的代码,只是一个简单的例子)

我们要做的是单独测试此提供程序以检查逻辑错误.ChefSpec有能力进入LWRP,但看起来这会迫使我们将LWRP放入配方中,而我们的许多烹饪书基本上都是LWRP库而没有配方.我们还想在我们的测试中保持一个干净的分离,所以通过查看文件名很明显哪个组件失败了.

另外,如果LWRP定义中存在任何语法错误,测试会自动失败,那将是很好的.例如:

action :run do
   template '/etc/hosts/' do
     source_whoops 'hosts.erb'
     action :whoops
   end
end
Run Code Online (Sandbox Code Playgroud)

如果由于属性名称定义不正确而导致测试失败,并且操作名称不存在(就像ChefSpec一样),那将是非常好的.

我提出的唯一解决方案是基本上创建一个"测试食谱" - 一个单独的食谱,用一个食谱定义每个LWRP 1:1,所以ChefSpec可以这样进入它.这似乎是一个合理但不太理想的解决方案.

unit-testing chef-infra chefspec

5
推荐指数
1
解决办法
1424
查看次数

领事检查HTTPS自签名

我使用Consul来注册一个Web应用程序.Web应用程序使用Java Consul客户端注册check.我能够使用自签名CA激活TLS和加密,以加密领事代理之间以及我的webapp和consul代理之间的交换.但我无法使用自签名CA签名证书对HTTPS进行检查.

我的Web应用程序是安全的,只能在具有自签名证书的HTTPS上进行侦听.当我向领事注册会话并提供https:// ... URL进行检查时,我被拒绝:

com.orbitz.consul.ConsulException:Consul请求失败,状态为[500]:rpc错误:rpc错误:检查'service:a4cHealthCheck:172.17.0.3'处于临界状态

在consul agent日志中,我可以看到:

2016/07/23 08:24:45 [WARN] agent: http request failed 'https://172.17.0.3:8443/rest/latest/health/check': Get https://172.17.0.3:8443/rest/latest/health/check: x509: certificate signed by unknown authority
Run Code Online (Sandbox Code Playgroud)

似乎领事代理人不接受自签名的支票证书.如何仅为检查禁用SSL验证或为检查提供检查程序?

consul

5
推荐指数
1
解决办法
2819
查看次数

我应该如何使用 Google Cloud KMS 存储由另一个应用程序生成的访问令牌?

我正在构建一个 Node.js 应用程序,它从我需要访问的另一个应用程序接收长期访问令牌。我不想将这些访问令牌直接存储在数据库中,因为任何有权访问这些令牌的人基本上都可以用它做任何他们想做的事情。

我是 Cloud KMS 和此类系统的新手,但最近几个小时都在学习它。这似乎是解决我的问题的理想解决方案,但我不完全确定应该遵循什么策略来存储这些访问令牌:

  1. 我应该存储在云KMS的加密密钥,并使用该加密密钥与NPM包像这样一个存储访问令牌在我的数据库?
  2. 我应该将访问令牌直接存储在 KMS 中吗?我的假设是我会有一个密钥库,并且每 14 天轮换一次密钥。每当我收到访问令牌时,我都会对其进行加密并将其存储在 KMS 中。我只将密文存储在我的数据库中。当我需要从 KMS 访问访问令牌时,我使用密文对其进行解密。

以上哪项是使用 KMS 的正确方法?如果是选项 2,我还有其他问题:

  • 我可以使用单个密钥加密大量访问令牌,还是需要为每个访问令牌创建一个新密钥?
  • 如果我需要修改在 KMS 加密的访问令牌,我可以简单地修改它还是需要销毁旧版本并再次加密?

谢谢你的帮助!

security encryption google-cloud-platform google-cloud-kms google-secret-manager

5
推荐指数
1
解决办法
1000
查看次数

rails link_to:远离ajax加载的内容

嘿大家,我正在开发一个应用程序,我在使用新的Rails 3 link_to时遇到了困难.这是情况 - 我的"主页"页面上有两个div,每个div都在document.load中填充ajax.这按预期工作.

在我加载到这些div中的页面内容中,我想使用link_to ...:remote => true功能.源使用data-remote ="true"标记按预期呈现,但是当我单击链接时,它们将被完全忽略(链接被视为常规超链接).

我已经编写了正确处理所有内容的.rjs文件(因为它们在硬编码时有效),所以这不是问题.

这是加载ajax的内容的html源代码:

<div>
  <a href="/cart/add/2" data-remote="true">Link A</a>
  <a href="/cart/add/1" data-remote="true">Link B</a> 
</div>
Run Code Online (Sandbox Code Playgroud)

通常嵌入到页面中时单击其中一个链接会导致我的购物车正确更新...但是,当我使用AJAX将此内容动态加载到页面时,链接就会跟随并忽略data-remote ="true" ...

最初我认为它与原型没有在AJAX中正确加载有关,但我已经检查了所有这些并且它没有改变一件事......

我真的很困惑......有没有人想过这个?

# add method of controller
def add
  product = Product.find_by_id(params[:product_id])
  params[:quantity] ||= 1
  params[:price] ||= product.price

  unless product.nil?
    @line = session[:cart].purchase_lines.select {|l| l.product_id == product.id}.first
    unless @line.nil?
      @line.quantity = (@line.quantity + params[:quantity].to_i)
    else # create a new purchase_line in the cart
      @line = session[:cart].purchase_lines.build({ :product_id => product.id, :price => params[:price], :quantity => params[:quantity].to_i …
Run Code Online (Sandbox Code Playgroud)

javascript ruby ajax ruby-on-rails

4
推荐指数
1
解决办法
2814
查看次数

使用延迟作业进行页面缓存

嘿所有,如果你曾经发表过[craigslist],这个问题应该对你有意义.每当您发布商品(例如,出售家具或公寓)时,您的商家信息不会立即被列入网站.相反,列表将每10-15分钟分批出现(数量不同).起初我真的过度思考这种行为,试图保存记录然后进行批量插入,但我意识到它更简单.在与一些同事交谈之后,Craigslist正在缓存他们的页面然后每10-15分钟清空一次缓存就有意义了.这严重降低了数据库的负载.

现在,我的问题.我如何在Rails中完成同样的事情?我知道如何实现缓存 - 我已经阅读了[使用Rails指南进行缓存].我将使用动作缓存和片段缓存(因为我无法缓存整个页面).我仍然需要进行验证和访问控制,所以我无法完全缓存页面...

optimization caching ruby-on-rails ruby-on-rails-3

4
推荐指数
1
解决办法
859
查看次数

Ruby IMAP自上次检查后"更改"

我正在使用Ruby和Rails开发IMAP客户端.我可以成功导入邮件,邮箱等...但是,在初始导入后,如何检测自上次同步以来发生的任何更改?

目前,我将UID和UID有效值存储在数据库中,进行比较,并进行适当的搜索.这有效,但它不会检测已删除的消息或对消息标志的更改等.

我是否必须每次都提取所有消息以检测这些更改?其他IMAP客户如何快速完成(即Apple Mail和Postbox).我的脚本每个帐户已经花了10多秒,只有很少的电子邮件地址:

# select ourself as the current mailbox
@imap_connection.examine(self.location)

# grab all new messages and update them in the database
# if the uid's are still valid, we will just fetch the newest UIDs
# otherwise, we need to search when we last synced, which is slower :(
if self.uid_validity.nil? || uid_validity == self.uid_validity
  # for some IMAP servers, if a mailbox is empty, a uid_fetch will fail, so then
  begin
    messages = @imap_connection.uid_fetch(uid_range, ['UID', 'RFC822', 'FLAGS']) …
Run Code Online (Sandbox Code Playgroud)

ruby imap uid ruby-on-rails-3

4
推荐指数
1
解决办法
3686
查看次数

使用ChefSpec基于模板测试文件初始化

我在我的食谱中创建了以下模板文件:

template "my_file" do
  path "my_path"
  source "my_file.erb"
  owner "root"
  group "root"
  mode "0644"
  variables(@template_variables)
  notifies :restart, resources(service: "my_service")
end
Run Code Online (Sandbox Code Playgroud)

以及我的ChefSpec测试中的以下断言:

  chef_run.should create_file "my_file"
  chef_run.file("my_file").should be_owned_by('root', 'root')
Run Code Online (Sandbox Code Playgroud)

这导致以下失败:

  No file resource named 'my_file' with action :create found.
Run Code Online (Sandbox Code Playgroud)

这是因为我没有使用file资源而是使用template资源.问题:如何使用ChefSpec测试模板资源的文件创建?

ruby chef-infra chefspec

4
推荐指数
2
解决办法
2400
查看次数

在配方中使用库中的类方法

我只是想在厨师中创建一本简单的食谱。我正在使用图书馆作为学习过程。

module ABC
  class YumD
    def self.pack (*count)
      for i in 0...count.length
        yum_packag "#{count[i]}" do
          action :nothing
        end.run_action :install
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

当我在配方中调用它时,我收到一个编译错误,上面写着

undefined method `yum_package' for ABC::YumD:Class
Run Code Online (Sandbox Code Playgroud)

chef-infra

4
推荐指数
1
解决办法
1438
查看次数