암호 해독 키와 같은 민감한 정보가 포함된 환경 변수를 읽는 crontab 스크립트가 있습니다. crontab 항목은 다음과 같이 정의됩니다.
30 3 * * 5 VAR="pw" /usr/bin/script.sh
이렇게 민감한 물건을 보관해도 안전할까요? 그렇지 않다면 어떻게 개선할 수 있습니까?
도움을 주셔서 감사합니다.
답변1
다른 사용자가 접근할 수 없으므로 crontab 파일과 환경에 변수를 넣어두는 것이 안전합니다. 하지만, 예를 들어 디버깅 도움을 요청할 때 crontab 줄을 게시하거나, 스크립트 자동화 방법의 예시로 이를 복사하여 누군가에게 보내는 경우, 또는 어떤 프로세스가 진행되는 경우 실수로 공개될 위험이 있습니다. 환경을 기록하고 이 비밀번호에 액세스할 수 없는 사람이 로그에 액세스할 수 있습니다. 또는 백업하는 경우 이 비밀번호에 액세스할 수 없는 사람이 백업에 액세스할 수 있습니다. 비밀을 별도의 파일이나 디렉터리 트리에 보관하고 필요할 때 읽는 것이 좋습니다.
수정할 수 없는 경우 script.sh
:
VAR=$(cat ~/.secret/script/password)
script.sh
스크립트 전체에서 변수를 사용 가능하게 만드는 대신 필요할 때 변수를 읽도록 수정할 수 있는 경우 .
환경 변수는 다른 사용자에게 노출되지 않지만 다른 사용자가 전달할 수 있으므로 외부 명령에 인수로 전달 ps
하지 마십시오 . $VAR
쉘 내장 함수에 대한 인수로 사용하는 것이 안전합니다 $VAR
. 예를 들어 다음은 안전합니다.
gpg --passphrase-fd=3 3< <(printf %s "$PASSPHRASE")
이 구체적인 예는 다음과 같이 더 간단하게 표현될 수 있습니다.
gpg --passphrase-file=/path/to/passphrase