1.0.2 • Published 4 years ago
@brightcove/node-config v1.0.2
Node encrypted secrets
Manage your secrets with single entrypted file. Inspired in Rails encrypted secrets management
Install
npm install @brightcove/node-config --saveUsage
Encrypt and decrypt yaml files
# config.yaml
username: user
password': myPassword- Encrypt
NODE_MASTER_KEY=$MASTER_KEY npx @brightcove/node-config encrypt --path config.yamlOnly encrypted object values.
username: sGPi7jVJFORTBSOOKx5nMw==--eYed5TIh3D+9rjN/usOB0w==
password: +C4M+xFxOQXTyvPJ7QSJuQ==--eYed5TIh3D+9rjN/usOB0w==- Decrypt
NODE_MASTER_KEY=$MASTER_KEY npx @brightcove/node-config decrypt --path config.yamlSetup for NodeJs projects
Create a config.yaml file
Example:
publicKey: publicValue # no-encrypt
myApiKey: apiKey
myApiSecret: apiSecretor
{
"publicKey": "publicValue",
"myApiKey": "apiKey",
"myApiSecret": "apiSecret"
}npx @brightcove/node-config initOR use your own key
NODE_MASTER_KEY=$MASTER_KEY npx @brightcove/node-config initYour config file it's encrypted, and generate config key file
Save the key value, and ignore this file in your version control.
echo config.yaml.key >> .gitignoreRead config in runtime
const { config } = require('@brightcove/node-config');
const apiKey = config.apiKey;Use in production
You can set a environment varible NODE_MASTER_KEY for decrypt secrets.
NODE_MASTER_KEY=my-credential-key server.jsEdit config
The edit command allow to edit the file in a text editor; decrypting before open the file and encrypting after close the file.
EDITOR=nano npx @brightcove/node-config editenv
Return the value of config based on process.env.NODE_CREDENTIALS_ENV or process.env.NODE_ENV Example:
default: &default
user: myuser
development:
<<: *default
key: password_development
production:
<<: *default
key: password_production- By default use development key
const vault = require('@brightcove/node-config');
vault.config;
// { development: { key: "password_development" }, production: { key: "password_production" } }
vault.env;
// { key: "password_development" }- Set custom environment
us:
development:
key: development password for US countryNODE_CREDENTIALS_ENV=us.development node main.jsconst vault = require('@brightcove/node-config');
vault.env;
// { key: "development password for US country" }Environment variable in config file
Some config it's not recomend set in config file, like production database password.
config file accept template variables for process env object
production:
database:
password: <%= process.env.DATABASE_PASSWORD %>CLI API
Command List
help help
init encrypt your config file and create a config key file
encrypt encrypt config file
decrypt decrypt config file
edit decrypt/encrypt in text editor
Options
-p, --path Path for config file