인프런 커뮤니티 질문&답변

두잇베스트님의 프로필 이미지
두잇베스트

작성한 질문수

실전! GitHub Actions으로 CI/CD 시작하기

구성한 CI/CD 리뷰

애플리케이션 실행시 환경 변수에 대해서

작성

·

53

0

애플리케이션을 실행하게 되면, 여러 환경 변수가 필요하게 되는데 DB 정보 URL 정보라던지. 이런 정보는 깃허브 액션에서 보통 어떻게 처리하나요?? 깃허브 액션의 secrets를 이용해서 도커 빌드시에 --build-arg를 활용하는지 ? 아니면 다른 방법으로 활용하는지 궁금합니다.

답변 2

0

이상원님의 프로필 이미지
이상원
지식공유자

안녕하세요 ~

질문해주신 내용이 단순히 GitHub Actions의 기능을 넘어 어떻게 시크릿을 처리할지에 대한 것이네요

이 주제에 대해 명확하게 “이렇게 해야 한다”라고 말씀드리기는 어렵지만, 참고할 수 있는
여러 가지 방법을 설명드리겠습니다.


애플리케이션을 운영하다 보면 DB 엔드포인트, 토큰, API 키와 같은 민감 정보를 다뤄야 하는
경우가 많습니다.
이런 정보를 안전하게 관리하기 위해 보통 다음과 같은 방법을 활용합니다.

A. GitHub Actions Secrets 사용

GitHub Actions에서 제공하는 시크릿 기능은 특정 job이나 step에서 민감 정보를 안전하게 전달하는 데 유용합니다.
예를 들어, Docker 로그인이나 AWS 접근이 필요할 때 GitHub Actions Secrets에
저장된 정보를 활용할 수 있습니다.

하지만, 애플리케이션 구동과 관련된 민감 정보는 GitHub Actions Level에서 직접 처리하지 않고,
애플리케이션 초기화 단계에서 필요한 정보를 불러오는 방식으로 운영하는 경우가 많습니다.

 

B. Docker Build 시 --build-arg 사용

Docker 빌드 과정에서 --build-arg를 통해 시크릿 값을 전달하는 방법도 가능하긴 하지만,
이렇게 하면 Docker 이미지 레이어에 민감 정보가 그대로 남을 수 있어 보안상 문제가 생길 수 있습니다.

C. 외부 시크릿 관리 도구 사용

더 안전한 방법으로는 AWS Secrets Manager나 HashiCorp Vault 같은 외부 시크릿 관리 도구를 사용하는 방법이 있습니다.
예를 들어, AWS Secrets Manager는 IAM 권한을 통해 애플리케이션 초기화 시 필요한 정보를 안전하게 불러올 수 있도록 지원합니다.
HashiCorp Vault는 더욱 강력한 시크릿 관리 기능과 인증 방식을 제공하며,
시크릿을 필요할 때만 가져오는 방식으로 안전하게 관리할 수 있습니다.

D. 애플리케이션 초기화 단계에서 시크릿 로드

컨테이너 환경에서 애플리케이션을 구동한다면, Init Container를 사용하여 민감 정보를
외부 저장소에서 불러와 특정 경로에 파일로 저장한 후, 애플리케이션 컨테이너가 실행될 때
해당 정보를 참조할 수 있습니다.
쿠버네티스를 사용 중인 환경에서는 이런 방식을 활용하기도 합니다.

 

이렇게 다양한 방법 중에서 애플리케이션의 보안 요구사항에 맞는 방식으로 선택하시면 됩니다.
시크릿이 빌드 단계에서 이미지에 포함되지 않도록 주의하고,
실행 단계에서 안전하게 불러오는 방식이 일반적으로 권장됩니다.

0

안녕하세요, 인프런 AI 인턴입니다. 두잇베스트님께서 질문하신 내용에 대한 답변을 드리겠습니다.

애플리케이션 실행 시 필요한 환경 변수는 보통 민감한 정보가 포함되어 있기 때문에, GitHub Actions에서는 이를 안전하게 관리하기 위해 몇 가지 방법을 활용합니다. 가장 일반적인 방법은 GitHub Actions의 secrets를 활용하는 것입니다.

  1. GitHub Actions Secrets: GitHub Secrets을 사용하면 민감한 정보를 안전하게 저장하고 이를 워크플로우에서 사용할 수 있습니다. 예를 들어, 데이터베이스 정보나 API 키 등을 GitHub Secrets로 저장하고, 워크플로우 실행 시 환경 변수로 설정하여 사용하는 방법입니다.

  2. Docker Build Arguments (--build-arg): Docker를 사용하는 경우, GitHub Actions에서 secrets를 사용하여 Docker 빌드 시 --build-arg 옵션을 통해 환경 변수를 전달할 수 있습니다. 이는 주로 빌드 시 필요한 환경 변수를 안전하게 전달하는 데 사용됩니다.

  3. ENV 파일: 로컬 환경에서 .env 파일을 사용하여 환경 변수를 로드할 수 있습니다. GitHub Actions에서도 이와 유사한 방식으로 환경 변수를 설정할 수 있지만, 민감한 정보는 .env 파일에 직접 저장하지 않고 GitHub Secrets를 통해서 관리하는 것이 보안상 안전합니다.

관련하여 자세한 설정 방법과 예제는 아래 링크에서 참고하실 수 있습니다:
- GitHub Actions: 환경 변수 및 Secrets 사용 가이드

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

두잇베스트님의 프로필 이미지
두잇베스트

작성한 질문수

질문하기