본문으로 건너뛰기
로그인 둘러보기
개발·코딩·데이터베이스 · 윈도우즈 유틸

jitenv

0

jitenv는 Just-in-time 환경 변수 로더로, 암호화된 설정에서 비밀을 저장하고 해당 파일의 프로세스 트리에만 주입하여 부모 쉘에는 노출하지 않습니다.

보안시크릿 관리환경 변수

소개

jitenv는 Just-in-time 환경 변수 로더로, 암호화된 설정에서 비밀을 저장하고 해당 파일의 프로세스 트리에만 주입하여 부모 쉘에는 노출하지 않습니다. Galvill이 개발한 이 도구는 .env 파일이나 direnv보다 보안 범위를 좁혀 실제 blast 반경이 큰 자격 증명을 다루기에 적합합니다. Windows, macOS, Linux에서 사용할 수 있으며, 특히 Windows에서는 PowerShell 7+가 필요합니다. MIT 라이선스로 배포되는 오픈소스 소프트웨어입니다.

상세정보

암호화된 시크릿 관리

설정은 XChaCha20-Poly1305 대칭 암호화와 Argon2id 키 도출 함수를 사용하여 암호화된 상태로 유지됩니다. 마스터 키는 사용자별 에이전트가 메모리에서만 관리하며, 디스크에는 평문 비밀이 절대 저장되지 않습니다.

프로세스별 주입

환경 변수는 매핑된 파일의 프로세스 트리에만 주입됩니다. 예를 들어, jitenv run ./scripts/deploy.sh를 실행하면 스크립트 내부에서는 환경 변수가 보이지만, 부모 쉘에서는 echo $DATABASE_URL가 빈 값을 반환합니다.

플러그 가능한 소스

두 가지 소스 플러그인을 지원합니다: local(config.toml 내의 암호화된 백) 및 AWS Secrets Manager. 사용자는 필요에 따라 백엔드를 추가할 수 있습니다.

쉘 후크 통합

bash, zsh, PowerShell 7+용 쉘 후크를 제공하여, 매핑된 명령을 자동으로 jitenv run을 통해 재실행합니다. 후크는 경로, glob, cwd_glob 매핑을 모두 지원하며, 내장 명령이나 별칭은 간섭하지 않습니다.

Chocolatey를 통한 Windows 설치

Windows 사용자는 Chocolatey 패키지 관리자를 통해 jitenv를 설치할 수 있습니다. 관리자 권한이 아닌 일반 사용자 권한으로 PowerShell을 열고 다음 명령을 실행합니다:

choco install jitenv

이 명령은 공식 windows_amd64 릴리스 ZIP을 다운로드하고 SHA256로 검증한 후, jitenv.exe와 jitenv-tui.exe를 %PATH%에 샤임합니다.

Scoop을 통한 설치

Scoop 사용자는 다음 명령을 순서대로 실행하여 전용 버킷을 추가하고 jitenv를 설치합니다:

scoop bucket add jitenv https://github.com/Galvill/scoop-jitenv
scoop install jitenv

설치 후, jitenv.exe, jitenv-hook.exe, jitenv-tui.exe가 %PATH%에 샤임됩니다.

winget을 통한 설치

winget 커뮤니티 저장소를 통해 다음 명령으로 설치할 수 있습니다:

winget install Galvill.jitenv

쉘 후크 활성화

설치 후, PowerShell 7+에서 한 번만 후크를 활성화해야 합니다. 새 PowerShell 탭을 열고 다음 명령을 실행합니다:

jitenv hook install

이 명령은 프로파일에 활성화 줄을 추가합니다. 변경 사항을 적용하려면 새 PowerShell 탭을 열거나 exec $SHELL를 실행합니다.

암호화된 설정 초기화

첫 사용 시, 암호화된 설정을 초기화해야 합니다. 다음 명령을 실행하여 인터랙티브 TUI를 통해 설정 파일을 생성하거나, 비대화식으로 초기화할 수 있습니다:

jitenv config init

이 명령은 암호화된 config.toml 파일을 생성하고, 마스터 키를 보호하기 위한 패스프레이즈를 요청합니다.

환경 변수 매핑 및 실행

설정이 완료되면, 특정 파일에 환경 변수를 매핑하고 실행할 수 있습니다. 예를 들어, ./deploy.sh 스크립트에 데이터베이스 URL을 주입하려면:

jitenv unlock
./deploy.sh

jitenv unlock로 에이전트를 잠금 해제한 후, 매핑된 명령을 실행하면 환경 변수가 해당 프로세스 트리에만 주입됩니다. 부모 쉘에서는 값을 확인할 수 없습니다.

개인 저장소 클론

jitenv clone 명령을 통해 개인 GitHub 저장소를 클론하고, 개인 액세스 토큰을 암호화된 백에 저장할 수 있습니다. 예를 들어:

jitenv clone https://github.com/acme/private-repo

이 명령은 토큰을 프롬프트로 입력받아 암호화된 백에 저장하고, 클론된 디렉터리 내의 git 명령에만 토큰을 주입합니다. 토큰은 .git/config나 셸 환경에 절대 노출되지 않습니다.

지원 환경·시스템 요구사항

jitenv는 Linux, macOS, Windows에서 실행됩니다. Windows에서는 PowerShell 7+가 필수이며, 에이전트는 named pipes와 token-SID 피어 인증을 사용합니다. 런타임 디렉터리는 %LOCALAPPDATA%jitenv에 생성됩니다. Linux에서는 SO_PEERCRED와 XDG_RUNTIME_DIR를, macOS에서는 LOCAL_PEERCRED와 $TMPDIR를 사용합니다.

제한 사항·확인 사항

Windows 릴리스 바이너리는 현재 Authenticode 서명이 없어, 첫 실행 시 SmartScreen 경고가 발생할 수 있습니다. 이 경우 파일을 오른쪽 클릭하여 속성에서 차단 해제하거나, PowerShell에서 Unblock-File 명령을 사용할 수 있습니다. 또한, jitenv clone으로 생성된 Git askpass 샤임은 %LOCALAPPDATA%jitenvbingit-askpass.bat에 위치하며, jitenv 바이너리를 이동하면 샤임이 끊어질 수 있으므로, 이동 후에는 jitenv clone을 다시 실행하거나 샤임을 수동으로 재생성해야 합니다.

최신 버전·업데이트

현재 버전은 0.14.1입니다. 새로운 릴리스는 Chocolatey, Scoop, winget을 통해 choco upgrade jitenv, scoop update jitenv, winget upgrade Galvill.jitenv 명령으로 업데이트할 수 있습니다. 에이전트는 셸 탭이 로드될 때 24시간마다 GitHub 릴리스를 확인하여 업데이트 알림을 제공하며, JITENV_NO_VERSION_CHECK=1 환경 변수로 opt-out할 수 있습니다.

시스템 요구사항

Windows에서는 PowerShell 7+가 필요합니다. 에이전트는 named pipes와 token-SID 피어 인증을 사용하며, %LOCALAPPDATA%jitenv 런타임 디렉터리를 생성합니다.