코드에서 암호를 안전하게 관리하는 AWS 기반 접근법

Source

  • Evernote/Inbox/코드에서 암호를 안전하게 사용할 방법을 찾아서… – OpsNow Tech Blog.md

Summary

본문은 코드 내 민감한 정보(암호 등)의 안전한 관리를 위해 시도했던 다양한 방법과 그 한계를 설명하며, 최종적으로 AWS Parameter Store 및 Secrets Manager를 활용한 중앙 집중식 관리 방안을 제시한다. 설정 파일 분리, S3 업로드, 환경 변수 사용 등의 초기 시도들은 관리의 번거로움, 권한 통제 어려움, 효율성 저하 등의 이유로 포기되었다. 대신 AWS Systems Manager Parameter Store는 KMS 암호화와 IAM 권한을 결합해 민감 정보를 보호하며, Secrets Manager는 RDS 등 데이터베이스 정보를 통합 관리하고 자동轮换(Rotation)을 지원하여 더 최적화된 솔루션으로 평가된다.

Key Points

  • 코드 내 하드코딩이나 평문 설정 파일 사용은 보안상 위험하며, 개발/배포 과정에서 관리 부담이 크다.
  • S3에 설정 파일을 저장하고 IAM 정책으로 접근을 제한하는 방식은 권한 통제가 어려울 수 있다.
  • 환경 변수를 통한 제공은 Lambda 등에서 KMS 암호화와 결합 가능하나, 복호화 로직 추가 및 관리 복잡성으로 비효율적이다.
  • AWS Systems Manager Parameter Store는 KMS 키를 이용해 민감 정보를 암호화 저장하고, IAM을 통해 접근 권한을 세분화할 수 있다.
  • AWS Secrets Manager는 데이터베이스 자격 증명 등을 단일 객체로 통합 관리하며, 자동 암호轮换 기능을 제공해 보안과 편의성을 높인다.
  • Parameter Store와 Secrets Manager는 모두 IAM 기반 권한 제어와 KMS 암호화를 활용하여 중앙 집중식 보안 관리를 가능하게 한다.