20장. 클라이언트 인증

차례

20.1. The pg_hba.conf 파일
20.2. 사용자 이름 맵
20.3. 인증 방법
20.4. 트러스트 인증
20.5. 패스워드 인증
20.6. GSSAPI 인증
20.7. SSPI 인증
20.8. Ident 인증
20.9. 피어(peer) 인증
20.10. LDAP 인증
20.11. RADIUS 인증
20.12. 인증서 인증
20.13. PAM 인증
20.14. BSD 인증
20.15. 인증 문제

클라이언트 애플리케이션이 데이터베이스 서버에 연결하는 경우 어떤 PostgreSQL 데이터베이스 사용자 이름으로 연결할 것인지 지정하는데, 이것은 특정 사용자로 Unix 컴퓨터에 로그인하는 것과 매우 유사하다. SQL 환경 내에서 사용 중인 데이터베이스 사용자 이름은 데이터베이스 개체에 대한 액세스 권한을 결정한다. 자세한 내용은 21장을 참고 바란다. 따라서 연결 가능한 데이터베이스 사용자를 제한하는 것이 중요하다.

참고

21장에서 설명한 대로 PostgreSQL은 실제로 role 면에서 권한을 관리한다. 이 장에서는 데이터베이스 사용자LOGIN 권한이 있는 role이라는 의미로 일관되게 사용된다.

인증은 데이터베이스 서버가 클라이언트 ID를 구축하는 프로세스이며, 더 나아가 요청된 데이터베이스 사용자 이름으로 클라이언트 애플리케이션(또는 클라이언트 애플리케이션을 실행하는 사용자)의 연결을 허용할 것인지 결정하는 프로세스이다.

PostgreSQL는 서로 다른 여러 가지 클라이언트 인증 방법을 제공한다. 특정 클라이언트 연결을 인증하는 데 사용되는 방법은 (클라이언트) 호스트 주소, 데이터베이스 및 사용자를 기준으로 선택할 수 있다.

PostgreSQL 데이터베이스 사용자 이름은 서버가 실행되는 운영 체제의 사용자 이름과 논리적으로 별개이다. 특정 서버의 모든 사용자도 서버 머신에 계정을 가질 수 있지만 운영 체제 사용자 이름과 일치하는 데이터베이스 사용자 이름을 할당하는 것이 합당하다. 그러나, 원격 연결을 수용하는 서버에는 로컬 운영 체제 계정이 없는 데이터베이스 사용자가 다수일 수 있으며, 이런 경우 데이터베이스 사용자 이름과 OS 사용자 이름을 연결 짓는 것은 불필요하다.