F.23. passwordcheck

passwordcheck 모듈은 CREATE ROLE 또는 ALTER ROLE 명령을 통해서 입력하는 사용자 비밀번호를 검사한다. 비밀번호가 너무 단순하면, 그 비밀번호로 변경 할 수 없게 한다.

이 모듈을 활성화 하려면 postgresql.conf 파일에서 shared_preload_libraries 설정 값으로 '$libdir/passwordcheck' 지정하고, 서버를 재실행 한다.

이 모듈은 CrackLib 라이브러리의 사용권 문제 때문에, 해당 라이브러리를 포함 하지 않고 배포된다. 만일 이 라이브러리를 이용해서 비밀번호 엄격성 검사를 하려면, Makefile 파일에서 주석처리 된 두 줄만 풀고 다시 빌드해서 사용하면 된다. CrackLib 없이 사용해도, 간단한 비밀번호 엄격성을 사용할 수 있으며, 필요에 따라 충분히 소스 코드를 바꾸어 좀 더 엄격하게 검사할 수도 있다.

경고

네트워크 상에 흐르는 평문 비밀번호가 이동하거나, 서버 로그에 남거나, 악의적인 데이터베이스 관리자가 훔쳐 악용하거나 하는 이런 문제를 방지하기 위해 PostgreSQL에서는 미리 암호화 된 비밀번호를 사용한 접속을 허용할 수 있도록 한다. 또한 이런 기능 지원으로 많은 클라이언트들이 스스로 비밀번호를 암호화 해서 비밀번호를 전송한다.

이 경우, 비밀번호 추측 공격을 시도할 수 있고, 이것을 막는 방법을 passwordcheck 모듈이 제공하고 있지는 않는다. 이런 이유로, 보안 부분에 민감한 시스템에 이 모듈을 사용하는 것을 권하지 않는다. 비밀번호를 데이터베이스 안에 두는 것 보다 GSSAPI ( 20장 참조) 같은 외부 인증 방식을 사용하는 것이 보다 안전하다.

다른 방법으로, 미리 암호화된 비밀번호를 거부하도록 passwordcheck 모듈을 수정해서, 클라이언트가 보내는 비밀번호는 평문으로 강제화 할 수는 있겠지만, 보안에 취약한 부분은 여전히 남아 있게 된다.