- Published on
GitHub Actions에서 Infisical 환경 변수 사용하기
- Authors
- Name
- 신주용
Infisical은 시크릿 관리를 위한 오픈소스 플랫폼입니다12. GitHub Actions에서 Infisical을 사용한 환경 변수 주입 방법을 적용한 기록을 남깁니다.
Infisical
일반적으로 서비스를 개발하고 실행할 때 외부에서 설정이 필요한 변수는 환경 변수로 등록해서 사용합니다. 그 중에서도 외부 접속이나 연결이 필요한 DB 같은 경우는 IP주소, DB 사용자명, 비밀번호와 같은 정보도 환경 변수로 관리하는데, 이들은 외부로 노출되면 안 되는 중요한 정보이기 때문에 '시크릿'이라고 부릅니다.
Infisical과 같은 서비스가 필요한 이유
시크릿이라는 좁은 범위가 아니라 넓은 범위의 환경 변수를 보더라도, 여러 사람이 같이 개발하는 프로젝트에서는 이러한 환경 변수 정보를 공유하고 최신화하는 것이 필요합니다. 단순히 .env
파일로 관리하면 누군가 개발하면서 환경 변수를 변경한 후 공유하는 것을 깜박 잊는 경우, 유출 방지를 위해 .gitignore
에 추가해뒀다가 다른 환경으로 옮기며 .env
파일을 잃어버리는 경우 등이 꽤나 자주 발생할 수 있기 때문입니다.
때문에 프로젝트에서 사용할 모든 환경 변수를 원격 서버에서 공유하여 관리하고, 실행 시에는 암호화 된 방법으로 필요한 환경 변수를 가져올 수 있는 Infisical, Hashicorp Vault 같은 서비스가 있습니다.
Infisical 간단 사용 방법
// 기존 실행 명령어
IP1="192.168.0.1" VAR2="abc" PROJECT_ROOT_DIR="/.../some/dir/myproj" go run main.go
// infisical 사용
infisical run --env=dev -- go run main.go
더 자세한 사용법은 공식 문서를 참고 바랍니다.
GitHub Actions에서 Infisical 사용
로컬에서 개발할 때는 위에서 보였던 것과 같이 infisical run -- go run main.go
명령어로 실행했습니다. GitHub Actions에서 사용할 때는 조금 다른 방식이 필요해서, 제가 찾아보고 해결한 방법을 공유합니다.
- GitHub Actions 통합 방법 공식 문서가 있긴 한데, 설명이 약간 부실합니다...
적용 방법
GitHub에서 OAuth 앱으로 Infisical 등록
- Settings > Developer Settings > OAuth Apps > 추가
Infisical에서 integration 설정하기
- 저는 현재 기존에 추가해 둔 것이 있어
Current Integrations
에 GitHub Actions가 추가되어 있습니다만, 처음에는 안 보일 것입니다. - 아래 Cloud Integrations에 있는 GitHub를 클릭합니다.
- 저는 현재 기존에 추가해 둔 것이 있어
환경과 리포지토리를 선택합니다. 성공하면 위 2번 사진과 같이
Current Integration
에 표시가 될 것입니다.GitHub 리포지토리 > Settings > Security > Secrets and variables > Actions 메뉴에서 Repository secrets에 등록이 되었는지 확인합니다.
workflow 파일 수정
- .github / workflows / [some_file].yml 의
step
에서env
를 포함시킵니다. - https://github.com/NutBooks/NutBooks/blob/develop/.github/workflows/go.yml#L41-L47
- .github / workflows / [some_file].yml 의
결과
잘 됩니다!
Infisical은 요즈음 사용되는 대부분의 서비스처럼 웹사이트에서 가입하고 바로 Infisical Cloud 버전을 사용할 수 있습니다. 혹은 Secret을 다루는 서비스인 만큼 Self Hosting 방법도 공식 문서에서 잘 설명해 주고 있어서 팀으로 프로젝트를 하는 경우에는 사용해보면 유용할 것 같습니다.
Footnotes
"Infisical." infisical.com. https://infisical.com (accessed Jul. 14, 2023) ↩
Outsider. "Infisical: 오픈소스 시크릿 관리 플랫폼." blog.outsider.ne.kr. https://blog.outsider.ne.kr/1669 (accessed Jul. 14, 2023) ↩