@jihyunlab/secret-cli는 .env 파일의 암호화를 위해 개발된 명령줄 인터페이스 도구입니다.
@jihyunlab/secret-cli에 의해 암호화된 .env는 런타임 환경에 따라 @jihyunlab/secret과 @jihyunlab/web-secret에서 복호화 됩니다.
암호화 기능은 @jihyunlab/secret으로 구현되며 AES 256 GCM에 대한 암호화를 제공합니다.
@jihyunlab/secret-cli을 설치합니다.
npm i -g @jihyunlab/secret-cli
도움말에서 사용 가능한 옵션과 사용 예를 확인할 수 있습니다.
secret --help
Usage: secret [options] [command]
JihyunLab Secret CLI
Options:
-V, --version output the version number
-h, --help display help for command
Commands:
encrypt|e [options] <input> encrypt a file
decrypt|d [options] <input> decrypt a file
help [command] display help for command
Usage (help):
secret encrypt --help
secret decrypt --help
Usage (.env encryption):
secret encrypt --env .env --out .env.enc
secret encrypt --env .env --key ENV_KEY --out .env.enc
Usage (.env decryption):
secret decrypt --env .env.enc --out .env.dec
secret decrypt --env .env.enc --key ENV_KEY --out .env.dec
.env 암호화는 다음의 .env 파일을 기반으로 기술됩니다.
ENV_KEY=ENV_VALUE
ENV_KEY_1=ENV_VALUE_1
ENV_KEY_2=ENV_VALUE_2
별도로 관리되는 암호화 키를 직접 입력하여 .env 파일의 모든 키값을 암호화 합니다.
secret encrypt --env .env --secret YourSecretKey --out .env.enc
Input: .env
Output: .env.enc
Encryption process:
- Using input secret
- ENV_KEY ... [OK]
- ENV_KEY_1 ... [OK]
- ENV_KEY_2 ... [OK]
- Encryption completed successfully
Summary:
- Using input secret
- Overwriting existing file
- .env encrypted to .env.enc
ENV_KEY=5b47faa38e6a9cb2fd65b34dff0a9befc67d77bc6a4a352c28534fed195dfd9ca1f9917af8
ENV_KEY_1=d37f8e719afed09d28c19f7b29c42398f5b942623e23082532cd5bc6bcf75625bf73a4104e38a7
ENV_KEY_2=3e49f6218bb1220e10d3d4165ef60a0ad43499371ba7d1142d2f65b142c5b96d3dc3a2f0b97244
.env 파일의 특정 키값을 암호화 합니다.
secret encrypt --env .env --secret YourSecretKey --key ENV_KEY --out .env.enc
Input: .env
Output: .env.enc
Encryption process:
- Using input secret
- ENV_KEY ... [OK]
- ENV_KEY_1 ... [Skipped]
- ENV_KEY_2 ... [Skipped]
- Encryption completed successfully
Summary:
- Using input secret
- Overwriting existing file
- .env encrypted to .env.enc
ENV_KEY=392b8b61b81df7a473869447041520d939c30e59e43181fdbbf8e909d9092481d772c1efd7
ENV_KEY_1=ENV_VALUE_1
ENV_KEY_2=ENV_VALUE_2
여러 개의 특정 키값들을 한 번에 암호화할 수 있습니다.
secret encrypt --env .env --secret YourSecretKey --key ENV_KEY_1 --key ENV_KEY_2 --out .env.enc
Input: .env
Output: .env.enc
Encryption process:
- Using input secret
- ENV_KEY ... [Skipped]
- ENV_KEY_1 ... [OK]
- ENV_KEY_2 ... [OK]
- Encryption completed successfully
Summary:
- Using input secret
- Overwriting existing file
- .env encrypted to .env.enc
ENV_KEY=ENV_VALUE
ENV_KEY_1=7839546c9ae8f8bac1031f48b0377a7275b24f3da127deb8bc828deee6d5ac9c29eb72abcb9ee3
ENV_KEY_2=3ab27ab3d0e7f53a001378daa2f8387633f2688d28775bcda5921792142ea1b8359fb0725da659
암호화와 동일한 방식으로 암호화된 .env 파일을 복호화할 수 있습니다.
secret decrypt --env .env.enc --secret YourSecretKey --key ENV_KEY --out .env.dec
Input: .env.enc
Output: .env.dec
Decryption process:
- Using input secret
- ENV_KEY ... [OK]
- ENV_KEY_1 ... [Skipped]
- ENV_KEY_2 ... [Skipped]
- Decryption completed successfully
Summary:
- Using input secret
- Overwriting existing file
- .env.enc decrypted to .env.dec
ENV_KEY=ENV_VALUE
ENV_KEY_1=ENV_VALUE_1
ENV_KEY_2=ENV_VALUE_2
시스템이나 사용자 환경 변수에 JIHYUNLAB_SECRET_KEY를 등록하면 암호화 시 등록된 환경 변수가 암호화 키로 사용됩니다.
export JIHYUNLAB_SECRET_KEY=YourSecretKey
환경 변수에 등록된 암호화 키로 .env 파일의 모든 키값을 암호화할 수 있습니다.
secret encrypt --env .env --out .env.enc
Input: .env
Output: .env.enc
Encryption process:
- Using JIHYUNLAB_SECRET_KEY
- ENV_KEY ... [OK]
- ENV_KEY_1 ... [OK]
- ENV_KEY_2 ... [OK]
- Encryption completed successfully
Summary:
- Using JIHYUNLAB_SECRET_KEY
- Overwriting existing file
- .env encrypted to .env.enc
ENV_KEY=8c22dbcce705a1b95df2c7841f6735eba5d91bcecf1c1132ec35fd5a976dd8556763649075
ENV_KEY_1=17022b50356a3da6bad09e8012830a7078058796fcd75c594a180802320b009385761c7ce66208
ENV_KEY_2=f4d96b31dbbace4bd769c30a430da7f142c4fa058c565a80d2fb3e101cca29c0f8bfc106076aaa
@jihyunlab/secret는 Node.js 어플리케이션에서의 .env 복호화 기능을 구현합니다. @jihyunlab/secret-cli에서 암호화된 .env 파일을 Node.js 어플리케이션에서 복호화 하기 위해 @jihyunlab/secret을 설치하고 사용할 수 있습니다.
import { CIPHER, Env } from '@jihyunlab/secret';
const cipher = await Env.createCipher(CIPHER.AES_256_GCM, 'YourSecretKey');
const value = await cipher.decrypt(process.env.ENV_KEY);
@jihyunlab/web-secret는 웹 어플리케이션에서의 .env 복호화 기능을 구현합니다. @jihyunlab/secret-cli에서 암호화된 .env 파일을 웹 어플리케이션에서 복호화 하기 위해 @jihyunlab/web-secret을 설치하고 사용할 수 있습니다.
import { CIPHER, Env } from '@jihyunlab/web-secret';
const cipher = await Env.createCipher(CIPHER.AES_256_GCM, 'YourSecretKey');
const value = await cipher.decrypt(process.env.ENV_KEY);
info@jihyunlab.com