프로젝트에서 DB접속주소, ID/PW 등의 정보들을 포함하여 사용할 경우가 있습니다.
Git으로 프로젝트를 올리면 외부에서 DB접속이 가능하고 ID/PW의 계정정보까지 확인이 가능한 단점이 있어 config.json파일이나 env환경변수를 사용하여 보안을 강화하는법이 있습니다.
환경변수 직접 가져와서 사용하기
host := os.Getenv("DB_URL")
port := os.Getenv("DB_PORT")
user := os.Getenv("DB_ID")
password := os.Getenv("DB_PW")
#DB연결
connString := fmt.Sprintf("host=%s port=%d user=%s password=%s sslmode=disable", host, port, user, password)
DB, err := sql.Open("postgres", connString)
if err != nil {
panic(err)
}
Viper패키지를 사용하여 환경변수 사용
- .env에서 읽어오기
viper.SetConfigFile(".env")
err := viper.ReadInConfig()
host := viper.Get("HOST")
port := viper.Get("PORT")
- config.json 파일에서 읽어오기
viper.AddConfigPath("./config")
viper.SetConfigName("config")
viper.SetConfigType("json")
viper.ReadInConfig()
port := viper.Get("db.port")
- config경로 내부 config.json 파일을 읽어옵니다.
반응형
'Go' 카테고리의 다른 글
Go - ioutil 패키지 deprecated (0) | 2023.04.25 |
---|---|
rwMutex 사용 (0) | 2023.04.18 |
Go - 한가지 변수에 다른 type 사용하기 (0) | 2023.04.12 |
gorm 조건에 따른 Where() 사용하기 (0) | 2023.03.24 |
golang time.AddDate() (0) | 2023.03.21 |