이 문서는 최근 알게 된 infisical에 대해 정리한 노트이다.
Infisical이란 ?
https://infisical.com/
Infisical is an open-source end-to-end platform to manage secrets and configuration across your team and infrastructure.
1 Secret Addedvm@acme.com submitted a change request to production environment.
infisical.com
Infisical은 프로젝트 실행에 필요한 환경변수를 중앙에서 관리할 수 있도록 지원하는 도구다. 오픈소스로 제공되며, 셀프 호스팅을 통해 자체 인프라에서 운영할 수 있고, 필요에 따라 Infisical Cloud에서 제공하는 호스팅 서비스를 사용할 수도 있다.
필요성
줄곧 파이썬 프로젝트에서는 .env 파일을 통해 환경변수를 관리하고, 이를 팀 내에서 공유하는 방식으로 사용해왔다. AWS를 사용하는 환경이라면 Secrets Manager나 SSM Parameter Store를 활용해 환경변수를 관리하고 애플리케이션에서 참조하는 방식이 일반적이었다.
그러나 .env 파일의 공유가 꺼려지거나, AWS를 사용할 수 없는 환경이라면 어떨까? 이 지점에서 .env 기반 관리 방식과 AWS 기반 솔루션이 가지는 한계를 짚어볼 필요가 있다.
.env 파일은 로컬 파일 기반의 단순한 방식이기 때문에 개인 개발 환경에서는 유용하지만, 팀 단위로 확장되는 순간 여러 한계를 드러낸다. Git에 포함하지 않더라도 파일을 전달하는 과정 자체가 필요하며, 이 과정에서 보안 사고의 가능성을 완전히 배제하기 어렵다. 또한 누가 어떤 환경변수를 언제 변경했는지에 대한 이력 관리가 불가능하고, 환경(dev/stg/prod)별로 값이 달라질수록 관리 비용은 빠르게 증가한다.
AWS Secrets Manager나 SSM Parameter Store와 같은 클라우드 기반 솔루션은 이러한 문제를 상당 부분 해결해줄 수 있는 강력한 대안이다. 다만 모든 환경에서 항상 선택 가능한 것은 아니다. 비용 문제, 네트워크 접근 제약, 혹은 온프레미스·로컬 중심의 개발 환경에서는 적용 자체가 어려운 경우도 적지 않다.
이 두 가지 사례를 통해 다음과 같은 결론에 도달할 수 있다. 로컬 기반의 환경변수 관리 방식도 아니고, 특정 클라우드(AWS)에 종속되지 않으면서도 팀 단위로 환경변수를 안전하게 관리할 수 있는 오픈소스 솔루션이 필요한 상황이다. 그렇다면 이러한 요구사항을 만족하기 위해 무엇이 필요할까? 이에 대한 하나의 해답으로 Infisical을 고려해볼 수 있다.
사용법
infisical의 사용방법에 대한 사용사례를 잘 정리한 문서가 존재한다. 보다 자세한 사용방법을 보려면 공식 문서를 읽어보자.
https://infisical.com/docs/cli/usage
Quickstart - Infisical
Manage secrets with Infisical CLI
infisical.com
사용법에 대한 대략적인 내용은 설치 → 로그인 → 실행 의 사이클이다. 아래는 공식 문서에서 가져온 사용방법의 예시다.
install
brew install infisical/get-cli/infisical
login
infisical login
execute
infisical run --env=dev --path=/apps/firefly -- [your application start command] # e.g. npm run dev
# example with node (nodemon)
infisical run --env=staging --path=/apps/spotify -- nodemon index.js
# example with flask
infisical run --env=prod --path=/apps/backend -- flask run
# example with spring boot - maven
infisical run --env=dev --path=/apps/ -- ./mvnw spring-boot:run --quiet
배포 시 참고하기
Infisical을 사용하면서 하나 눈에 띄는 특이점은 login 방식에 대한 제약이었다.
infisical login 명령을 실행하면 브라우저를 열어 인증을 진행하고, 발급된 토큰을 복사·붙여넣기 하는 과정을 거치게 된다. 로컬 개발 환경에서는 큰 문제가 되지 않지만, 일반적인 서버 환경이나 CI/CD 파이프라인과 같이 GUI를 사용할 수 없는 환경에서는 이 방식이 그대로 적용되기 어렵다.
즉, 사람이 직접 개입해야 하는 인증 흐름은 자동화된 실행 환경과 잘 맞지 않는다.
이 문제를 해결하기 위해서는 Infisical에서 제공하는 특정 환경변수 설정 방식을 사용해야 한다. 이는 infisical login 과 같은 인터랙티브한 인증 과정 대신, 사전에 발급한 인증 정보를 통해 비대화식(non-interactive)으로 접근하는 방식이다.
여기서 말하는 Infisical의 특정 환경변수 설정이란, 프로젝트 단위로 발급된 Service Token을 환경변수로 등록하는 것을 의미한다. 이 토큰을 사용하면 브라우저 기반 로그인 없이도 Infisical에 인증할 수 있으며, 서버 환경이나 CI/CD와 같이 자동화된 실행 환경에서도 안정적으로 환경변수를 주입할 수 있다.
export INFISICAL_TOKEN = ??
Service Token의 경우엔 프로젝트 메뉴에 Access Control 을 통해 설정이 가능하다.

그리고 실행을 할 땐 projectId 를 지정해줘야한다. (ProjectId는 Organization > Settings > General의 Organization ID 를 입력해야한다)
$ infisical run \\
--projectId=$(INFISICAL_PROJECT_ID) \\
--env=dev \\
--path=/backend \\
-- docker-compose -f ./deploy/docker-compose.yml up --build -d
마치며
결국 환경변수 관리는 단순히 값을 저장하는 문제를 넘어, 보안·운영·자동화를 함께 고려해야 하는 영역이다. .env 파일과 클라우드 종속적인 솔루션의 한계를 모두 인지한 상황에서, 인프라 환경에 구애받지 않으면서 팀 단위 운영에 적합한 대안을 고민하게 된다면 Infisical은 충분히 검토할 가치가 있는 선택지라 할 수 있다.
'개발 노트 > 개발 삽질' 카테고리의 다른 글
| Python으로 푸쉬 알람 전송과 시행착오 (1) | 2025.05.18 |
|---|---|
| Commit Message 자동화하기, 근데 AI를 곁들인 (0) | 2025.04.24 |
| makefile에서 .env 사용 시 특수문자 처리하기 (0) | 2025.02.12 |
| Github Action에서 Selenium 실행시키기 (8) | 2024.09.23 |
| Obsidian 노트를 Tistory에 업로드 시키는 방법 (4) | 2024.09.15 |