Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

중요한 설정 값 숨기기 #44

Open
rkdgusrnrlrl opened this issue May 13, 2018 · 6 comments
Open

중요한 설정 값 숨기기 #44

rkdgusrnrlrl opened this issue May 13, 2018 · 6 comments

Comments

@rkdgusrnrlrl
Copy link
Member

이전에 잠깐 이야기 나왔었는데, DB 정보 및 사용자 ID 및 비밀번호는 설정 값으로 노출 하지 않을 수 있는 방법이 있었으면 좋겠다 라는 요청이 있어 같이 고민 해보면 좋을 것 같습니다.

@rkdgusrnrlrl
Copy link
Member Author

우선 저는 Vault 를 괜찮아 보입니다만 과한것 아닌가 싶기도 해서, 우선 제가 확인 한 부분을 공유 차 정리 해 둡니다.

Vault 특징

  • Vault 는 쉽게 보면 Key Value 형태의 데이터 베이스 + 비밀번호 생성 및 관리 기능 라고 보면 됩니다.
  • 필요한 부분만 보아서 인증, 권한, DataBase 정보(?) 정도 기능만 정리 해 둡니다.
  • 인증은 Github access token 을 통한 인증이 가능합니다.
  • 인증을 통해 권한을 줄수 있는데, 해당 유저의 Github 조직(?) 와 팀 으로 어디까지 읽고 쓸 수 있을 지 설정 할 수 있습니다.
    • 예시
      • 저희가 쓴다면 조직은 travlog 가 될 것 같습니다.
      • travlog 조직에 속해 있으면 mysql 의 username, password 를 읽을 수 있는 권한을 부여합니다.
  • Vault 장점으로 database 정보요청과 동시에 사용자 정보(username, password)를 생성합니다. 즉 Vault mysql 정보를 가져 올 때마다 새로 생성된 사용자와 비밀번호를 받아 올 수 있어 보안에 유리 합니다. (매번 생성하는지는 확실히 모르겠습니다.) 하지만 저희에게 유의미 한지를 모르겠습니다
  • database 말고 ssh 등도 제공해 줍니다.
  • 당연하게도 Vault 서버를 두어야 합니다.
  • 세팅을 좀 잡아줘야 합니다.
  • 클라이언트 쪽 라이브러리가 부실 합니다. (http 클라이언트를 사용해 해결 가능 합니다만...일이....)
  • 서버 실행시 환경 변수로 Github access token 을 걸어줘야 합니다

@devjin0617
Copy link
Collaborator

관련하여 괜찮은 깃헙저장소가 있더라구요

https://github.com/rkdgusrnrlrl/test-vault

@fobidlim
Copy link
Member

config/prod.js.gitignore에 추가해서, 실제 서버에서 직접 추가하는걸 생각했었는데, 고수님들이시네요.

@rkdgusrnrlrl
Copy link
Member Author

솔직히 과한감이 없지 않긴 합니다. 관련 가벼운 무료 서비스가 있지 않을까 싶긴 합니다. 혹시 아시면 공유 부탁드립니다. ㅎㅎ

@ChangJoo-Park
Copy link

요즘 CI를 익히면서 느끼는건데 CI 툴에 있는 변수를 적극적으로 활용하는 것도 좋은 것 같아요

travis-ci 를 이용해 hexo 블로그를 자동으로 배포 해봤어요

.travis.yml

...
before_script:
- git config --global user.name 'ChangJoo Park'
- git config --global user.email 'pcjpcj2@gmail.com'
- sed -i "s/__GITHUB_TOKEN__/${__GITHUB_TOKEN__}/" _config.yml
...

config.yml

deploy:
  type: git
  repo: https://__GITHUB_TOKEN__@github.com/ChangJoo-Park/changjoo-park.github.io
  branch: master
  message: "Deploy"

이런식으로 __GITHUB_TOKEN__ 을 config.yml에 넣어두고 배포할 때 배포환경에서 환경변수로 가져오는 방식이에요

travis-ci 웹에서는 이렇게 설정했습니다

image

@ChangJoo-Park
Copy link

https://www.npmjs.com/package/dotenv

괜찮게 쓰고 있어서 내려놓고 도망갑니다 ( __)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants