저희 내부적으로 비밀번호, API 키, 인증서 등 민감한 정보에 대해서 HashiCorp Vault와 같은 도구를 사용하는거 같은데, 다른 기업에서는 어떻게 사용하는지 궁금합니다. ChatGPT 등에서 문의하면 자세한 정보는 나오지만… 실제 사례를 듣고 싶어서요.
대세는 HashiCorp Vault입니다만, 제가 아는 일부 기업 또는 부서에서는 비용 문제로, 수동으로 환경 변수(ENV) 또는 설정 파일(Config File) 설정, 시스템 계정 권한 활용, 암호화 도구 사용 등으로 하는 경우도 있더라구요.
EKS 환경 기반으로 답변을 드리자면 저희는 기본적으로 암호값, API 키 등 노출이 위험한 값들은 무조건 Secret Manager를 사용합니다.
그래서 해당 Secret manager를 External Secret을 통해 연동하고, 각 서비스 파드(정확히는 Argo Rollout으로 배포되는 Application)에 각 서비스 단위 Secret을 맵핑하는 형태로 운영하고 있습니다. 이렇게 했을 때의 장점은 IAM 권한에 따라 접근(읽기, 쓰기)을 제어할 수 있음에 따라 관리가 용이하고, 변경 이력 관리 및 추적이 쉽습니다. 단점은 아무래도 비용이 되겠죠 .. ? 그렇지만 운영 환경에서 사용했을 떄 그렇게 큰 비용 폭은 아니었어서 충분히 도입을 고려할 가치가 있지 않나 생각합니다
ConfigMap의 경우 각 서비스 단위 Helm values로 제어하고 있습니다.
팀원들이 대부분 HashiCorp를 얘기를 하더라구요. 근데, 저희 팀원 지인이 kt cloud에 있는데… 비용이 부담이 되서… 수동으로 설정한다고 하기에…. 문의한거에요.
EKS 환경에서는 너무 좋은 거 같아요. 참고하겠습니다. 다만, 저희가 내부 시스템들과도 연동이 필요해서 같이 저희 팀원들이랑 같이 고민해볼께요. @anton.io 님 조언에 너무 감사합니다.
만약 On-premise 환경을 같이 쓰는 하이브리드 구조이거나 멀티 클라우드 구조일 경우에 관리 편의성을 고려한다면 (site-to-site vpn)-(VPC)-(VPC enpoint)-(Secret Manager) 이런 식으로 구성도 가능할 것 같아요. 물론 디테일한 비용산정이 필요하겠지만 Hashicorp 라이선스를 구매하는 비용보다는 저렴할 수 있지 않을까 싶습니다 ㅎㅎ
실제 저희의 경우 AWS 리소스 접근을 site-to-site vpn을 통해서 리소스 접근하고 있습니다. 물론 초기 세팅에 수고가 생길 수도 있지만 세팅 후에는 편리함이 더 많았던 것 같습니다 ㅎㅎ … 조금이나마 도움이 됐길 바랍니다
저희도 예산이 없어서, 일단 Batch로 간단하게 개발을 해두긴했습니다만… 저희는 내부 폐쇄망이래서 Secret Manager로 Bitwarden, Infisical, Confidant 등 오픈소스도 같이 검토를 하고 있답니다. 참고드립니다. 감사합니다.