다음 하위 섹션에서는 인증 방법을 설명합니다 더 자세히.
언제신뢰무지개 토토은입니다 지정,postgresql가정합니다 서버에 연결할 수있는 사람은 누구나 권한이 있습니다. 데이터베이스 사용자 이름으로 데이터베이스에 액세스하십시오 지정 (수퍼 유행어 포함). 물론 제한이 제한됩니다 그만큼데이터베이스및사용자열은 여전히 적용됩니다. 이 방법이 있어야합니다 적절한 운영 시스템 수준이있을 때만 사용됩니다 서버 연결 보호.
신뢰인증이 적절합니다 단일 사용자의 로컬 연결에 매우 편리합니다 워크 스테이션. 일반적으로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이고 암호 인증은 항상 실패합니다 그 사용자를 위해.
gssapiis 정의 된 보안 무지개 토토을위한 산업 표준 프로토콜 RFC 2743.PostgreSQL지원GSSAPIwithKerberosRFC에 따른 무지개 토토 1964.gssapi제공 시스템에 대한 자동 인증 (단일 사인온) 지원하십시오. 인증 자체는 안전하지만 데이터입니다 연결을 통해 전송되는 것은 명확 해집니다SSL사용됩니다.
whenGSSAPI용도Kerberos, 표준을 사용합니다 형식의 교장ServiceName/hostname@Realm. 에 대한 정보 교장의 일부 및 필요한 키를 설정하는 방법, 보다섹션 21.2.5. GSSAPI 지원은를 활성화해야합니다.PostgreSQL건축되었습니다. 보다15 장자세한 내용은
SSPIisWindows안전한 기술 단일 사인온으로 무지개 토토.PostgreSQLsspi를 사용합니다협상사용하는 모드Kerberos가능하면 자동으로 로 돌아 가기ntlm다른 사례.SSPI무지개 토토 서버와 클라이언트 모두 실행중인 경우에만 작동합니다Windows.
사용시Kerberos무지개 토토,SSPI같은 방식GSSAPI보다섹션 21.2.3세부.
참고 :네이티브 Kerberos 인증이있었습니다 더 이상 사용되지 않으며 뒤로만 사용해야합니다 호환성. 새롭고 업그레이드 된 설치가 있습니다 산업 표준 사용 권장gssapi무지개 토토 (참조섹션 21.2.3) 대신에.
Kerberosis 산업 표준 보안 인증 시스템에 적합합니다 공개 네트워크를 통한 분산 컴퓨팅. 설명 그만큼Kerberos시스템이 멀리 있습니다 이 문서의 범위를 넘어서; 전반적으로는 가능합니다 상당히 복잡한 (아직 강력합니다). 그만큼KerberosFAQ또는Mit Kerberos 페이지탐사를위한 좋은 출발점이 될 수 있습니다. 여러 개의 소스Kerberos분포가 존재합니다.Kerberos보안 무지개 토토을 제공하지만 쿼리를 암호화하지는 않습니다 데이터가 네트워크를 통과했습니다. 그 사용을 위해SSL.
PostgreSQL지원 Kerberos 버전 5. Kerberos 지원이 활성화되어야합니다.PostgreSQL건축되었습니다. 보다15 장더 많은 정보.
PostgreSQLa 일반적인 kerberos 서비스. 서비스 교장의 이름은입니다.ServiceName/hostname@Realm.
ServiceName를 설정할 수 있습니다 를 사용하는 서버 측KRB_SRVNAME구성 매개 변수 및 클라이언트 측면에서krbsrvname연결 매개 변수. (보다 또한PostgreSQL : 문서 : 8.3 : 데이터베이스 토토 캔 제어 기능.) 설치 기본값을 기본값에서 변경할 수 있습니다Postgres빌드 시간을 사용하여./configure-with-krb-srvnam = 뭐든지. 대부분 환경 에서이 매개 변수는 변경 될 필요가 없습니다. 그러나 다중 지원PostgreSQL같은 호스트의 설치 필요합니다. 일부 Kerberos 구현도 할 수도 있습니다 Microsoft Active와 같은 다른 서비스 이름이 필요합니다 서비스 이름이 대문자에 있어야하는 디렉토리 (Postgres).
hostname는 완전히입니다 서버 시스템의 자격을 갖춘 호스트 이름. 서비스 교장의 영역은 서버의 선호되는 영역입니다 기계.
고객 교장은PostgreSQL데이터베이스 사용자 이름으로 첫 번째 구성 요소, 예를 들어pgusername@realm. 기본적으로의 영역 클라이언트는에 의해 확인되지 않습니다PostgreSQL. 당신이 크로스 리알름이있는 경우 무지개 토토을 활성화하고 영역을 확인하고 사용이 필요합니다.KRB_REALM매개 변수.
서버 keytab 파일이 읽을 수 있는지 확인하십시오 ( 가급적으로 만 읽기)PostgreSQL서버 계정. (참조배트맨 토토 : 문서 : 8.3 : 배트맨 토토 사용자 계정.)의 위치 키 파일은에 의해 지정됩니다.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_kerb및mod_perlon아파치웹 서버, 사용할 수 있습니다AuthType KerberoSV5Savecredentialswithmod_perl스크립트. 이것은 제공합니다 추가 비밀번호가없는 웹을 통해 데이터베이스 액세스를 보안하십시오 필수의.
ID 인증 방법은 클라이언트의 운영 체제 사용자 이름, 다음을 결정합니다 나열된 맵 파일을 사용하여 허용 데이터베이스 사용자 이름 허용 된 해당 이름 쌍. 결정 클라이언트의 사용자 이름은 보안 크리티컬 포인트이며 연결 유형에 따라 다르게 작동합니다.
the"식별 프로토콜"RFC 1413에 설명되어 있습니다. 사실상 모든 유닉스와 같은 작동 시스템은 TCP 포트에서 듣는 ID 서버와 함께 제공됩니다. 기본적으로 113. ID 서버의 기본 기능은 다음과 같습니다 와 같은 질문에 대답하려면"어떤 사용자 포트에서 나오는 연결을 시작했습니다x내 포트에 연결y? ". 부터PostgreSQL둘 다 알고 있습니다xandy물리적 연결이있을 때 설정, 호스트에서 ID 서버를 심문 할 수 있습니다. 연결 클라이언트의 이론적으로 결정할 수 있습니다 주어진 연결에 대한 운영 체제 사용자 방법.
이 절차의 단점은 그것이 클라이언트의 무결성 : 클라이언트 시스템이 신뢰할 수없는 경우 또는 공격자가 거의 모든 프로그램을 실행할 수 있습니다. 포트 113에서 그가 선택한 사용자 이름을 반환합니다. 이것 따라서 인증 방법은 적절합니다 각 클라이언트 기계가 빡빡한 닫힌 네트워크 제어 및 데이터베이스 및 시스템 관리자 밀접하게 연락하여 작동합니다. 다시 말해, 당신은 신뢰해야합니다 ID 서버를 실행하는 기계. 경고에 귀를 기울인다 :
식별 프로토콜은 의도되지 않습니다 승인 또는 액세스 제어 프로토콜. |
||
--RFC 1413 |
일부 ID 서버에는 비표준 옵션이 있습니다 반환 된 사용자 이름은 암호화 할 키를 사용하여 원래 기계의 관리자는 알고 있습니다. 이 옵션필수사용하십시오 와 함께 ID 서버를 사용할 때PostgreSQL이후PostgreSQL반환 된 문자열을 해독하여 실제 사용자를 결정하십시오 이름.
시스템 지원SO_PEERCREDUnix-Domain 소켓 요청 (현재 요청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모든 운영 체제 사용자가 데이터베이스로 연결할 수 있습니다. 같은 이름의 사용자 (후자가 존재하는 경우). 다른지도가 있어야합니다 수동으로 생성됩니다.
이외의 Ident MapsSameuser기본적으로 이름이 지정된 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파일을 읽습니다 시작시 및 기본 서버 프로세스가 A를받을 때Sighup신호. 활성에서 파일을 편집하는 경우 시스템, 서버에 신호를 보내야합니다 (사용PG_CTL Reload또는킬 -앉다) 파일을 다시 읽게하려면
apg_ident.conf할 수있는 파일 와 함께 사용하십시오.pg_hba.conf파일에서예 21-1예 21-2. 이 예제 설정에서 누구나 192.168 UNIX 사용자 이름이없는 네트워크Bryanh, Ann또는Robert액세스 권한이 부여되지 않습니다. 유닉스 사용자Robert그가 할 때만 액세스 할 수 있습니다 연결하려고postgresql사용자bobRobert또는 다른 사람.Ann연결 허용Ann. 사용자Bryanh연결할 수 있습니다 어느 쪽이든Bryanh자신 또는 ASGuest1.
이 무지개 토토 방법은와 유사하게 작동합니다.비밀번호LDAP를 사용하는 것을 제외하고 무지개 토토 방법. LDAP는 사용자를 검증하는 데만 사용됩니다 이름/비밀번호 쌍. 따라서 사용자는 이미 존재해야합니다 LDAP 이전의 데이터베이스는 인증에 사용될 수 있습니다. 그만큼 사용 된 서버 및 매개 변수는 다음에 지정됩니다.LDAP파일의 키워드PG_HBA.conf. 이 매개 변수의 형식 이다:
ldap [S] : //ServerName[:포트]/BASE DN[;접두사[;접미사]]
쉼표는 AN에서 여러 항목을 지정하는 데 사용됩니다.LDAP구성 요소. 그러나 인용되지 않은 쉼표 때문입니다 항목 분리기로 취급pg_hba.confLDAP쉼표를 보존하는 URL 현재, 예 :
"ldap : //ldap.example.net/dc=example ,dc=net; example \"
ifLDAPS대신 지정됩니다LDAP, TLS 암호화가 활성화됩니다 연결을 위해. 이것은 만 암호화합니다 PostgreSQL 서버와 LDAP 서버 간의 연결. 클라이언트와 PostgreSQL 서버 간의 연결은 다음과 같습니다. 이 설정의 영향을받지 않습니다. TLS 암호화를 사용하려면 전에 LDAP 라이브러리를 구성해야 할 수도 있습니다. PostgreSQL 구성. 암호화 된 LDAP를 사용할 수 있습니다 플랫폼의 LDAP 라이브러리가 지원하는 경우에만.
포트가 지정되지 않은 경우 구성된 기본 포트 LDAP 라이브러리가 사용됩니다.
서버가 지정된 저명한 이름으로 바인딩됩니다BASE DN사용자 이름 사용 고객이 제공합니다. 만약에접두사and접미사지정되어 있으면 선불됩니다 바인드 전에 사용자 이름에 추가되었습니다. 일반적으로 Prefix 매개 변수는를 지정하는 데 사용됩니다CN =또는도메인 \활성 디렉토리에서 환경.
이 무지개 토토 방법은와 유사하게 작동합니다.비밀번호PAM을 사용하는 것을 제외하고 인증 모듈) 인증 메커니즘으로. 그만큼 기본 팸 서비스 이름은PostgreSQL. 선택적으로 직접 제공 할 수 있습니다 서비스 이름PAM키워드 파일PG_HBA.conf. PAM이 사용됩니다 사용자 이름/비밀번호 쌍을 검증하기 위해서만. 따라서 사용자 PAM을 사용하기 전에 이미 데이터베이스에 존재해야합니다. 입증. Pam에 대한 자세한 내용은를 읽으십시오.Linux-Pam페이지및 그만큼SolarisPAM 페이지.
참고 :PAM이 읽기 위해 설정된 경우/etc/shadow, 인증이 실패합니다 PostgreSQL 서버는 뿌리가 아닌 것으로 시작되기 때문입니다 사용자. 그러나 이것은 LDAP 또는 기타의 문제가 아닙니다. 무지개 토토 방법.