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

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

조회 11회 댓글 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 로  공유
  • 트위터로  공유
  • 네이버 블로그로 공유
  • 네이버 카페 공유하기
  • 네이버 라인 공유하기
  • 네이버 밴드 공유하기
  • 링크드인으로 공유하기
  • 핀터레스트에 공유하기
전체 236건 1 페이지
  • profile_image CLI 프로그램 여러개를 테스트 하면서 공통으로 쓰이는 파일은 하나면 좋겠다는 생각이 들었습니다.이것 저것 수정하는데 몇 번은 괜찮은데 빠르제 지쳐가는 내 모습이 느껴 지면서 방법을 찾아 보았는데 대략 다음과 같습니다.- 최근 버전의 윈도우도 심볼릭 링크를 지원하기에 심볼릭 링크를 사용합니다.- 원격지와 공유가 가능하면 공유 디렉토리 지정해서 파일을 동시 사용- 에이전트에서 PHP의 include 처럼 포함시키는 명령이 있으면 그것 사용 ▷ 윈도우CMD에서의 구문 순서는 mklink [링크 경로] [원본 경로]mklink "C:\Path\To\GEMENI.md" "C:\Path\To\AGENTS.md"* 파워셀…
  • profile_image 오늘 정말 간단한 프로그램인데.json 결과를 입력만 시키면 되는 그런 프로그램 입니다.그런데 DB 테이블 만들어 달라고 했더니 정규화 시키고 쪼개서 해서 여러개 만들고프로그램은 복잡 복잡 복잡하게 만들어서 제가 간단하게 지침서 만들어서 다시 작성 했습니다. 의자가 필요하면 간단하게 의자만 만들면 되지 복잡할 필요가 없습니다.▷ 바이브코딩이란2025년 초 안드레이 카파시가 만든 말로 코드를 직접 읽고 이해하는 대신 — 자연어로 원하는 걸 설명하고 → AI가 짜주면 → 돌려보고 → 에러 나면 그대로 붙여넣고 → 될 때까지 반복하는 방식인데 핵심 태도는 "코드가 존재한다는 사실 자체를 잊는다"는 것으로 프…
  • profile_image 자세한 내용은 아래 영상 보시면 잘 나와 있습니다.모두의창업, 유출 사고? 무슨 일인가. 문제있는 개발 패턴들 결론은 간단한데 백엔드에 불편해도 반드시 필요한것만 요청하고 보내주면 된다.아래에서 보통이란것은 대체로 그랬다는 것입니다.그리고 사람은 예전에 사용하던 방식하면 구닥다리 라고 생각하는 잘못된 편견을 가지고 있을까요 없을까요?▷ 예전 개발 방식은- 보통 백엔드에서 모든 것을 만들어 보내주는 방식▷ 요즘은 - 다 그런것은 아니지만- 리엑트 같은 프론트엔드 개발자가 별도 있어서 서버에서 중요데이터만 받아서 보여주는 방식- 여기서 문제가 생긴것인데 프론트엔드와 백엔드 개발자간 데이터 필요한것만 보내지 않고 다…
  • profile_image RealVNC는 원클릭 접속할 수 있도록 편리하게 되어 있는데 UltraVNC 는 뷰어 클릭해서 등록된 서버 선택해야 하는 불편함이 있습니다.이 부분을 아래와 같은 방법으로 일부 해소가 가능 합니다.1) C:\Users\로그인계정\AppData\Roaming\UltraVNC 파일을 복사 바탕화면에 두고 사용원하는 접속 서버 .vnc 파일을 바탕화면으로 복사 해서 원클릭 하여 사용하면 됩니다.중요한 부분이 있는데 .vnc 파일을 열어서 8bit=1 부분으로 되어 있으면 0으로 바꿔주세요.화면에 표현하지 못하는 경우도 있고 그렇기 때문에 .vnc 파일 클릭하는 경우만 파란색으로 나오고 이상하다면 …
  • profile_image 코드자동완성 테스트한 vscode용 확장 프로그램 continue 다운로드 사용자가 엄청나게 많은데 ... 결론 부터 말하면 실패입니다. 아래 설정이 약간 잘못 되었을수 있겠지만.채팅은 잘 되는데 코드 자동완성이 잘 안됩니다.하지만 테스트 하고 싶은분 그리고 제가 나중에 다시 테스트 해볼 경우 필요할 수 있어 올리는 글입니다. 위 이미지에서 Main Config 라고 마우스 올리면 그 옆에 톱니가 나오는데 그걸 클릭해야 합니다.잘못 만들어져서 화면이 겹치는 문제가 있습니다.제 설정은 위 이미지에 대한것은 아래와 같습니다.name: lmstudioversion: 1.0.0schema: v1models:&…
  • profile_image 내가 준 먹이를 소화해서 다른 사용자에게 주면 곤란한 문제가 생길것 같아 직접 이용해 보기로 했습니다.결론 부터 말하면 잘하는 인공두뇌에 먹이 주면서 사용하는것이 낳으니 테스트 해보고 싶으신 분들을 위해서 남기는 글 입니다.사용한 확장 프로그램    twinny - AI Code Completion and Chat    Identifier: rjmacarthy.twinny 위처럼 설정하고 자신에 맞게 모델이나 IP주소 같은것만 변경해주면 됩니다.전 UI가 좋은 LM스튜디오 사용.이걸 빠르게 사용하려면 애플 실리콘 M5 Max 노트북 16인치 추천합니다.램은 최소 64G 가능하…

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