다음 하위 섹션은 인증 방법을 설명합니다 더 자세히.
언제신뢰와이즈 토토은입니다 지정,PostgreSQL가정합니다 서버에 연결할 수있는 사람은 누구나 권한이 있습니다. 데이터베이스 사용자 이름으로 데이터베이스에 액세스하십시오 지정 (수퍼 유행어 포함). 물론 제한이 제한됩니다 그만큼데이터베이스and사용자열은 여전히 적용됩니다. 이 방법이 있어야합니다 적절한 운영 시스템 수준이있을 때만 사용됩니다 서버 연결 보호.
신뢰인증이 적절합니다 단일 사용자의 로컬 연결에 매우 편리합니다 워크 스테이션. 일반적으로not그 자체로 적절한 a 다중 우스 기계. 그러나 사용할 수 있습니다신뢰다중 우수 기계에서도 서버의 Unix-Domain 소켓 파일을 사용하여 액세스를 제한하십시오 파일 시스템 권한. 이렇게하려면를 설정하십시오.unix_socket_permissions(그리고 아마도unix_socket_group) 구성 매개 변수 AS 설명PostgreSQL :. 또는를 설정할 수 있습니다unix_socket_directory구성 매개 변수로 소켓 파일을 적절하게 제한된 디렉토리에 배치합니다.
파일 시스템 권한 설정 설정 UNIX-Socket에만 도움이됩니다 사이. 로컬 TCP/IP 연결은 이에 의해 제한되지 않습니다. 따라서 로컬에 파일 시스템 권한을 사용하려는 경우 보안, 제거호스트 ... 127.0.0.1 ...라인에서PG_HBA.conf, 또는 비로 변경하십시오.신뢰와이즈 토토 방법.
신뢰인증은 전용입니다 모든 사용자를 신뢰하는 경우 TCP/IP 연결에 적합합니다. 에 의해 서버에 연결할 수있는 모든 컴퓨터PG_HBA.conf지정하는 선신뢰. 사용하는 것은 합리적이지 않습니다신뢰다른 TCP/IP 연결의 경우 의 것보다LocalHost(127.0.0.1).
암호 기반 와이즈 토토 방법은입니다.MD5, crypt및비밀번호. 이 방법은 작동합니다 마찬가지로 비밀번호가 전송되는 방식을 제외하고 연결 : 각각, MD5-Hashed, Crypt-encrypted 및 클리어 텍스트. 한계는crypt메소드는 암호와 함께 작동하지 않습니다 암호화pg_authid.
당신이 암호에 대해 전혀 걱정하는 경우"스니핑"공격MD5선호됩니다.crypt지원 해야하는 경우에만 사용됩니다 7.2 이전 고객. 솔직한비밀번호특히 열린 인터넷을 통한 연결에 대해서는 피하십시오 (사용하지 않는 한SSL, SSH또는 다른 연결 주변의 통신 보안 포장지).
PostgreSQL데이터베이스 암호는 운영 체제 사용자 비밀번호와 별개입니다. 각 데이터베이스 사용자의 비밀번호는에 저장됩니다.pg_authid시스템 카탈로그. 암호는 될 수 있습니다 SQL 명령으로 관리사용자 만들기and사용자, 예 :비밀번호 '비밀';로 사용자 foo 생성. 에 의해 기본값, 즉 비밀번호가 설정되지 않은 경우 저장된 비밀번호는 null이고 암호 인증은 항상 실패합니다 그 사용자를 위해.
Kerberosis 산업 표준 보안 와이즈 토토 시스템에 적합합니다 공개 네트워크를 통한 분산 컴퓨팅. 설명 그만큼Kerberos시스템이 멀리 있습니다 이 문서의 범위를 넘어서; 전반적으로는 가능합니다 상당히 복잡한 (아직 강력합니다). 그만큼KerberosFAQ또는MIT Kerberos 페이지탐사를위한 좋은 출발점이 될 수 있습니다. 여러 개의 소스Kerberos분포가 존재합니다.
PostgreSQL지원 Kerberos 버전 5. Kerberos 지원이 활성화되어야합니다.PostgreSQL건축되었습니다. 보다PostgreSQL : 문서 : 8.1 : 토토 사이트 순위 지침더 많은 것 정보.
PostgreSQL일반적인 kerberos 서비스. 서비스 교장의 이름은입니다.ServiceName/hostname@Realm.
ServiceName를 설정할 수 있습니다 를 사용하는 서버 측KRB_SRVNAME구성 매개 변수 및 클라이언트 측에서krbsrvname연결 매개 변수. (보다 또한섹션 28.1.) 설치 기본값을 기본값에서 변경할 수 있습니다Postgres빌드 시간을 사용하여./configure-- with-krb-srvnam = 뭐든지. 대부분 환경 에서이 매개 변수는 변경 될 필요가 없습니다. 그러나 다중 지원PostgreSQL같은 호스트의 설치 필요합니다. 일부 Kerberos 구현도 필요할 수 있습니다 Microsoft Active Directory와 같은 다른 서비스 이름 서비스 이름이 대문자 (에 있어야합니다.Postgres).
hostname는 완전히입니다 서버 시스템의 자격을 갖춘 호스트 이름. 서비스 교장의 영역은 서버의 선호되는 영역입니다 기계.
고객 교장은PostgreSQL데이터베이스 사용자 이름으로 첫 번째 구성 요소, 예를 들어pgusername/otherstuff@realm. 현재 클라이언트의 영역은에 의해 확인되지 않습니다PostgreSQL; 그래서 당신이 크로스 리알름이 있다면 인증이 활성화 된 다음 모든 영역의 모든 원칙 귀하와 의사 소통 할 수 있습니다.
서버 keytab 파일이 읽을 수 있는지 확인하십시오 ( 가급적으로 만 읽기)PostgreSQL서버 계정. (참조섹션 16.1.) 키 파일의 위치는에 의해 지정됩니다.KRB_SERVER_KEYFILE구성 매개 변수. 기본값은/usr/local/pgsql/etc/krb5.keytab(또는 어느 쪽이든 디렉토리는로 지정되었습니다.Sysconfdir빌드 시간에).
KeyTab 파일은 Kerberos 소프트웨어에 의해 생성됩니다. 보다 자세한 내용은 Kerberos 문서입니다. 다음 예 MIT 호환 Kerberos 5 구현을위한 것입니다 :
Kadmin%Ank -randkey postgres/server.my.domain.org Kadmin%ktadd -k krb5.keytab postgres/server.my.domain.org
데이터베이스에 연결할 때 티켓이 있는지 확인하십시오. 요청 된 데이터베이스 사용자 이름과 일치하는 원금의 경우. 을 위한 예, 데이터베이스 사용자 이름의 경우Fred, 둘 다 교장fred@example.comandfred/users.example.com@example.com데이터베이스 서버에 인증하는 데 사용될 수 있습니다.
사용하는 경우mod_auth_kerbandmod_perlon아파치웹 서버, 사용할 수 있습니다AuthType Kerberosv5savecredentialswithmod_perl스크립트. 이것은 제공합니다 추가 비밀번호가없는 웹을 통해 데이터베이스 액세스를 보안하십시오 필수의.
ID 인증 방법은 클라이언트의 운영 체제 사용자 이름, 다음을 결정합니다 나열된 맵 파일을 사용하여 허용 데이터베이스 사용자 이름 허용 된 해당 이름 쌍. 결정 클라이언트의 사용자 이름은 보안 크리티컬 포인트이며 연결 유형에 따라 다르게 작동합니다.
the"식별 프로토콜"RFC 1413. 사실상 모든 UNIX와 유사한 운영 체제는 ID 서버와 함께 배송됩니다 이는 기본적으로 TCP 포트 113을 듣습니다. 기본 ID 서버의 기능은와 같은 질문에 답하는 것입니다."어떤 사용자가 연결을 시작했는지 당신의 항구에서 나가x및 내 포트에 연결y? ". 부터PostgreSQL둘 다 알고 있습니다xandy물리적 연결이 설정되면 심문 할 수 있습니다 연결 클라이언트 호스트의 ID 서버 및 이론적으로 운영 체제 사용자를 결정할 수 있습니다 이 방법으로 주어진 연결.
이 절차의 단점은 그것이 클라이언트의 무결성 : 클라이언트 시스템이 신뢰할 수없는 경우 또는 공격자가 거의 모든 프로그램을 실행할 수 있습니다. 포트 113에서 그가 선택한 사용자 이름을 반환합니다. 이것 따라서 인증 방법은 적절합니다 각 클라이언트 기계가 빡빡한 닫힌 네트워크 제어 및 데이터베이스 및 시스템 관리자 밀접하게 연락하여 작동합니다. 다시 말해, 당신은 신뢰해야합니다 ID 서버를 실행하는 기계. 경고에 귀를 기울인다 :
식별 프로토콜은 의도되지 않습니다 승인 또는 액세스 제어 프로토콜. |
||
--RFC 1413 |
일부 ID 서버에는 비표준 옵션이 있습니다 반환 된 사용자 이름은 암호화 할 키를 사용하여 원래 기계의 관리자는 알고 있습니다. 이 옵션필수사용하십시오 와 함께 ID 서버를 사용할 때postgresql이후PostgreSQL반환 된 문자열을 해독하여 실제 사용자를 결정하십시오 이름.
시스템 지원SO_PEERCRED유닉스 도메인 소켓 요청 (현재Linux, freebsd, netbsd, OpenBSD및BSD/OS), ID 와이즈 토토도 가능합니다 로컬 연결에 적용됩니다. 이 경우 보안 위험이 없습니다 ID 와이즈 토토을 사용하여 추가됩니다. 실제로 그것은입니다 그러한 시스템에서 로컬 연결에 선호되는 선택.
시스템에서SO_PEERCRED요청, ID 와이즈 토토은 TCP/IP에 대해서만 사용할 수 있습니다 사이. 해결 방법으로를 지정할 수 있습니다.LocalHost주소127.0.0.1이 주소에 대한 연결. 이 방법은 신뢰할 수 있습니다 로컬 ID 서버를 신뢰하는 정도.
ID 기반 인증을 사용할 때 운영 체제 사용자의 이름을 결정했습니다 연결을 시작했습니다.PostgreSQL해당 사용자가 있는지 확인합니다 그가 요청하는 데이터베이스 사용자로 연결할 수 있습니다. AS를 연결하십시오. 이것은 IND 맵 인수에 의해 제어됩니다 다음ID키워드pg_hba.conf파일. A가 있습니다 사전 정의 된 IND 맵Sameuser모든 운영 체제 사용자가 데이터베이스로 연결할 수 있습니다. 같은 이름의 사용자 (후자가 존재하는 경우). 다른지도가 있어야합니다 수동으로 생성됩니다.
|Sameuser기본적으로 이름이 지정된 ID 맵 파일에 정의되어 있습니다.pg_ident.conf그리고 클러스터의 데이터에 저장됩니다 예배 규칙서. (다른 곳에지도 파일을 배치 할 수 있습니다. 하지만; 참조Ident_File구성 매개 변수.) ID 맵 파일에는 줄이 포함되어 있습니다 일반적인 형태 :
Map-name Idr-Username Database-Username
주석과 공백은와 같은 방식으로 처리됩니다.pg_hba.conf. 그만큼Map-name는 임의의 이름입니다 이 매핑을 참조하는 데 사용됩니다PG_HBA.conf. 다른 두 필드는 지정합니다 어떤 운영 체제 사용자가 데이터베이스 사용자. 같은Map-name반복적으로 사용할 수 있습니다 단일 맵 내에서 더 많은 사용자 매핑을 지정하십시오. 아니요 주어진 데이터베이스 사용자 수에 대한 제한 운영 체제 사용자는 그 반대에 해당하거나 그 반대도 마찬가지입니다.
thepg_ident.conf파일을 읽습니다 시작 및 기본 서버 프로세스시 (Postmaster) 수신 aSighup신호. 활성에서 파일을 편집하는 경우 시스템, 당신은에 신호를 보내야합니다Postmaster(사용PG_CTL Reload또는kill -hup)) 파일을 다시 읽으십시오.
apg_ident.conf할 수있는 파일 와 함께 사용하십시오.pg_hba.conf파일에서예제 20-1예 20-2. 이 예제 설정에서 누구나 192.168 UNIX 사용자 이름이없는 네트워크Bryanh, Ann또는Robert액세스 권한이 부여되지 않습니다. 유닉스 사용자Robert그가 할 때만 액세스 할 수 있습니다 연결하려고PostgreSQL사용자bobRobert또는 다른 사람.Ann연결 허용Ann. 사용자Bryanh연결할 수 있습니다 어느 쪽이든Bryanh자신 또는 ASGuest1.
이 와이즈 토토 방법은와 유사하게 작동합니다.비밀번호PAM을 사용하는 것을 제외하고 인증 모듈) 인증 메커니즘으로. 그만큼 기본 팸 서비스 이름은PostgreSQL. 선택적으로 직접 제공 할 수 있습니다 서비스 이름PAM키워드 파일PG_HBA.conf. PAM이 사용됩니다 사용자 이름/비밀번호 쌍을 검증하기 위해서만. 따라서 사용자 PAM을 사용하기 전에 이미 데이터베이스에 존재해야합니다. 입증. Pam에 대한 자세한 내용은를 읽으십시오.Linux-Pam페이지및 그만큼SolarisPAM 페이지.