인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

안_님의 프로필 이미지

작성한 질문수

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

config 파일 암호화

해결된 질문

작성

·

70

0

yml의 설정 내용을 암호화하는 작업중에 궁금한 점이 있습니다.

 

  1. 암호화해도 http://config server주소/config파일명/프로파일 경로로 접속하면 해독된 값을 볼 수 있는데 이러면 암호화한 의미가 있는지 궁금합니다

  2. config 서버에서 http://config server주소/config파일명/프로파일 경로를 비활성화하는 방법이 있을까요?

  3. 그리고 비대칭키에서 암호화에 사용하는 password는 평문으로 yml에 저장하고 있는데 이러면 반쪽짜리(?) 암호화일 것 같은데 이렇게 사용해도 되는건지가 궁금합니다

답변 2

1

Dowon Lee님의 프로필 이미지
Dowon Lee
지식공유자

안녕하세요, 이도원입니다.

문의 내용에 답변 및 제 의견 남겨드립니다.

먼저, 1번과 2번에 대한 답변이 비슷한 내용일 것 같습니다. config server에 대한 URL를 직접 접근하게 되면, 말씀하신 내용처럼 암호화된 부분에 대해 노출이 될 수 밖에 없습니다. 따라서 비활성화 작업이 필요할 경우에는 URL제한 및 인증처리를 추가해 볼 수 있습니다. 간단하게 spring config-service에 엑세스 제한을 추가해 보기 위해 아래 코드와 같이 spring-security를 추가하고 실행해 보면,

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>
스크린샷 2025-02-11 오전 8.39.48.png.webp

위와 같이 기본 password를 확인하실 수 있습니다. 그리고, htpp://localhost:8888으로 엑세스 해보면, 아래와 같이 인증 정보를 물어보는데, 여기

  • username: user

  • password: [위 콘솔 로그에 출력 된 암호 ex, 037f3402-0d6d-4c77-9800-03af8e45eba0]

를 입력하고 접속하시면 원래의 configuration 정보를 확인하실 수 있습니다. 이 부분은 spring-security하고도 관련 있는 부분이기 때문에, username/password 변경이나 password의 암호화 등을 응용해 보실 수 있을 것 같습니다.

스크린샷 2025-02-11 오전 8.41.14.png.webp

마지막으로, 비대칭암호에 필요한 password를 설정파일(yaml, properties)에 평문으로 작성하시다고 한 부분은, 암호 자체를 설정 파일이 아닌 다른 방법(ex, 실행 시 파라미터나 다른 암호화 파일 등)으로 보관하여 실행해 보실 수 있습니다.

encrypt: 
  key-store: 
    location: classpath:/config-server.jks 
    password: ${KEYSTORE_PASSWORD} 
    alias: config-server-key 
    secret: ${KEY_PASSWORD}

감사합니다.

 

1

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 안_님

Spring Cloud Config 서버의 설정 파일 암호화와 관련해서 몇 가지 의문을 가지신 것 같습니다. 질문에 대한 답변을 드리겠습니다.

  1. 암호화한 설정의 의미:

    • Config 서버에서 쉽게 해독된 값을 제공하는 경우 암호화의 이점이 감소할 수 있습니다. 그러나 설정의 암호화는 주로 저장된 상태에서 보안 강화를 목적으로 합니다. 즉, 저장된 데이터가 유출되었을 때를 대비하는 것입니다. Config 서버에서 해독된 설정을 제공하는 것은 운영 시간 동안의 시스템 기능을 위한 부분이기도 합니다. 암호화된 데이터는 데이터 저장소에서 안전성을 유지하며, 네트워크 상으로 민감한 정보가 전송될 때도 보호됩니다.
  2. Config 경로 비활성화:

    • Config 서버의 특정 엔드포인트를 비활성화하는 명확한 방법은 명시되어 있지 않지만, Spring Security를 사용하여 특정 경로에 대한 접근을 제한할 수 있습니다. 이를 통해 해독되지 않은 데이터를 네트워크에 노출시키지 않고 필요할 때에만 안전하게 사용할 수 있습니다.
  3. 비대칭키와 암호화 password:

    • 비대칭키를 사용할 때, 일반적으로 비밀 키는 외부에 노출되지 않도록 안전하게 관리되어야 합니다. 만약 평문으로 yml에 저장되는 설정이 있다면, 이는 실제 운영 환경에서 보안 취약점이 될 수 있습니다. 이런 경우에는 환경 변수나 안전한 외부 저장소에서 적절하게 비밀 정보를 관리하여야 합니다. 보안 관리가 이러한 방식으로 이루어지지 않으면, 암호화의 이점이 크게 줄어들기 때문에 설정 관리 및 접근에 주의를 기울이셔야 합니다.

더 많은 정보를 원하신다면 관련된 질문과 답변이 있는 게시물을 참고하시기 바랍니다:

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

안_님의 프로필 이미지

작성한 질문수

질문하기