웹사이트 환경설정 파일과 비밀정보를 웹루트 밖에서 안전하게 관리하는 방법 > 개발관련
개발관련

웹사이트 환경설정 파일과 비밀정보를 웹루트 밖에서 안전하게 관리하는 방법

조회 67회 댓글 0건
  • 현재 페이지 주소 복사
  • 페이스북으로 공유
  • X 로  공유
  • 트위터로  공유
  • 네이버 블로그로 공유
  • 네이버 카페 공유하기
  • 네이버 라인 공유하기
  • 네이버 밴드 공유하기
  • 링크드인으로 공유하기
  • 핀터레스트에 공유하기

웹루트 밖에 중요한 파일을 두면 안전하지만 관리측면에선 불편한 측이 있습니다. 웹서버 설정도 그렇고 하지만 초기 한번 설정 잘 하면 평생 잘 사용하는 방법 이기도 합니다.

요즘 .env 파일 github에 올려서 이것만 찾는 봇이 있을 정도 라고 하지요.

반드시 이 방식을 사용할 필요는 없는데 ... 작게 할일을 크게 하기도 하고. 정작 커졌을때는 그에 맞게 되어 있지 않고.


오래된 방식인데 요즘 이렇게 안 하시는 분들 많은듯 싶습니다.

웹서버를 통해서는 웹루트 밖에는 접근 자체가 안되는 방식이지만 백엔드 프로그램에선 접근해서 사용이 가능합니다.

웹서버와 PHP 같은 백엔드 프로그램을 동일시 보시는분들이 있던데 전혀 다른 것입니다.


웹사이트의 inc_config.php .env 데이터베이스 비밀번호 API 키 암호화 키와 같은 중요 정보는 외부에서 직접 접근할 수 있는 웹루트(DocumentRoot) 안에 두지 않는 것이 안전합니다.


예를 들어 웹루트가 다음과 같다면

/home/site/public_html/


환경설정 파일은 다음처럼 웹루트 밖에 둘 수 있습니다.

/home/site/config/inc_config.php

/home/site/config/.env

/home/site/secrets/password.php

/home/site/secrets/encryption.key


PHP에서는 필요한 파일을 절대경로 또는 상위 경로를 이용해 불러옵니다.


require '/home/site/config/inc_config.php';


▷ GitHub에서는 어떻게 관리해야 하나요?

GitHub 저장소에는 프로그램 소스만 저장하고 실제 비밀번호나 암호화 키는 올리지 않는 것이 좋습니다.

.gitignore에 다음과 같이 등록할 수 있습니다.


.env

inc_config.php

secrets/

*.key



대신 필요한 환경변수 이름만 들어 있는 .env.example 같은 샘플 파일을 GitHub에 저장합니다.

DB_HOST=

DB_NAME=

DB_USER=

DB_PASSWORD=

ENCRYPTION_KEY=


▷ 서버에 배포할 때는 어떻게 하나요?

GitHub에서 웹사이트 소스를 배포한 뒤 서버에 이미 준비해 둔 환경설정 파일과 비밀정보를 사용하도록 구성합니다.

즉


GitHub

 └─ 프로그램 소스

       ↓ 배포

/home/site/public_html/


서버에서 별도 관리

/home/site/config/

/home/site/secrets/


와 같이 소스 배포와 비밀정보 배포를 분리하는 방식입니다.

운영 서버의 .env 비밀번호 파일 암호화 키는 GitHub에서 내려받는 것이 아니라 서버에서 별도로 생성하거나 배포 시스템의 Secret 기능을 통해 전달하는 것이 안전합니다.


▷ 비밀번호와 암호화 키도 분리해야 하나요?

가능하면 분리하는 것이 좋습니다.

데이터베이스 비밀번호 API 비밀번호 등의 인증정보와 데이터 암호화에 사용하는 암호화 키를 같은 파일에 모두 저장하면 하나의 파일이 노출되었을 때 피해 범위가 커집니다.

예를 들어 다음과 같이 관리할 수 있습니다.


/home/site/config/app.env

/home/site/secrets/password.php

/home/site/secrets/encryption.key

파일 권한도 웹서버 또는 필요한 사용자만 읽을 수 있도록 제한하는 것이 좋습니다.



 


▷ .env 파일을 웹루트 밖에 두는 이유는 무엇인가요?

.env와 환경설정 파일에는 데이터베이스 비밀번호 API 키 등 중요한 정보가 포함될 수 있습니다. 웹루트 밖에 저장하면 웹서버 설정 오류나 파일 노출 문제가 발생하더라도 브라우저를 통한 직접 접근 위험을 줄일 수 있습니다.


▷ GitHub와 운영 서버에서 비밀번호와 암호화 키를 가장 안전하게 관리하는 방법은 무엇인가요?

GitHub에는 실제 비밀정보를 저장하지 않고 소스 코드와 .env.example 같은 설정 예제만 관리합니다. 실제 비밀번호와 암호화 키는 운영 서버의 웹루트 밖이나 배포 시스템의 Secret Manager에 별도로 저장하고 애플리케이션이 실행될 때 필요한 값만 읽도록 구성하는 방식이 권장됩니다.



  • 현재 페이지 주소 복사
  • 페이스북으로 공유
  • X 로  공유
  • 트위터로  공유
  • 네이버 블로그로 공유
  • 네이버 카페 공유하기
  • 네이버 라인 공유하기
  • 네이버 밴드 공유하기
  • 링크드인으로 공유하기
  • 핀터레스트에 공유하기
