0

我尝试使用包装器 Chef 配方从加密数据包中读取 Datadog API 密钥并覆盖节点默认属性。我的困惑在于 Chef::EncryptedDataBagItem.load 方法的使用。我创建了一个名为 datadog 的加密包,里面有一个项目 datadog_keys。我想从这个数据包项中获取 api 密钥和应用程序密钥。所以我正在使用:

node.default['datadog']['api_key'] = Chef::EncryptedDataBagItem.load("datadog", "api_key")
node.default['datadog']['application_key'] = Chef::EncryptedDataBagItem.load("datadog", "chef")

我的问题,这种用法是正确的还是应该使用:

Chef::EncryptedDataBagItem.load("datadog_keys", "api_key")

或者

Chef::EncryptedDataBagItem.load("datadog::datadog_keys", "api_key")

4

1 回答 1

2

也不,你想要这样的东西,我认为:

api_key = data_bag_item('datadog', 'datadog_keys')['api_key']
                        ^ bag name ^ item name    ^ accessing something from the item hash

同样将密钥放入节点属性中是非常不安全的,并且有点破坏了加密包的意义,因为节点属性都被写回了 Chef 服务器,因此密钥将在未加密的情况下发送。

于 2018-02-20T19:33:25.287 回答