GitHub Actions Secrets을 활용하여 application 설정파일 숨기기

Bluewind·2022년 5월 7일
0

서버 셋팅

목록 보기
3/6
post-thumbnail

CI 서비스를 GitHub Actions로 변경하고 나서 application.yml 설정파일에 있는 민감정보들을 어떻게 숨겨야할지 고민이 생겼습니다.

기존의 Travis에서는 숨기고자 하는 설정파일을 tar 파일로 압축한 뒤 enc파일로 암호화 시켜서 Travis가 복호화시키는 방법을 사용했었는데요, 이번 방법도 흐름은 비슷할 것 같습니다.

  1. 사용자가 숨기고자 하는 파일을 암호화 합니다.
  2. 암호화하는데 사용했던 패스워드를 Github Secrets에 등록합니다.
  3. Github Actions가 해당 패스워드를 사용하여 복호화 시킨 뒤 build 하여 S3로 전달합니다.

암호화

암호화하기 전에 테스트용으로 my_secret.json 파일을 하나 만들겠습니다.

그리고 아래의 명령어로 암호화 시키겠습니다.
(저는 윈도우 사용자라서 WSL을 사용하여 ubuntu 환경에서 암호화 했습니다)

gpg --symmetric --cipher-algo AES256 my_secret.json

패스워드 설정 창이 나오는데요 반드시 비밀번호를 기억해주세요.

Secret 등록

비밀번호를 까먹기 전에 등록하겠습니다.
해당 프로젝트의 Github 페이지 > Settings > Secrets > Actions > New repository secret

이름은 LARGE_SECRET_PASSPHRASE으로 테스트용으로 간단하게 패스워드를 설정했습니다.

'Add secret' 버튼을 눌러서 등록해줍니다.

스크립트 파일

저는 프로젝트의 ./scripts 디렉토리에 아래의 스크립트 파일을 생성했습니다.

  • decrypt_secret.sh
#!/bin/sh

# --batch to prevent interactive command
# --yes to assume "yes" for questions
gpg --quiet --batch --yes --decrypt --passphrase="$LARGE_SECRET_PASSPHRASE" --output ./src/main/resources/my_secret.json ./src/main/resources/my_secret.json.gpg

Github Actions의 workflow 설정 파일을 수정합니다.

  • main.yml
jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v3

      - name: Grant execute permission for decrypt_secret.sh
        run: chmod +x ./scripts/decrypt_secret.sh
        shell: bash

      - name: Decrypt Secret
        run: ./scripts/decrypt_secret.sh
        env:
          LARGE_SECRET_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }}

      # This command is just an example to show your secret being printed
      # Ensure you remove any print statements of your secrets. GitHub does
      # not hide secrets that use this workaround.
      - name: Test printing your secret (Remove this step in production)
        run: cat ./src/main/resources/my_secret.json
...

실제 배포 상황에는 name: Test printing your secret 을 반드시 삭제해 주세요.

배포 테스트

정상적으로 Github Actions가 복호화를 하는것을 알 수 있습니다.

서버 인스턴스에도 정상적으로 해당 파일들이 들어간 것을 알 수 있습니다!


출처

profile
NO EFFORT, NO RESULTS

0개의 댓글