Spring Cloud Vault 연동하기

By | 2022년 10월 18일
Table of Contents

Spring Cloud Vault 연동하기

Spring Boot 버전 체크

아래 내용은 버전 2.7.4 에서 테스트되었습니다.

2.4, 2.5 버전중에 변동사항이 크기때문에 버전을 체크해야 합니다.

의존성 추가

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-configuration-processor'
    implementation 'org.springframework.cloud:spring-cloud-starter-vault-config:3.1.1'
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

application.yml

반드시 application.yml 에 내용을 추가해야 하고,
profile 설정 및 활성화가 되어야 합니다.

application-dev.yml 같은 파일명을 사용하면 안됩니다.

# 중요!!! 활성화된 프로파일을 지정해 주어야 한다.
spring:
  config:
    activate:
      on-profile: "dev"
    import: vault://team1/foo
spring.cloud.vault:
  fail-fast: true
  authentication: APPROLE
  app-role:
    role-id: 2067e81e-be8e-49ef-3XXXXXXXXXX
    secret-id: c8d69559-77fe-359e-XXXXXXXXXXXXXX
  uri: http://43.201.XXX.XXX:8200
  connection-timeout: 5000
  read-timeout: 15000
---
spring:
  config:
    activate:
      on-profile: "prod"
    import: vault://team1/foo
spring.cloud.vault:
  fail-fast: true
  authentication: APPROLE
  app-role:
    role-id: 2067e81e-be8e-49ef-3XXXXXXXXXX
    secret-id: c8d69559-77fe-359e-XXXXXXXXXXXXXX
  uri: http://43.201.XXX.XXX:8200
  connection-timeout: 5000
  read-timeout: 15000

데이타 가져오기

모든 설정이 이루어지면 아래처럼 환경변수에서 값을 가져오는 것과 동일한 방식으로,
vault 에서 비밀번호를 가져올 수 있습니다.

환경변수명에 중복이 있는 경우,
다른 환경변수값을 가져올 수 있다.

@RestController
@SpringBootApplication
@RequiredArgsConstructor
public class VaultTestApplication {

    private final Environment env;

    @RequestMapping("/")
    public String home() {
        System.out.println(env.getProperty("password"));

        return "OK!";
    }

    public static void main(String[] args) {
        SpringApplication.run(VaultTestApplication.class, args);
    }
}

답글 남기기