다음은 인증 방법을 설명합니다 세부 사항.
Postgres데이터베이스 비밀번호 운영 체제 사용자 암호와 별개입니다. 일반적으로 각 데이터베이스 사용자의 비밀번호는 PG_SHADOW 시스템 카탈로그 테이블. 비밀번호를 관리 할 수 있습니다 쿼리 언어 명령생성 사용자and사용자, 예 :비밀번호로 사용자 foo를 만듭니다 '비밀';. 기본적으로, 즉 비밀번호가없는 경우 설정, 저장된 비밀번호는입니다.null및 비밀번호 인증은 해당 사용자에게 항상 실패합니다.
연결할 수있는 사용자 세트를 제한하려면 특정 데이터베이스, 별도의 파일에 사용자 집합을 나열합니다. (라인 당 하나의 사용자 이름) 동일한 디렉토리에서PG_HBA.conf에 들어가서 (기본) 이름을 언급합니다 이후 파일의비밀번호또는crypt각각PG_HBA.conf. 당신이 이것을 사용하지 않는다면 기능, 데이터베이스 시스템에 알려진 모든 사용자는 모든 데이터베이스에 연결하십시오 (비밀번호를 전달하는 한 물론 인증).
이 파일은 다른 세트를 적용하는 데 사용될 수 있습니다. 특정 데이터베이스에 대한 비밀번호 또는 그 설정. 그것에 케이스, 파일은 표준 UNIX와 유사한 형식을 가지고 있습니다. 암호 파일/etc/passwd이다,
사용자 이름:비밀번호암호를 따르는 추가 결장 분리 필드입니다 무시했습니다. 비밀번호는 다음을 사용하여 암호화 될 것으로 예상됩니다 시스템crypt ()함수. 유틸리티 프로그램pg_passwd로 설치Postgres할 수 있습니다 이러한 비밀번호 파일을 관리하는 데 사용됩니다.
비밀번호가 있거나없는 줄은 2 차에 혼합 될 수 있습니다. 비밀번호 파일. 비밀번호가없는 줄은 메인 사용을 나타냅니다 암호PG_SHADOW관리됩니다 에 의해사용자 만들기and사용자. 비밀번호가있는 라인은 그 결과를 초래할 수 있습니다 사용할 비밀번호. 의 비밀번호 항목"+"PG_SHADOW 비밀번호를 사용하는 것을 의미합니다.
를 사용할 때 대체 암호를 사용할 수 없습니다.crypt메소드. 파일은 여전히있을 것입니다 평소와 같이 평가했지만 암호 필드는 단순히 무시하고PG_SHADOW비밀번호 사용됩니다.
이와 같은 대체 암호를 사용한다는 점에 유의하십시오 더 이상 사용할 수 없습니다사용자TO 비밀번호를 변경하십시오. 여전히 작동하는 것처럼 보일 것입니다 비밀번호는 실제로 변경되고 있습니다. 시스템이 사용됩니다.
Kerberosis 산업 표준 보안 범퍼카 토토 시스템에 적합합니다 공개 네트워크를 통한 분산 컴퓨팅. 설명 그만큼Kerberos시스템이 멀리 있습니다 이 문서의 범위를 넘어서; 모든 일반적인 상태에서 그것은 가능합니다 상당히 복잡한 (아직 강력합니다). 그만큼KerberosFAQ또는MIT 프로젝트 아테나탐사를위한 좋은 출발점이 될 수 있습니다. 몇 가지 출처Kerberos분포가 존재합니다.
사용하려면Kerberos, 제작 시간에 지원해야합니다. 두 kerberos 4 그리고 5는 지원됩니다 (./configure -with-krb4또는./configure -with-krb5각각).
Postgres작동해야합니다 일반적인 kerberos 서비스처럼. 서비스의 이름 교장은 일반적으로Postgres빌드 중에 변경되었습니다. 서버 키를 확인하십시오 Postgres가 파일을 읽을 수 있으며 (가급적으로 만 읽을 수 있음) 서버 계정 (섹션 3.1). 위치 키 파일은로 지정됩니다.KRB_SERVER_KEYFILE실행 시간 구성 매개 변수. (참조PostgreSQL : 문서 : 7.1 : 런젠 토토 젠 토토.) 기본값은입니다./etc/srvtabKerberos 4 and을 사용하는 경우파일 : /usr/local/pgsql/etc/krb5.keytab(또는 어떤 디렉토리가Sysconfdir빌드 타임) Kerberos와 함께 5.
KeyTab 파일을 생성하려면 예를 들어 사용하십시오 (버전과 함께 사용하십시오. 5)
Kadmin%Ank -randkey postgres/server.my.domain.org Kadmin%ktadd -k krb5.keytab postgres/server.my.domain.org읽기Kerberos디페일에 대한 문서.
inKerberos5 후크, 사용자와 서비스에 대한 다음과 같은 가정이 이루어집니다 이름 지정 :
사용자 원금 이름 (ANAME)은 다음을 포함한다고 가정합니다 실제 UNIX/Postgres사용자 첫 번째 구성 요소의 이름.
thePostgres서비스입니다 서비스 이름과 버전 4에서와 같이 정식화 된 호스트 이름 (즉, 모두 도메인 접미사가 제거됨).
매개 변수 | example |
---|---|
사용자 | frew@s2k.org |
사용자 | aoki/host=miyu.s2k.berkeley.edu@s2k.org |
host | postgres_dbms/ucbvax@s2k.org |
Apache 웹에서 mod_auth_krb 및 mod_perl을 사용하는 경우 서버, authtype kerberosv5savecredentials와 함께 사용할 수 있습니다 mod_perl 스크립트. 이것은 안전한 데이터베이스 액세스를 제공합니다 웹, 추가 암호가 필요하지 않습니다.
the"식별 프로토콜"IS 설명RFC 1413. 사실상 모든 UNIX와 같은 운영 체제는 ID 서버와 함께 제공됩니다 기본적으로 TCP 포트 113에서 청취합니다. 기본 기능 ID 서버는와 같은 질문에 답하는 것입니다."어떤 사용자가 연결을 시작했는지 당신의 포트x내와 연결됩니다 포트y? ". 부터Postgres둘 다 알고 있습니다xandy물리적 연결이 설정되면 심문 할 수 있습니다 연결 클라이언트 호스트의 ID 서버 및 이론적으로 주어진 운영 체제 사용자를 결정합니다 이런 식으로 연결.
이 절차의 단점은 그것이 클라이언트의 무결성 : 클라이언트 머신이 신뢰할 수 없거나 타협 된 공격자는 거의 모든 프로그램을 실행할 수 있습니다. 포트 113 및 그가 선택한 사용자 이름을 반환하십시오. 이것 따라서 인증 방법은 폐쇄에만 적합합니다 각 클라이언트 기계가 엄격한 제어를 받고있는 네트워크와 데이터베이스 및 시스템 관리자가 가까이에서 작동하는 경우 연락하다. 경고에 귀를 기울인다 :
식별 프로토콜은 의도되지 않습니다 승인 또는 액세스 제어 프로토콜. |
||
--RFC 1413 |
idex 기반 인증을 사용할 때 시작한 운영 체제 사용자를 결정했습니다 연결,Postgres연결할 수있는 데이터베이스 시스템 사용자로 결정합니다. 이것은 다음을 따르는 IND 맵 인수에 의해 제어됨ID키워드PG_HBA.conf파일. 가장 간단한 IND 맵은입니다.Sameuser같은 이름의 데이터베이스 사용자로 연결하는 시스템 사용자 (후자가 존재하는 경우). 다른지도를 만들어야합니다 수동으로.
ID 맵은 파일에 보관됩니다pg_ident.conf데이터 디렉토리에서 일반적인 형태의 줄 포함 :
Map-name Idr-Username database-username의견과 공백은 일반적인 방식으로 처리됩니다. 그만큼Map-name는 임의의 이름입니다 이 매핑을 참조하는 데 사용됩니다pg_hba.conf. 다른 두 필드는 어느 것을 지정합니다 운영 체제 사용자는 어떤 데이터베이스 사용자로 연결할 수 있습니다. 같은Map-name를 사용할 수 있습니다 더 많은 사용자 매핑을 지정하기 위해 반복적으로. 아니오도 있습니다 주어진 작업 사용자 수에 관한 제한 시스템은 그 반대에 해당 할 수 있습니다.
apg_ident.conf가능성이 있습니다 와 함께 사용pg_hba.conf파일에서예제 4-1예 4-2. ~ 안에 이 예제 설정, 누구나 시스템에 로그인 한 사람 192.168 Unix 사용자 이름 Bryanh가없는 네트워크, Ann 또는 Robert는 액세스 권한을 부여받지 못할 것입니다. 유닉스 사용자 Robert 그가 연결하려고 할 때만 액세스 할 수 있습니다. Postgres 사용자"밥""Robert"또는 다른 사람."Ann"만 허용됩니다 AS 연결"Ann". 사용자 Bryanh 하나로 연결할 수 있습니다"Bryanh"자신 또는 AS"Guest1".