最佳做法是将密钥和密码保存在 Chef data_bags 中。数据包包含数据包项。单个data_bag项为json格式。
例如:
{
/* This is a supported comment style */
// This style is also supported
"id": "ITEM_NAME",
"key": "value"
}
加密数据包项:
数据包项目可以使用共享秘密加密进行加密。这允许每个数据包项目存储机密信息(例如数据库密码或 ssh 密钥)或在源代码控制系统中进行管理(没有纯文本数据出现在修订历史记录中)。这可以按如下方式完成:
克里特岛密钥:
例如,创建一个名为 encrypted_data_bag_secret 的密钥
$ openssl rand -base64 512 | tr -d '\r\n' > encrypted_data_bag_secret
其中 encrypted_data_bag_secret 是包含密钥的文件的名称
加密 data_bag:
使用类似于以下的刀命令对数据包项进行加密:
$ knife data bag create passwords mysql --secret-file /tmp/my_data_bag_key
其中“passwords”是数据包的名称,“mysql”是数据包项的名称,“/tmp/my_data_bag_key”是包含密钥的文件所在位置的路径正在定位
验证加密:
当数据包项目的内容被加密时,它们在被解密之前将不可读。可以使用类似于以下的刀命令来验证加密:
$ knife data bag show passwords mysql
解密数据包:
使用类似于以下的刀命令解密加密的数据包项:
$ knife data bag show --secret-file /tmp/my_data_bag_key passwords mysql