envm은 Windows 환경에서 환경 변수를 효율적이고 안전하게 관리하기 위한 CLI 도구입니다. 레지스트리에 직접 값을 설정하는 동시에, 메타데이터를 별도로 관리하여 환경 변수의 출처와 상태를 추적할 수 있습니다.
Windows의 기본 환경 변수 관리 시스템은 다음과 같은 불편함이 있습니다:
-
출처 불분명: 특정 환경 변수가 사용자가 직접 등록한 것인지, 프로그램 설치 시 자동으로 추가된 것인지 구분이 어렵습니다.
-
.env의 한계: 개발 시 .env 파일을 자주 사용하지만, Docker Compose나 여러 외부 도구에서 시스템 수준의 환경 변수를 참조해야 할 때 관리 포인트가 늘어납니다.
-
보안 문제: API Key와 같은 민감 정보가 화면에 그대로 노출되는 경우가 많습니다.
envm은 이러한 문제를 해결하기 위해 메타데이터 기반 관리와 DPAPI 암호화를 도입했습니다.
-
메타데이터 관리: 변수 생성 시간, 활성화 상태 등을 JSON으로 별도 기록.
-
보안(DPAPI): 모든 환경 변수 값은 Windows DPAPI 를 이용하여 암호화되어 저장됩니다. 현재 로그인 유저에 종속됩니다. (%LOCALAPPDATA%\envm\envm.json)
-
Secret 모드: 민감한 값은 ***로 마스킹 처리하여 출력할 수 있습니다.
-
활성/비활성: 변수를 삭제하지 않고 필요할 때만 레지스트리에 등록하거나 제거할 수 있습니다.
-
시스템 변수 지원: -s 옵션을 통해 시스템 수준의 환경 변수도 제어 가능합니다.
-
OS: Windows 전용
-
의존성: pywin32 (
pip install pywin32)
환경변수 값을 확인합니다. 마스킹된 환경변수는 관리자 권한에서 실행시 값을 확인할 수 있습니다.
환경변수 목록을 출력합니다.
환경변수 목록을 출력합니다. 마스킹 없이 출력합니다. 관리자 권한이 필요합니다.
환경 변수를 추가합니다.
환경 변수를 추가합니다. --list 로 목록 조회시 * 로 마스킹되어 출력됩니다.
환경 변수를 수정합니다.
환경 변수를 제거합니다.
환경 변수를 비활성화 합니다. --list 목록 출력시 (VALUE) 와 같이 괄호에 감싸서 출력됩니다.
환경 변수를 활성화 합니다.
명령어 뒤에 -s 옵션을 추가하면 이는 시스템 환경 변수를 대상으로 합니다. 관리자 권한이 필요합니다.
시스템 환경 변수(-s)를 수정하거나 -ls 명령어로 암호를 확인할 때는 반드시 관리자 권한으로 실행된 터미널이 필요합니다. 환경 변수 변경 후, 현재 열려 있는 터미널에는 즉시 반영되지 않을 수 있으니 새 창을 열어 확인하세요.