使用加密数据包时将机密作为 Chef 属性传递
Passing secret as an Chef attribute while using encrypted databags
我已经创建了一个存在于 Chef 服务器上的数据包项。
现在,我正在尝试检索 Chef recipe
中该数据包项的值
为此,我正在创建 Chef Databag 并尝试将秘密作为属性传递:
secret = Chef::EncryptedDataBagItem.load_secret("#{node['secret']}")
masterkey = Chef::EncryptedDataBagItem.load("databag_secrets", "databag_masterkey", secret)
我在属性部分声明了节点['secret']如下:
default['secret']="lTW4d+2Wfjlf1gZ42x3qsJh4/GcwqTc5+kS62qKeAHrhzTiL/Bxp+hq3itwudNfUFggCOEaMTsR+Q/qgjx6unKNvKWMKIdCeNM8I4jCUeT2VDaU6C1VxIMrVqfpUmInLuHOaUpVdlnlejkeLBL2KzH5vA8Xx5t2eACBRvrHacTwORMgVr/pnSKBcSzC/wXGoc7bGk7kTd6SaswRfZHnOowxfs2xkGJOFbzyTLZNAqkrJJurBq/ycYGRK2J3ycNyTwISfVgG9YAvP6prHKPsWTp3JgOWNIeZ9ZMSKUy8Lh0vopluXJhSd1WC6ltNcHxSb"
我收到以下错误:
ERROR: FFI_Yajl::ParseError: lexical error: invalid character inside string.
S62qKeAHrhzTiL/Bxp+hq3itwudNfU
FggCOEaMTsR+Q/qgjx6
(right here) ------^
请告诉我是否允许在 Chef 中将机密作为属性传递。如果是,我应该怎么做?
如果不是,以安全方式传递秘密的最佳方式是什么?
根据the documentation, #load_secret
should be passed a path to a file containing the secret. If you don't want to put the secret in a file (this is the preferred way), you can pass the secret to every #load
call (as shown here):
Chef::EncryptedDataBagItem.load(data_bag, name, secret = nil)
我已经创建了一个存在于 Chef 服务器上的数据包项。
现在,我正在尝试检索 Chef recipe
中该数据包项的值
为此,我正在创建 Chef Databag 并尝试将秘密作为属性传递:
secret = Chef::EncryptedDataBagItem.load_secret("#{node['secret']}")
masterkey = Chef::EncryptedDataBagItem.load("databag_secrets", "databag_masterkey", secret)
我在属性部分声明了节点['secret']如下:
default['secret']="lTW4d+2Wfjlf1gZ42x3qsJh4/GcwqTc5+kS62qKeAHrhzTiL/Bxp+hq3itwudNfUFggCOEaMTsR+Q/qgjx6unKNvKWMKIdCeNM8I4jCUeT2VDaU6C1VxIMrVqfpUmInLuHOaUpVdlnlejkeLBL2KzH5vA8Xx5t2eACBRvrHacTwORMgVr/pnSKBcSzC/wXGoc7bGk7kTd6SaswRfZHnOowxfs2xkGJOFbzyTLZNAqkrJJurBq/ycYGRK2J3ycNyTwISfVgG9YAvP6prHKPsWTp3JgOWNIeZ9ZMSKUy8Lh0vopluXJhSd1WC6ltNcHxSb"
我收到以下错误:
ERROR: FFI_Yajl::ParseError: lexical error: invalid character inside string.
S62qKeAHrhzTiL/Bxp+hq3itwudNfU
FggCOEaMTsR+Q/qgjx6
(right here) ------^
请告诉我是否允许在 Chef 中将机密作为属性传递。如果是,我应该怎么做? 如果不是,以安全方式传递秘密的最佳方式是什么?
根据the documentation, #load_secret
should be passed a path to a file containing the secret. If you don't want to put the secret in a file (this is the preferred way), you can pass the secret to every #load
call (as shown here):
Chef::EncryptedDataBagItem.load(data_bag, name, secret = nil)