기록

AWS에서 민감 정보 안전하게 관리하기: Parameter Store 본문

DevOps

AWS에서 민감 정보 안전하게 관리하기: Parameter Store

youngyin 2025. 1. 29. 12:00

개요

로컬에서 환경 설정 파일을 관리할 때, .gitignore를 이용해 민감 정보가 Git에 업로드되지 않도록 할 수 있습니다. 하지만 로컬에서 직접 관리하다 보면 파일 갱신을 동료에게 수동으로 공유해야 하는 불편함이 있었습니다. 이를 해결하기 위해 여러 대안을 검토했고, 최종적으로 AWS Systems Manager Parameter Store를 활용하기로 결정했습니다.


1. 기존의 문제점

로컬 환경 변수 관리의 불편함

  • 기존에는 .env 파일을 .gitignore에 추가하여 관리했습니다.
  • 하지만 팀원 간 환경 변수를 공유할 때, 별도의 방식(메신저, 이메일 등)으로 전달해야 했습니다.
  • 파일 업데이트 시 동기화가 어려웠으며, 실수로 Git에 올라가는 경우도 발생할 위험이 있었습니다.

보안 문제

  • 환경 변수 파일을 안전하게 공유하기 위해 암호화하는 방법을 고려했지만, 추가적인 운영 부담이 있었습니다.
  • 비밀번호 및 API 키가 코드 저장소에 노출되지 않도록 강력한 보안 정책이 필요했습니다.

2. AWS Systems Manager Parameter Store를 선택한 이유

여러 대안을 검토한 후 AWS Systems Manager Parameter Store를 선택한 이유는 다음과 같습니다.

  • IAM을 활용한 접근 제어: 특정 사용자 및 서비스만 환경 변수를 읽을 수 있도록 세밀한 권한 관리를 할 수 있음
  • 자동화된 관리 가능: AWS CLI 및 SDK를 통해 애플리케이션이 직접 값을 가져올 수 있음
  • 보안 강화: AWS KMS(Key Management Service)를 통해 환경 변수를 암호화하여 저장 가능
  • 비용 효율성: 다른 비밀 관리 솔루션(AWS Secrets Manager, HashiCorp Vault) 대비 저렴한 비용으로 활용 가능

3. 적용 과정

AWS Systems Manager Parameter Store에서 새로운 파라미터 생성

  1. AWS 콘솔에 로그인합니다.
  2. Systems Manager 서비스로 이동합니다.
  3. Parameter Store를 선택합니다.
  4. 새로운 파라미터 생성 버튼을 클릭합니다.
  5. 이름 입력 (예: /my-app/db-credentials)
  6. 키-값 페어 추가:

IAM 사용자 계정 생성 및 권한 설정

  1. IAM 콘솔에서 새로운 사용자를 생성.
  2. "AmazonSSMReadOnlyAccess" 정책을 추가하여 읽기 권한을 부여.
    • 엑세스 키 발급
  3. AWS CLI에서 aws configure를 실행하여 IAM 사용자 정보를 설정
    • AWS CLI 설치
    curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
    sudo installer -pkg AWSCLIV2.pkg -target /
    • AWS 계정정보 설정

로컬 환경에서 AWS CLI 활용

Gradle 설정에 라이브러리를 추가합니다.

implementation platform('io.awspring.cloud:spring-cloud-aws-dependencies:3.0.4')
implementation 'io.awspring.cloud:spring-cloud-aws-starter-parameter-store'

 

애플리케이션 코드에서 이 값을 활용하도록 변경합니다.

@Value("${/my-app/db-credentials}")
private String dbCredentials;

4. 적용 후 변화 및 결과

팀원 간 환경 변수 공유 불필요: AWS Systems Manager Parameter Store를 통해 자동으로 애플리케이션에서 값을 가져오도록 설정
보안 강화: 환경 변수가 로컬 파일에 저장되지 않고, AWS KMS를 통해 암호화하여 관리
운영 효율성 증가: 환경 변수를 변경할 때마다 재배포 없이 AWS에서 값만 변경하면 됨

Comments