무지개 토토 응용프로그램이 데이터베이스 서버에 연결되면, 어느 것을 지정합니다포스트그레SQL연결하려는 데이터베이스 사용자 이름, 거의 같은 방식으로 특정 사용자로 Unix 컴퓨터에 로그인합니다. SQL 내에서 환경 활성 데이터베이스 사용자 이름이 액세스를 결정합니다. 데이터베이스 객체에 대한 권한 - 참조18장12469_12568
참고:설명에 따라제18장, 포스트그레SQL실제로 권한이 있습니다 측면에서 관리"역할". ~ 안에 이 장에서는 지속적으로 사용합니다.데이터베이스 사용자의미"역할로그인권한".
인증에 의한 프로세스입니다. 데이터베이스 서버가 클라이언트의 신원을 설정합니다. 확장하여 클라이언트 애플리케이션(또는 클라이언트 애플리케이션을 실행하는 사용자)의 연결이 허용됩니다. 요청된 데이터베이스 사용자 이름으로.
PostgreSQL다양한 기능을 제공합니다 다양한 클라이언트 인증 방법. 사용된 방법은 특정 클라이언트 연결 인증을 선택할 수 있습니다. (클라이언트) 호스트 주소, 데이터베이스 및 사용자의 기초.
PostgreSQL데이터베이스 사용자 이름은 운영 중인 사용자 이름과 논리적으로 분리되어 있습니다. 서버가 실행되는 시스템입니다. 특정 사용자가 모두 서버도 서버의 컴퓨터에 계정을 가지고 있으므로 의미가 있습니다. 운영 체제와 일치하는 데이터베이스 사용자 이름을 할당합니다. 사용자 이름. 그러나 원격 연결을 허용하는 서버는 로컬 운영 체제가 없는 데이터베이스 사용자가 많습니다. 계정이며, 그러한 경우에는 서로 연결될 필요가 없습니다. 데이터베이스 사용자 이름 및 OS 사용자 이름.
클라이언트 인증은 구성 파일에 의해 제어됩니다. 전통적으로 이름이 지정됨pg_hba.conf데이터베이스에 저장됩니다 클러스터의 데이터 디렉터리. (HBA호스트 기반 인증을 나타냅니다.) 기본값pg_hba.conf파일은 데이터 디렉토리가 다음으로 초기화될 때 설치됩니다.initdb. 배치하는 것이 가능하다 그러나 인증 구성 파일은 다른 곳에 있습니다. 참조하세요hba_file구성 매개변수.
일반 형식pg_hba.conf파일은 레코드 집합입니다. 선. 빈 줄은 무시되며, 다음의 모든 텍스트도 무시됩니다.#댓글 문자. 기록이 만들어졌다 공백 및/또는 구분된 여러 필드로 구성 탭. 필드 값이 다음과 같은 경우 필드에 공백이 포함될 수 있습니다. 인용. 기록은 여러 줄에 걸쳐 계속될 수 없습니다.
각 레코드는 연결 유형, 클라이언트 IP 주소를 지정합니다. 범위(연결 유형과 관련된 경우), 데이터베이스 이름, 사용자 이름 및 사용할 인증 방법 이 매개변수와 일치하는 연결. 와 함께한 첫 번째 기록 일치하는 연결 유형, 클라이언트 주소, 요청된 데이터베이스, 사용자 이름은 인증을 수행하는 데 사용됩니다. 없습니다"탈락"또는"백업": 하나의 레코드가 선택되고 인증이 실패하면 후속 기록은 고려되지 않습니다. 만약에 일치하는 기록이 없어 접근이 거부되었습니다.
기록은 7가지 형식 중 하나를 가질 수 있습니다.
로컬데이터베이스 사용자 인증 방법 [인증 옵션] 주인데이터베이스 사용자 CIDR-주소 인증 방법 [인증 옵션] 호스트sl데이터베이스 사용자 CIDR-주소 인증 방법 [인증 옵션] 호스트노슬데이터베이스 사용자 CIDR-주소 인증 방법 [인증 옵션] 주인데이터베이스 사용자 IP-주소 IP-마스크 인증 방법 [인증 옵션] 호스트sl데이터베이스 사용자 IP-주소 IP-마스크 인증 방법 [인증 옵션] 호스트노슬데이터베이스 사용자 IP-주소 IP-마스크 인증 방법 [인증 옵션]
필드의 의미는 다음과 같습니다:
이 레코드는 다음을 사용한 연결 시도와 일치합니다. Unix 도메인 소켓. 이런 종류의 기록이 없으면, Unix 도메인 소켓 연결은 허용되지 않습니다.
이 기록은 다음을 사용하여 이루어진 연결 시도와 일치합니다. TCP/IP.호스트기록 일치 어느 하나SSL또는 비-SSL연결 시도.
참고:원격 TCP/IP 연결은 불가능합니다. 서버가 다음으로 시작되지 않는 한 가능합니다. 에 대한 적절한 값listen_addresses구성 매개변수, 이후 기본 동작은 TCP/IP를 수신하는 것입니다. 로컬 루프백 주소에서만 연결로컬호스트.
이 기록은 다음을 사용하여 이루어진 연결 시도와 일치합니다. TCP/IP, 그러나 연결이 이루어진 경우에만SSL암호화.
이 옵션을 사용하려면 서버를 구축해야 합니다. 와 함께SSL지원합니다. 뿐만 아니라,SSL반드시 설정하여 서버 시작 시간에 활성화됩니다.ssl구성 매개변수(참조섹션 16.7더 보기 정보).
이 레코드 유형은 다음과 반대 논리를 가집니다.hostssl: 연결만 일치합니다. 사용하지 않는 TCP/IP를 통한 시도SSL.
이 레코드가 일치하는 데이터베이스 이름을 지정합니다. 값모두다음을 지정합니다. 모든 데이터베이스와 일치합니다. 값동일사용자레코드가 일치함을 지정합니다. 요청한 데이터베이스의 이름이 동일한 경우 요청한 사용자입니다. 값samerole요청된 사용자를 지정합니다. 반드시 해당 역할의 구성원이어야 합니다. 요청한 데이터베이스. (동일그룹더 이상 사용되지 않지만 여전히 허용되는 철자법입니다.사메롤.) 그렇지 않은 경우에는 다음의 이름입니다. 특정포스트그레SQL데이터베이스. 여러 데이터베이스 이름을 제공할 수 있습니다. 쉼표로 구분합니다. 다음을 포함하는 별도의 파일 데이터베이스 이름은 파일 앞에 지정하여 지정할 수 있습니다. 이름을@.
이 레코드의 이름을 지정한 데이터베이스 사용자를 지정합니다 성냥. 값전체지정 모든 사용자와 일치합니다. 그렇지 않으면 이는 다음 중 하나입니다. 특정 데이터베이스 사용자의 이름 또는 그룹 이름 앞에는+. (그걸 기억해 사용자와 그룹 사이에는 실제적인 구별이 없습니다.PostgreSQL; 에이+마크는 정말 의미가 있습니다"직접적으로 또는 이 역할의 간접적 구성원", 이름은 a 없이+일치만 표시 해당 특정 역할.) 여러 사용자 이름을 제공할 수 있습니다. 쉼표로 구분합니다. 별도의 파일 사용자 이름을 포함하는 이름은 파일 이름은@.
클라이언트 시스템 IP 주소 범위를 지정합니다. 이 기록은 일치합니다. 여기에는 IP 주소가 포함되어 있습니다. 표준 점으로 구분된 10진수 표기법 및 CIDR 마스크 길이. (IP 주소는 숫자로만 지정할 수 있습니다. 도메인 또는 호스트 이름.) 마스크 길이는 클라이언트 IP 주소의 상위 비트 수 일치해야 합니다. 이 오른쪽의 비트는 0이어야 합니다. 주어진 IP 주소. 공백이 없어야 합니다. IP 주소 사이에/, CIDR 마스크 길이입니다.
일반적인CIDR-주소is172.20.143.89/32싱글용 호스트 또는172.20.143.0/24에 대한 회로망. 단일 호스트를 지정하려면 CIDR 마스크 32를 사용하세요. IPv4의 경우, IPv6의 경우 128입니다.
IPv4 형식으로 제공된 IP 주소는 IPv6와 일치합니다 해당 주소가 있는 연결 예127.0.0.1다음과 일치합니다 IPv6 주소::ffff:127.0.0.1. IPv6 형식으로 제공된 항목은 IPv6에만 일치합니다. 연결은 표시된 주소가 IPv4-in-IPv6 범위. IPv6 형식의 항목은 시스템의 C 라이브러리가 없으면 거부됩니다. IPv6 주소를 지원합니다.
이 필드는 다음에만 적용됩니다.호스트, hostssl, 그리고hostnossl기록.
이 필드는 다음의 대안으로 사용될 수 있습니다.CIDR-주소표기법. 마스크 길이를 지정하는 대신 실제 마스크는 별도의 열에 지정됩니다. 예를 들어,255.0.0.0IPv4 CIDR 마스크를 나타냅니다. 길이는 8이고255.255.255.255CIDR 마스크 길이 32를 나타냅니다.
이 필드는 다음에만 적용됩니다.호스트, hostssl, 그리고hostnossl기록.
다음 경우에 사용할 인증 방법을 지정합니다. 이 레코드를 통해 연결합니다. 가능한 선택은 다음과 같습니다 여기에 요약되어 있습니다. 자세한 내용은 다음을 참조하세요.섹션 20.2.
무조건 연결을 허용합니다. 이것 방법을 사용하면 누구나 연결할 수 있습니다.PostgreSQL데이터베이스 서버로 로그인 가능PostgreSQL그들이 좋아하는 사용자, 비밀번호가 필요 없이. 보다섹션 20.2.1자세한 내용은.
무조건 연결을 거부합니다. 이것은 유용함"필터링 중 밖으로"그룹의 특정 호스트.
클라이언트가 MD5 암호화된 데이터를 제공하도록 요구합니다. 인증을 위한 비밀번호. 보다섹션 20.2.2자세한 내용은.
참고:이 옵션은 권장사항입니다 7.2 이전 클라이언트와 통신하기 위한 것입니다.
클라이언트가 다음을 제공하도록 요구암호()-암호화된 비밀번호
                입증.md5지금입니다
                추천 이상암호.
                보다섹션
                20.2.2자세한 내용은.
