환경 변수에 암호를 전달하는 것은 프로그램이 파일에서 암호를 읽는 것만 큼 안전합니다. 동일한 사용자로 실행중인 프로세스 만 프로세스 환경 을 읽을 수 있으며 이러한 프로세스는 어쨌든 동일한 파일을 읽을 수 있습니다.
이것은 명령 행에서 비밀번호를 전달하는 것과 다릅니다. 명령 줄 인수는 동일한 사용자로 실행되는 프로세스뿐만 아니라 동일한 시스템에서 실행중인 모든 프로세스 (강화 조치 제외)에서 읽을 수 있습니다.
환경을 통해 변수를 전달하는 경우 프로그램이 다른 프로그램을 시작하는지주의하십시오. 다른 프로그램은 부모의 환경을 상속받습니다. 다른 프로그램이 우연히 자신의 환경 내용을 유출 할 우려가있는 경우에는이 작업을 수행하지 마십시오.
시나리오의 결함은 "서버 시스템 설정시 적절한 환경 변수 작성"입니다. 환경 변수는 프로세스의 동적 속성입니다. 시스템을 설정할 때 시스템을 만들 수는 없습니다. 설정을 통해 재부팅해도 살아남을 수있는 것은 아닙니다. 의미하는 것은 아마도 특정 사용자가 로그인 할 때 관리자가이 변수가 환경에 존재하도록 구성한 것입니다. 이는 구성 파일 (일반적으로 ~/.pam_environment
또는 ~/.profile
에서 읽은 파일)을 통해 수행됩니다 ~/.profile
. 따라서이 솔루션은 실제로 구성 파일에서 비밀번호를 이동하지 않습니다.
암호가 사용자의 로그인 시간 환경에 있도록 설정하는 것은 좋은 생각이 아닙니다. 즉, 해당 사용자로 실행중인 모든 프로세스에는 비밀이 있으므로 어디에서나 누수에 취약합니다.
암호는 버전 관리를받는 구성 파일과 일반적인 배포 메커니즘을 제외한 파일에 보관해야합니다. 편리한 경우 환경에 암호를 입력해도 괜찮지 만 가능한 한 작은 프로그램 집합에 대해 수행해야합니다.