ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • AWS Secrets Manager를 이용하여 DB 비밀번호 등 암호화하기.
    Computer Science/Aws 2022. 8. 2. 21:48
    //amazon secret management
    implementation 'org.springframework.cloud:spring-cloud-starter-bootstrap:3.1.3'
    implementation 'org.springframework.cloud:spring-cloud-starter-aws-secrets-manager-config:2.2.6.RELEASE'

    boot strap을 먼저 실행한 후 aws secrets manager에 접속하여 가져오는 방식이다.

    고로 우선 위에 2가지를 implement해준다.

     

    secrets manager에 secret들을 저장해준다.

    다른 유형의 보안암호로 key와 해당 값을 입력해준다.
    /secret/~

    기본이 secret 아래로 되어 있기에 prefix를 /secret/으로 하고 프로젝트에 쓰일 명을 입력해준다.

     

    그 다음 ec2에 iam 권한을 추가해준다.

    SecretsManagerReadWrite

     

    Spring boot

    local에서 실행 환경과 server 실행환경을 편리하게 나누기 위해 application을 구성하였다.

     

    bootstrap.yaml 파일을 생성해준다.

    application.yaml이 있는 곳에 생성해준다.

     

    bootstrap.yaml파일이다.

    spring:
      profiles:
        group:
          local: "localdb,common"
          server: "serverdb,common"
        active: local
    ---
    spring:
      config:
        activate:
          on-profile: localdb
    aws:
      secretsmanager:
        enabled: false
    
    ---
    spring:
      config:
        activate:
          on-profile: serverdb
    cloud:
      aws:
        region:
          static: ap-northeast-2
          auto: false
    aws:
      secretsmanager:
        name: lof
        enabled: true

    주의 해야할 점으로는 secret manager에서 /secret/lofmariadb 로 설정하였으니 aws.secretsmanager의 name을 lofmariadb로 설정해준다.

     

    bootstrap이 먼저 실행 되고 그다음 application이 실행된다.
    따라서 만약 local이라면 bootstrap의 localdb가 실행되고 application에서 common과 localdb가 실행되는 방식이다.

     

    applicaion.yaml 파일이다.

    spring:
      config:
        activate:
          on-profile: common
      datasource:
        driver-class-name: org.mariadb.jdbc.Driver
    
      mvc:
        path match:
          matching-strategy: ant_path_matcher
      jpa:
        show-sql: true
        hibernate:
          ddl-auto: create
        defer-datasource-initialization: true
      sql:
        init:
          encoding: UTF-8
          continue-on-error: true
          mode: always
    
    server:
      port: 80
    
    ---
    
    spring:
      config:
        activate:
          on-profile: localdb
        import: localkey.yaml
      datasource:
        url: jdbc:mariadb://localhost:3306/lof
        username: root
        password: 1234
    
    slack:
      token: ${localkey.slack-api.token}
    
    ---
    
    spring:
      config:
        activate:
          on-profile: serverdb
      datasource:
        url: ${lof.mariadb.url}/lof
        username: root
        password: ${lof.mariadb.password}
    slack:
      token: ${lof.slack.token}

    서버에서 실행 될 deploy.sh에 java 옵션으로

    -Dspring.profiles.active=server

    를 추가해주면 server 단에서는 server로 변경되어 실행이 된다.

    'Computer Science > Aws' 카테고리의 다른 글

    AWS Lambda Node.js 로 api call 하기  (0) 2022.09.29
    AWS codeDeploy error log 확인  (0) 2022.08.09
    도메인 aws에 적용하기.  (0) 2022.07.27
    private subnet/EC2 접근 방법  (0) 2022.06.28
    AWS Application Load Balancer  (0) 2022.06.28
Designed by Tistory.