개발자
MSA 아키텍처에서는 대개 환경 정보를 일괄적으로 관리하는 서버를 두는 것으로 알고 있습니다.(Cloud Native 12 Factors) 그 중에서 Spring에서 사용할 수 있는 것은 Spring Cloud Config Server입니다. 해당 컨피그 서버를 사용하면 효율적으로 application.yml를 관리할 수 있죠.. 그런데 여기까지는 좋습니다만 제 지식으로는 해결할 수 없는 문제가 발생했습니다. Github Actions CI/CD에서 빌드를 할 때 application.yml이 없어도 되지만 빌드 검증을 위해선 필요합니다. 그런데 이때 Config Server를 외부 포트로 열어놓고 Github actions 접속시 비보안적이지 않나요..? 그래서 Spring Basic Auth를 사용하여 접근하려 했지만 왜인지 모르게 오류가 계속 뜹니다. (몇 시간 동안 해봤지만 안됩니다.. 충돌 때문인지는 모르겠지만 그냥 Security 관련 Bean이 설정이 안되더라구요..) 관련해서 AWS를 활용하여 일회성 인증을 하는 방법이 있다고 합니다만.. 이것만이 방법은 아닐 거 같습니다. 에이 몰라! Config Server 외부 포트 열어놓는건 위험하니까 그냥 Github actions secrets에도 application.yml를 다 넣고 빌드 검증해보고, 실제 배포때는 Dockerfile로 프로파일 설정해서 Config Server에서 불러와야지! 라고 하기에는 그럼 application.yml이 수정될 때 마다 github actions, config server 둘다에서 수정해줘야 할 것 같습니다… 관련하여 조언 주시면 감사하겠습니다.
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2024년 03월 14일
Spring Cloud Config Server와 Github Actions을 결합하여 사용하면서 보안 문제를 해결하는 방법에는 여러가지 접근이 있을 수 있습니다. 1. **비밀 정보를 암호화**: Spring Cloud Config Server는 비밀 정보를 암호화하거나 복호화하는 기능을 제공합니다. 이 기능을 사용하여 application.yml의 민감한 정보를 저장 및 서빙하기 전에 암호화할 수 있습니다. 2. **Private 저장소 사용**: 설정 파일 자체를 Private Git Repository에 보관하고, CI/CD 도구가 해당 리포지토리에 접근 가능하도록 인증 정보를 제공합니다. 3. **Vault 등의 비밀 관리 도구 사용**: Hashicorp Vault와 같은 비밀 관리 도구는 비밀번호, API 키 등과 같은 민감한 데이터를 안전하게 저장하고 제어하는데 필요한 모든 것을 제공합니다. 4. **CI/CD 시점에서 Config Server 운용**: Pipeline 내에서 일시적으로 Spring Cloud Config Server 인스턴스를 구동하는 방법입니다. 빌드가 완료되면 구동된 서버 인스턴스는 폐기됩니다. 5. **별도의 검증 환경 구성**: Github Action이 프로덕션 환경 대신 별도의 검증 환경에 대해 작동하도록 합니다. 이렇게 하면 프로덕션 환경으로의 노출을 막을 수 있습니다. 기본적으로 application.yml 정보는 중요한 설정이므로, 변경이 발생할 때마다 이를 추적하고 버전관리하는 것이 매우 중요합니다. 따라서 Github actions과 Config server에서 동시에 수정되어야 하는 것은 상당히 정상적인 절차입니다. 해당 문제는 MSA 아키텍처를 적용하면서 나타나는 일반적인 고민 포인트 중 하나이며, 여러 해결방안이 있으니 사용자의 필요와 조건에 맞춰 가장 적합한 방법을 선택하시는 것이 좋습니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!