logo

@jihyunlab/secret-cli

@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 파일을 기반으로 기술됩니다.

.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.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.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.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.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
ENV_KEY=8c22dbcce705a1b95df2c7841f6735eba5d91bcecf1c1132ec35fd5a976dd8556763649075
ENV_KEY_1=17022b50356a3da6bad09e8012830a7078058796fcd75c594a180802320b009385761c7ce66208
ENV_KEY_2=f4d96b31dbbace4bd769c30a430da7f142c4fa058c565a80d2fb3e101cca29c0f8bfc106076aaa

@jihyunlab/secret

@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

@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);

라이센스

Open source licensed as MIT.

logo

ⓒ 2023-2024 JihyunLab. All rights reserved.

info@jihyunlab.com