클라이언트가 암호화되지 않은 데이터를 제공하도록 요구합니다. 인증을 위한 비밀번호. 비밀번호는 이므로 네트워크를 통해 일반 텍스트로 전송되어야 합니다. 신뢰할 수 없는 네트워크에서는 사용하지 마세요. 또한 그렇지 않습니다 일반적으로 스레드 클라이언트 응용 프로그램과 함께 작동합니다. 보다섹션 20.2.2자세한 내용은.
Kerberos V5를 사용하여 사용자를 인증하세요. 이것 TCP/IP 연결에만 사용할 수 있습니다. 보다섹션 20.2.3자세한 내용은.
운영 체제 사용자 이름을 얻으십시오. 클라이언트(TCP/IP 연결의 경우 로컬 연결을 위한 클라이언트의 ident 서버 운영 체제에서 가져와서) 확인하고 사용자가 요청한 대로 연결이 허용된 경우 데이터베이스 사용자는 이후에 지정된 지도를 참조하여 그만큼ident키워드. 보다섹션 20.2.4자세한 내용은.
플러그형 인증을 사용하여 인증 운영업체에서 제공하는 모듈(PAM) 서비스 체계. 보다섹션 20.2.5용 세부.
이 선택 필드의 의미는 다음에 따라 다릅니다. 선택한 인증 방법. 세부정보는 아래에 표시됩니다.
다음에 포함된 파일@구조물은 다음 중 하나로 구분할 수 있는 이름 목록으로 읽습니다. 공백 또는 쉼표. 댓글은 다음으로 소개됩니다.#, 마찬가지로pg_hba.conf및 중첩@구조가 허용됩니다. 파일명이 아니면 수행원@은 절대 경로입니다. 해당 디렉토리를 포함하는 디렉토리에 상대적인 것으로 간주됩니다. 파일을 참조하고 있습니다.
이후pg_hba.conf레코드는 다음과 같습니다. 각 연결 시도에 대해 순차적으로 검사되며, 기록이 중요해요. 일반적으로 이전 기록은 연결 일치 매개변수가 단단하고 약함 인증 방법은 나중에 기록이 더 느슨해질 것입니다. 매개변수와 더 강력한 인증 방법을 일치시킵니다. 을 위한 예를 들어, 다음을 사용하고 싶을 수도 있습니다.신뢰로컬 TCP/IP 연결에 대한 인증이 필요하지만 원격 TCP/IP 연결을 위한 비밀번호입니다. 이 경우 기록 지정신뢰인증 127.0.0.1의 연결이 레코드 앞에 나타납니다. 더 넓은 범위의 허용되는 비밀번호 인증을 지정합니다. 클라이언트 IP 주소.
그pg_hba.conf파일을 읽은 위치 시작 및 메인 서버 프로세스(우체국장)는를 수신합니다.SIGHUP신호. 활성 시스템에서 파일을 편집하는 경우 다음이 필요합니다. 신호를 보내다우체국장(사용pg_ctl 다시 로드또는죽여 -HUP) 파일을 다시 읽도록 합니다.
몇 가지 예pg_hba.conf항목은 다음에 표시됩니다.예 20-1. 다른 항목에 대한 자세한 내용은 다음 섹션을 참조하세요. 인증 방법.
예 20-1. 예pg_hba.conf항목
# 로컬 시스템의 모든 사용자가 아래의 모든 데이터베이스에 연결할 수 있도록 허용합니다. # Unix 도메인 소켓을 사용하는 모든 데이터베이스 사용자 이름(로컬의 기본값) # 연결). # # 유형 데이터베이스 사용자 CIDR-주소 방법 로컬 모두 모두 신뢰 # 로컬 루프백 TCP/IP 연결을 사용하는 것과 동일합니다. # # 유형 데이터베이스 사용자 CIDR-주소 방법 모두 호스트 127.0.0.1/32 신뢰 # 마지막 줄과 동일하지만 별도의 넷마스크 열을 사용합니다. # # 유형 데이터베이스 사용자 IP-주소 IP-마스크 방법 모두 호스트 모두 127.0.0.1 255.255.255.255 신뢰 # IP 주소가 192.168.93.x인 모든 호스트의 모든 사용자가 연결하도록 허용합니다. # ident가 보고하는 것과 동일한 사용자 이름으로 "postgres" 데이터베이스에 # 연결(일반적으로 Unix 사용자 이름). # # 유형 데이터베이스 사용자 CIDR-주소 방법 호스트 postgres 모두 192.168.93.0/24 ident sameuser # 호스트 192.168.12.10의 사용자가 데이터베이스에 연결하도록 허용 # 사용자의 비밀번호가 올바르게 제공되면 "postgres"입니다. # # 유형 데이터베이스 사용자 CIDR-주소 방법 호스트 postgres 모두 192.168.12.10/32 md5 # 앞의 "host" 줄이 없으면 이 두 줄은 # 192.168.54.1로부터의 모든 연결을 거부합니다(해당 항목은 # 먼저 일치), 그러나 다른 곳에서는 Kerberos 5 연결을 허용합니다. #인터넷에서. 제로 마스크는 호스트 IP의 비트가 없음을 의미합니다. # 주소는 모든 호스트와 일치하도록 고려됩니다. # # 유형 데이터베이스 사용자 CIDR-주소 방법 모두 호스트 모두 192.168.54.1/32 거부 모두 모두 호스팅 0.0.0.0/0 krb5 # 192.168.x.x 호스트의 사용자가 모든 데이터베이스에 연결할 수 있도록 허용합니다. # 신원 확인을 통과했습니다. 예를 들어, ident가 사용자를 다음과 같이 말한다면 # "bryanh" 그리고 그는 PostgreSQL 사용자 "guest1"로 연결을 요청합니다. # pg_ident.conf에 맵에 대한 항목이 있으면 연결이 허용됩니다. # "bryanh"이라고 표시된 "omicron"은 "guest1"로 연결이 허용됩니다. # # 유형 데이터베이스 사용자 CIDR-주소 방법 모두 192.168.0.0/16 ident omicron을 모두 호스팅합니다. # 로컬 연결에 이 세 개의 회선만 있는 경우 # 로컬 사용자가 자신의 데이터베이스(데이터베이스)에만 연결하도록 허용합니다. # 데이터베이스 사용자 이름과 동일한 이름을 가짐) 관리자 제외 # 및 모든 데이터베이스에 연결할 수 있는 "지원" 역할의 구성원. 파일 # $PGDATA/admins에는 관리자 이름 목록이 포함되어 있습니다. 비밀번호 #은 모든 경우에 필요합니다. # # 유형 데이터베이스 사용자 CIDR-주소 방법 로컬 동일 사용자 모두 md5 로컬 모든 @admins md5 로컬 모두 +md5 지원 # 위의 마지막 두 줄은 한 줄로 결합될 수 있습니다. 로컬 모든 @admins,+md5 지원 # 데이터베이스 열에는 목록과 파일 이름도 사용할 수 있습니다. 로컬 db1,db2,@demodbs 모든 md5