Node.js 서버에서 액세스할 수 있는 Linux 시스템에 일부 환경 변수를 설정하고 싶습니다. 이러한 변수에는 데이터베이스 비밀번호 및 API 키와 같은 민감한 정보가 포함됩니다.
내 현재 설정은 권한이 거의 없는(sudo도 할 수 없음) 사용자가 Node.js 서버를 실행하는 것입니다. 이 사용자를 서버만 실행하도록 제한하고 싶기 때문에(오해의 소지가 있습니까?) 사용자의 ~/.bash_profile에 환경 변수를 넣고 싶지 않습니다.
그래서 내 생각은 서버에 필요한 환경 변수를 /etc/profile에 넣는 것이었습니다. 그렇게 하면 서버를 실행하는 낮은 권한의 사용자는 구성에 변수가 없지만 여전히 사용할 수 있습니다. 그러나 /etc/profile에 대한 권한은 모든 사람에게 읽기 액세스 권한을 부여합니다. 이는 논리적으로 이해가 되지만 시작한 곳으로 다시 돌아오게 합니다.
Linux 시스템의 웹 서버 환경 변수에 대한 모범 사례는 무엇입니까? 모든 사용자가 항상 읽을 수 있는 경우 프로젝트 루트에 있는 키와 값이 포함된 텍스트 파일을 웹 서버로 가져오는 것보다 환경 변수를 사용하는 것이 더 좋습니다.(dotenv와 유사)? 환경 변수는 보안 문제가 아니라 유지 관리를 위한 모범 사례일 뿐이므로 여기서 점을 연결할 수 없습니까?
답변1
민감한 데이터를 일반 텍스트로 저장하면 안 됩니다. 누구도 해독할 수 없도록 암호화해야 합니다.
JSON 파일에 모든 구성 추가 일부 비밀번호를 사용하여 JSON 파일을 암호화하고 저장 서버에서 애플리케이션을 실행하는 동안 파일을 복호화하고 변수를 사용
이 모듈을 참조하세요: https://github.com/nareshv/secure-conf
참고: 이러한 유형의 코드를 보호하려면 다음 명령을 사용하여 프로덕션 환경에서 읽을 수 없는 형식으로 javascript 형식을 지정할 수 있습니다.https://javascriptobfuscator.com/.
이 기술을 사용하여 코드를 저장하세요.
답변2
다른 그룹이 소유한 파일에 추가할 수 있습니다. 그런 다음 /etc/sudoers
해당 사용자가 서버를 다른 그룹으로 실행할 수 있도록 구성하십시오 .
이는 사용자에게 추가 sudo 권한(예: 루트)을 부여하지 않습니다. 그런 다음 쉘 래퍼를 사용하여 사용자를 도울 수 있습니다.
Sudo는 매우 구성 가능합니다.