입사하고 Node.js를 사용하여 웹 개발을 진행하게 되었다. AWS Credentials 파일(환경변수)을 효과적으로 관리하는 방법에 대해 고민하던 중에 Node.js는 환경변수를 관리하기 위해 dotenv라는 라이브러리를 제공하는 것을 확인했다.
.env 란?
- DB관련 정보, API_KEY 값 등 오픈소스(ex. git)에 올리면 안되는 값들을 외부 파일(.env)로 저장하여 관리하는 것
- 보안과 유지보수에 용이
dotenv 패키지 설치
- node.js에서 .env 환경설정 파일을 로드하기 위한 dotenv모듈을 설치한다.
npm install dotenv
env 파일을 생성 후 환경변수 정의
- 프로젝트 최상위 루트경로에 .env 파일을 생성하고, 해당 파일에 필요한 환경변수 값들을 넣고 저장한다.
- ex) AWS의 계정정보 (ACCESS_KEY, SECRET_ACCESS_KEY)를 관리하는 .env파일
AWS_ACCESS_KEY=abc123
AWS_SECRET_ACCESS_KEY=def456
env 파일 불러오기
사용하려고 하는 router 모델에서 .env에 입력한 환경 설정을 불러온다.
ex) routes / index.js (AWS 계정정보 연결)
// env 파일을 사용하기 위한 config
require('dotenv').config()
const awsCredential = {
accessKeyId: process.env.AWS_ACCESS_KEY,
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
};
const awsConfig = {
region: process.env.AWS_REGION,
credentials: awsCredential,
};
주의할 점
github private으로 올린 회사 서비스를 github public으로 전환하면서 문제가 발생했었다. private일 때는 내부 개발자들이 공통된 AWS 계정을 사용해서 env 파일을 공유해도 상관 없었는데, public으로 전환하니까 보안이슈가 왕창 뜨면서 메일이 엄청 날라왔었다.
env 파일에는 보통 데이터베이스의 비밀번호나, AWS 계정 정보, API 키와 같은 민감정보가 들어가기 때문에 github에 올리는 순간 해킹 등의 위험이 있을 수 있는 것이었다.
github public에 코드를 올릴 때, 반드시 .gitignore 파일에 .env를 추가해서 실수로라도 코드 저장소에 올릴 수 없도록 설정을 해놓자!
'BackEnd > NodeJS' 카테고리의 다른 글
Don't Block the Event Loop (or the Worker Pool) (0) | 2024.04.02 |
---|---|
TypeError: Router.use() requires a middleware function but got a Object (0) | 2023.09.17 |
NVM으로 Windows에서 여러 노드(Node) 버전을 손쉽게 관리하기 (0) | 2023.08.04 |
아주 간단한 Node.js express 만들기 (0) | 2023.04.20 |