전체 241건 1 페이지
  • profile_image 맥미니에서는 Homebrew로 Apache(httpd) + PHP를 설치하는 방식이 가장 간단 한데 현재 Homebrew 기준 httpd는 Apache 2.4이고 php는 기본 설치 시 PHP 8.5 계열이 설치된다.당장은 PHP만 필요 하기 때문에 아래와 같이 PHP 설치리눅스를 레드햇 사용하느냐 맨드레이크냐 이런것 처럼 맥OS도 유닉스 계열이기 때문에 비슷한 환경이라 생각하고 사용하면 된다.몇가지 다른 부분이 있지만 유닉스 파생된 OS가 모두 조금씩 다른것 처럼 하고 생각하면 그만임. brew를 사용해 설치할 계획이기 때문에 설치가 안되었으면 먼저 설치 한다.whereis /bin/bashwhereis cu…
  • profile_image 맥미니에서 아래와 같이 쉽게 설치 하고 사용 할 수 있습니다.brew install tigger04/tap/superscale# 아래와 같이 하면 x2 형태가 파일명(input_x2.png)에 붙어 파일이 저장된다.superscale -s 2 input.png아래는 업스케일링 결과 입니다.단순히 이미지 키운것과 업스케링 한것과의 확연한 차이를 볼 수 있습니다. 
  • profile_image 보통 프로그래머라 하면 키보드를 붙잡고 알 수 없는 영문자를 빠르게 두드리는 사람을 떠올린다. 하지만 실제 개발 일은 그보다 건설 현장에 가까운데 무엇을 지을지 설계도를 그리고 철근으로 골격을 세우고 시멘트를 바르고 벽돌을 하나씩 쌓는 작업이다. 키보드는 마지막 순간의 연장 도구일 뿐이다. ▷ 일반인이 잘못 이해하고 있는 것들착각 1: 개발은 타자를 빨리 치는 능력이다실제로는 코드를 치는 시간보다 화면을 보며 고민하는 시간이 훨씬 길다. "어떻게 만들 것인가"를 먼저 설계하고 나서야 손이 움직인다.착각 2: 코딩 실력이 좋으면 좋은 프로그램이 나온다건물의 완성도는 벽돌치기 솜씨보다 설계도가 결…
  • profile_image 작은 몸체에 열이 많아서 외부 온도와 팬 속도를 모니터링 해서 맥미니 오래 사용하려고 모니터링 하기 위해서 하나 구입한 온습도계 입니다.우선 가을이 되면 괜찮은데 여름이 문제네요. 9,10월 ~ 4월까지는 확실히 괜찮지만 그외 시간은 열 관리에 특별히 더 신경을 써야 합니다.IDC 같은곳에 두는 경우는 산뜻한 환경이라서 이런 모니터링 하면서 시간을 버릴 필요는 없습니다.샤오미 미지아 블루투스 온습도계 2 = LYWSD03MMC라면 맥미니에서 직접 읽을 수 있습니다. 공식 사양상 Bluetooth 4.2 BLE 제품중요한 점은 macOS의 Bluetooth 설정에서 일반 기기처럼 페어링할 필요가 없다는 것입니다.…
  • profile_image 유닉스는 크게 AT&T 계열과 BSD 계열이 있고 BSD쪽이 성능이 더 좋은것으로 그래서 freeBSD 예전에 많이들 사용하고 그랬지만 그래도 리눅스보단 훨씬 덜사용 그런데 왜? 리눅스가 더 커졌을까?> 승부를 가른 건 성능 자체보다 라이선스, 타이밍, 드라이버, 배포판, 기업 지원, 클라우드 생태계macOS는 생각보다 Linux보다 FreeBSD/BSD 쪽과 혈통상 더 가깝고 명령은 리눅스 쓰던 사람은 그대로 사용 가능한것이 상당히 많다. 둘 다 Unix/POSIX 문화권에 있기 때문.난 지금까지 리눅스는 AT&T 기반으로 BSD가 섞인거라고 알고 있었는데 아니라고 하네요…
  • profile_image CLI 프로그램 여러개를 테스트 하면서 공통으로 쓰이는 파일은 하나면 좋겠다는 생각이 들었습니다.이것 저것 수정하는데 몇 번은 괜찮은데 빠르제 지쳐가는 내 모습이 느껴 지면서 방법을 찾아 보았는데 대략 다음과 같습니다.- 최근 버전의 윈도우도 심볼릭 링크를 지원하기에 심볼릭 링크를 사용합니다.- 원격지와 공유가 가능하면 공유 디렉토리 지정해서 파일을 동시 사용- 에이전트에서 PHP의 include 처럼 포함시키는 명령이 있으면 그것 사용 ▷ 윈도우CMD에서의 구문 순서는 mklink [링크 경로] [원본 경로]mklink "C:\Path\To\GEMENI.md" "C:\Path\To\AGENTS.md"* 파워셀…

상업적 이용 금지. 컨텐츠는 개인 용도로만 사용이 가능 합니다.