토토 베이 9.2.24 문서 | ||||
---|---|---|---|---|
토토 캔 : 문서 : 9.2 : 클라이언트 인증 | up | 19 장. 클라이언트 인증 | PostgreSQL : 문서 : 9.2 : 토토 |
클라이언트 인증은 구성 파일에 의해 제어됩니다. 전통적으로 명명 된PG_HBA.conf그리고 데이터토토 베이스에 저장되어 있습니다 클러스터의 데이터 디렉토리. (HBA호스트 기반 인증을 나타냅니다.) 기본값pg_hba.conf데이터가 설치 될 때 파일이 설치됩니다 디렉토리는에 의해 초기화됩니다.initdb. 그것 인증 구성 파일을 배치 할 수 있습니다 그러나 다른 곳에서는; 참조hba_file구성 매개 변수.
일반 형식PG_HBA.conf파일은 1 인당 레코드 세트입니다 선. 빈 줄은 무시됩니다. 이후의 텍스트와 마찬가지로#댓글 문자. 기록은 될 수 없습니다 라인을 가로 질러 계속되었습니다. 레코드는 여러 분야로 구성됩니다. 공백 및/또는 탭으로 분리됩니다. 필드에는 포함 할 수 있습니다 필드 값이 인용되는 경우 공백. 하나를 인용합니다 데이터토토 베이스, 사용자 또는 주소 필드의 키워드 (예 :all또는복제) MATE 이 단어는 특별한 성격을 잃고 데이터토토 베이스와 일치합니다. 사용자 또는 그 이름을 가진 호스트.
각 레코드는 연결 유형, 클라이언트 IP 주소를 지정합니다. 범위 (연결 유형과 관련된 경우), 데이터토토 베이스 이름, 사용자 이름 및 사용할 인증 방법 이 매개 변수와 일치하는 연결. a.의 첫 번째 레코드 연결 유형, 클라이언트 주소, 요청 된 데이터토토 베이스 및 일치합니다 사용자 이름은 인증을 수행하는 데 사용됩니다. 없음"낙상"또는"백업": 한 레코드가 선택된 경우 인증 실패, 후속 레코드는 고려되지 않습니다. 만약에 레코드 일치가없고 액세스가 거부됩니다.
레코드는 7 가지 형식 중 하나를 가질 수 있습니다
Local데이터토토 베이스 사용자 Auth-Method[Auth-options] 주인데이터토토 베이스 사용자 주소 Auth-Method[Auth-options] 호스트데이터토토 베이스 사용자 주소 Auth-Method[Auth-options] hostnossl데이터토토 베이스 사용자 주소 Auth-Method[Auth-options] 주인데이터토토 베이스 사용자 ip-address IP 마스크 Auth-Method[Auth-Options] 호스트데이터토토 베이스 사용자 ip-address IP 마스크 Auth-Method[Auth-options] hostnossl데이터토토 베이스 사용자 ip-address IP 마스크 Auth-Method[Auth-options]
필드의 의미는 다음과 같습니다.
이 레코드는 연결 시도와 일치합니다 유닉스 도메인 소켓. 이 유형의 기록이 없으면 유닉스 도메인 소켓 연결은 허용되지 않습니다.
이 레코드는 사용한 연결 시도와 일치합니다 TCP/IP.host레코드 일치 중 하나SSL또는 비SSL연결 시도.
참고 :원격 TCP/IP 연결 서버가 an으로 시작되지 않는 한 가능합니다 에 적합한 가치Listen_Addresses구성 매개 변수는 기본 동작이므로 로컬에서만 TCP/IP 연결을 듣습니다 루프백 주소LocalHost.
이 레코드는 사용한 연결 시도와 일치합니다 TCP/IP이지만 연결이 이루어질 때만SSL암호화.
이 옵션을 사용하려면 서버를 구축해야합니다.SSL지원. 뿐만 아니라,SSL를 설정하여 서버 시작 시간에 활성화SSL구성 매개 변수 (참조PostgreSQL : 문서 : 9.2 : SSL과 TCP/롤 토토 롤 토토을 보호합니다자세한 정보).
이 레코드 유형은 반대 동작이입니다.hostssl; 연결 시도에만 일치합니다 사용하지 않는 TCP/IP를 통해 제작SSL.
이 레코드가 일치하는 데이터토토 베이스 이름을 지정합니다. 값all이를 지정합니다 모든 데이터토토 베이스와 일치합니다. 값Sameuser레코드가 일치하도록 지정합니다 요청 된 데이터토토 베이스가 요청 된 사용자. 값Samerole요청 된 사용자가 요청 된 데이터토토 베이스와 동일한 이름의 역할. (SameGroup쓸모 없지만 여전히 받아 들여진 철자Samerole.) 슈퍼 사용자는 고려되지 않습니다 목적으로 역할의 구성원이 되십시오.Samerole명시 적으로 회원이 아닌 한 직간접적인 것이 아니라 직간접 적으로 역할 슈퍼 사용자가되는 것. 값복제레코드를 지정합니다 복제 연결이 요청되면 일치합니다 (참고 복제 연결은 특정을 지정하지 않습니다 데이터 베이스). 그렇지 않으면 이것은 특정 이름입니다토토 베이데이터토토 베이스. 여러 데이터토토 베이스 이름을 분리하여 제공 할 수 있습니다 쉼표와 함께. 데이터토토 베이스 이름을 포함하는 별도의 파일은 할 수 있습니다 파일 이름을 이전에 지정해야합니다.@.
이 레코드가 어떤 데이터토토 베이스 사용자 이름을 지정합니다 성냥. 값all지정 모든 사용자와 일치합니다. 그렇지 않으면 이것은 하나입니다 특정 데이터토토 베이스 사용자의 이름 또는 이전 그룹 이름 에 의해+. (아니오가 없다는 것을 기억하십시오 사용자와 그룹의 실제 구별토토 베이; 에이+마크는 정말 의미"직접 또는 직접적인 역할과 일치하십시오 간접적 으로이 역할의 구성원 "없이+Mark는 그와 일치합니다 이 목적을 위해 슈퍼 유저는이 목적입니다 명시 적으로 역할의 구성원으로 간주 직접 또는 간접적으로 역할의 구성원이 아니라 슈퍼업자가되기 때문에. 여러 사용자 이름이 될 수 있습니다 쉼표로 분리하여 제공됩니다. 별도의 파일 사용자 이름을 포함하는 것은 이전에 지정할 수 있습니다 파일 이름@.
클라이언트 컴퓨터 주소를 지정합니다 기록 경기. 이 필드는 호스트 이름을 포함 할 수 있으며 IP 주소 범위 또는 특수 키워드 중 하나 아래 언급.
IP 주소 범위는 표준 숫자를 사용하여 지정됩니다 범위의 시작 주소에 대한 표기법, 슬래시 (/) 및 ACIDR마스크 길이. 마스크 길이 클라이언트 IP의 고차 비트 수를 나타냅니다. 일치 해야하는 주소. 이것의 오른쪽에 비트 주어진 IP 주소에서 0이됩니다. 아무것도 없어야합니다 IP 주소 사이의 공백,/및 CIDR 마스크 길이.
IPv4 주소 범위의 일반적인 예가이를 지정했습니다 방법은172.20.143.89/32a 단일 호스트, 또는172.20.143.0/24소규모 네트워크 또는10.6.0.0/16더 큰 것. IPv6 주소 범위는::1/128단일 호스트의 경우 (이 경우 IPv6 루프백 주소) 또는Fe80 :: 7A31 : C1FF : 0000 : 0000/96작은 회로망.0.0.0.0/0모든 것을 나타냅니다 IPv4 주소 및::0/0모든 IPv6 주소를 나타냅니다. 단일 호스트를 지정하려면 IPv4의 경우 32의 마스크 길이 또는 IPv6의 경우 128을 사용하십시오. a 네트워크 주소, 후행 제로를 생략하지 마십시오.
IPv4 형식으로 제공되는 항목은 IPv4 만 일치합니다. 연결 및 IPv6 형식으로 제공되는 항목이 일치합니다. 대표 주소가있는 경우에도 IPv6 연결 만 IPv4-in-IPV6 범위에서. IPv6 형식의 항목 시스템의 C 라이브러리에 IPv6 주소 지원.
당신도 쓸 수 있습니다all일치합니다 모든 IP 주소,Samehost일치합니다 서버의 자체 IP 주소 또는Samenet모든 서브넷의 모든 주소와 일치합니다 서버가 직접 연결되어 있습니다.
호스트 이름이 지정된 경우 (IP가 아닌 모든 것 주소 범위 또는 특수 키 단어는 호스트로 취급됩니다. 이름), 그 이름은 반대의 결과와 비교됩니다. 클라이언트의 IP 주소의 이름 해상도 (예 : 리버스 DNS 조회, DNS가 사용되는 경우). 호스트 이름 비교가 그렇습니다 무감각합니다. 일치가 있으면 앞으로 이름이 있습니다 해상도 (예 : 전방 DNS 조회)에서 수행됩니다 호스트 이름이 해결되는 주소 여부를 확인합니다. 고객의 IP 주소와 같습니다. 두 방향이라면 일치하면 항목이 일치하는 것으로 간주됩니다. (호스트 에서 사용되는 이름PG_HBA.conf의 주소-이름 해상도가되어야합니다 클라이언트의 IP 주소가 반환됩니다. 그렇지 않으면 줄은 그렇지 않습니다 일치합니다. 일부 호스트 이름 데이터토토 베이스에서는 IP를 연관시킬 수 있습니다 여러 호스트 이름이지만 운영 체제가있는 주소 IP를 해결하도록 요청하면 호스트 이름 하나만 반환합니다. 주소.)
점으로 시작하는 호스트 이름 사양 (.)는 실제의 접미사와 일치합니다 호스트 이름. 그래서.example.com성냥foo.example.com(그러나 그렇지 않습니다 단지example.com).
호스트 이름이 지정된 경우PG_HBA.conf, 그 이름을 확인해야합니다 해상도는 합리적으로 빠릅니다. 유리할 수 있습니다 와 같은 로컬 이름 해상도 캐시 설정NSCD. 또한, 당신은 그것을 활성화하고 싶을 수도 있습니다 구성 매개 변수log_hostname클라이언트의 호스트 이름을 보려면 로그의 IP 주소 대신
이 필드는에만 적용됩니다.호스트, hostssl및hostnossl레코드.
이 두 필드는 대안으로 사용될 수 있습니다.ip-address/마스크 길이표기법. 마스크 길이를 지정하는 대신 실제 마스크는 별도의 열에 지정됩니다. 예를 들어,255.0.0.0IPv4 CIDR을 나타냅니다 8의 마스크 길이 및255.255.255.255CIDR 마스크를 나타냅니다 32의 길이
이 필드는에만 적용됩니다host, hostssl및hostnossl기록.
a 연결은이 레코드와 일치합니다. 가능한 선택은입니다 여기에 요약되었습니다. 세부 사항은섹션 19.3.
무조건 연결을 허용합니다. 이 방법 에 연결할 수있는 사람은 누구나 허용합니다토토 베이Database Server to 로그인토토 베이원하는 사용자, 비밀번호 나 다른 암호가 필요하지 않습니다 입증. 보다섹션 19.3.1세부.
무조건 연결을 거부하십시오. 이것은 유용한"필터링"예를 들어 그룹의 특정 호스트, 예를 들어거부라인은 특정을 차단할 수 있습니다 연결에서 호스트, 이후 라인은 다음을 허용합니다 연결하려면 특정 네트워크에 남아있는 호스트.
클라이언트가 MD5 암호화를 공급하도록 요구합니다 인증을위한 비밀번호. 보다섹션 19.3.2자세한 내용.
클라이언트가 암호화되지 않은 것을 공급하도록 요구합니다 인증을위한 비밀번호. 비밀번호이기 때문에 네트워크를 통해 명확한 텍스트로 전송되면 신뢰할 수없는 네트워크에서 사용됩니다. 보다섹션 19.3.2자세한 내용.
GSSAPI를 사용하여 사용자를 인증합니다. 이것은 전혀입니다 TCP/IP 연결에 사용할 수 있습니다. 보다섹션 19.3.3자세한 내용.
SSPI를 사용하여 사용자를 인증합니다. 이것은 전혀입니다 Windows에서 사용할 수 있습니다. 보다섹션 19.3.4세부.
Kerberos v5를 사용하여 사용자를 인증합니다. 이것은 TCP/IP 연결에만 사용할 수 있습니다. 보다섹션 19.3.5자세한 내용.
운영 체제 사용자 이름을 얻습니다 클라이언트에서 ID 서버에 연락하여 클라이언트 요청 된 데이터토토 베이스 사용자와 일치하는지 확인하십시오 이름. ID 인증은 TCP/IP에서만 사용할 수 있습니다 사이. 로컬 연결을 위해 지정할 때 피어 인증이 대신 사용됩니다. 보다섹션 19.3.6자세한 내용.
클라이언트의 운영 체제 사용자 이름을 얻습니다 운영 체제에서 요청 된 데이터토토 베이스 사용자 이름. 이것은 만 사용할 수 있습니다 로컬 연결을 위해. 보다섹션 19.3.7세부.
AN을 사용하여 인증LDAP서버. 보다섹션 19.3.8세부.
RADIUS 서버를 사용하여 인증. 보다섹션 19.3.9자세한 내용.
SSL 클라이언트 인증서를 사용하여 인증. 보다섹션 19.3.10자세한 내용.
플러그 가능한 인증을 사용하여 인증 운영이 제공하는 모듈 (PAM) 서비스 체계. 보다섹션 19.3.11세부.
이후Auth-Method필드, 양식의 필드가있을 수 있습니다이름=value인증 방법에 대한 옵션을 지정하십시오. 세부 어떤 옵션이 어떤 인증을 사용할 수 있는지에 대해 방법은 아래에 나타납니다.
파일 포함@구조물입니다 이름의 목록으로 읽고, 어느 쪽로도 분리 할 수 있습니다. 공백 또는 쉼표. 댓글은에 의해 소개됩니다.#PG_HBA.conf및 중첩@구성이 허용됩니다. 파일 이름이 아니라면 수행원@는 절대적인 경로입니다 참조가 포함 된 디렉토리와 관련이있는 파일.
이후PG_HBA.conf레코드는입니다 각 연결 시도, 순서에 대해 순차적으로 검사했습니다 기록은 중요합니다. 일반적으로 이전 기록에는 있습니다 단단한 연결 일치 매개 변수 및 약한 인증 방법, 나중에 레코드에는 느슨한 일치 매개 변수가 있습니다 더 강력한 인증 방법. 예를 들어, 원할 수도 있습니다 사용하려면신뢰로컬 인증 TCP/IP 연결이지만 원격 TCP/IP에 대한 비밀번호가 필요합니다 사이. 이 경우 레코드를 지정신뢰연결에 대한 인증 127.0.0.1은 암호를 지정하는 레코드 앞에 나타납니다 더 넓은 범위의 허용 클라이언트 IP에 대한 인증 구애.
thepg_hba.conf파일을 읽습니다 시작 및 기본 서버 프로세스가 A를받는 경우Sighup신호. 파일을 편집하는 경우 활성 시스템, 우체국 장에 신호를 보내야합니다 (사용PG_CTL Reload또는kill -hup) 파일을 다시 읽게하려면.
팁 :사용자, 사용자에 연결하려면 통과해야 할뿐만 아니라pg_hba.conf수표이지만가 있어야합니다.Connect데이터토토 베이스의 권한. 당신이 그것을 제한하고 싶다면 사용자는 어떤 데이터토토 베이스를 연결할 수 있으므로 일반적으로 더 쉽습니다. 부여/취소함으로써 이것을 제어Connect규칙을 넣는 것보다 특권pg_hba.conf항목.
일부 예PG_HBA.conf항목 에 표시됩니다.예 19-1. 보다 다른 인증에 대한 자세한 내용은 다음 섹션입니다 행동 양식.
예 19-1. 예pg_hba.conf항목
# 로컬 시스템의 모든 사용자가 모든 데이터토토 베이스에 연결하도록 허용합니다. # Unix-Domain 소켓을 사용하는 모든 데이터토토 베이스 사용자 이름 (로컬의 기본값 # 연결). 틀 # 데이터토토 베이스 사용자 주소 방법을 입력합니다 모든 신뢰 # 로컬 루프백 TCP/IP 연결을 사용하여 동일합니다. 틀 # 데이터토토 베이스 사용자 주소 방법을 입력합니다 모든 127.0.0.1/32 신탁을 모두 호스트하십시오 # 이전 줄과 동일하지만 별도의 Netmask 열을 사용합니다. 틀 # 데이터토토 베이스 유형 사용자 IP-Dress IP-MASK 메소드 모든 127.0.0.1 255.255.255.255 신탁을 모두 호스트하십시오 # IPv6과 동일합니다. 틀 # 데이터토토 베이스 사용자 주소 방법을 입력합니다 모든 것을 호스트하십시오 :: 1/128 신뢰 # 호스트 이름을 사용하여 동일합니다 (일반적으로 IPv4와 IPv6을 모두 포함합니다). 틀 # 데이터토토 베이스 사용자 주소 방법을 입력합니다 모든 LocalHost 신탁을 모두 호스트하십시오 # IP 주소가있는 호스트의 모든 사용자가 192.168.93.x를 연결하도록 허용합니다. # "postgres"로 # 보고서를 확인하는 동일한 사용자 이름과 # 연결 (일반적으로 운영 체제 사용자 이름). 틀 # 데이터토토 베이스 사용자 주소 방법을 입력합니다 호스트 Postgres 모든 192.168.93.0/24 ID # Host 192.168.12.10의 모든 사용자가 데이터토토 베이스에 연결하도록 허용합니다. # "Postgres"사용자의 암호가 올바르게 제공되는 경우. 틀 # 데이터토토 베이스 사용자 주소 방법을 입력합니다 호스트 Postgres 모든 192.168.12.10/32 MD5 # example.com 도메인의 호스트의 모든 사용자가 연결하도록 허용합니다. # 사용자의 암호가 올바르게 제공되는 경우 모든 데이터토토 베이스. 틀 # 데이터토토 베이스 사용자 주소 방법을 입력합니다 모든 .example.com MD5를 호스트하십시오 # 앞의 "호스트"라인이없는 경우이 두 줄은 # 192.168.54.1에서 모든 연결을 거부합니다 (그 항목은 # 첫 번째 일치) 그러나 다른 곳에서 Kerberos 5 연결을 허용합니다. # 인터넷에서. 제로 마스크는 호스트 IP의 비트를 유발하지 않습니다. # 주소를 고려할 주소는 모든 호스트와 일치합니다. 틀 # 데이터토토 베이스 사용자 주소 방법을 입력합니다 모든 192.168.54.1/32 모두 거부하십시오 모든 0.0.0.0/0 KRB5를 모두 호스트하십시오 # 192.168.x.x 사용자가 데이터토토 베이스에 연결할 수 있도록 허용합니다. # 그들은 신원 확인을 통과합니다. 예를 들어 Ident가 사용자가 있다고 말하면 # "Bryanh"및 그는 토토 베이 사용자 "Guest1"으로 연결하도록 요청합니다. # MAP의 PG_INDENT.CONF 항목이 있으면 연결이 허용됩니다. # "Bryanh"라는 "Omicron"은 "Guest1"으로 연결할 수 있습니다. 틀 # 데이터토토 베이스 사용자 주소 방법을 입력합니다 모든 192.168.0.0/16 모두를 호스트합니다. ID MAP = OMICRON # 이것이 로컬 연결을위한 유일한 세 줄인 경우 # 로컬 사용자가 자신의 데이터토토 베이스 (데이터토토 베이스)에만 연결하도록 허용합니다. # 데이터토토 베이스 사용자 이름과 동일한 이름을 가진) 관리자를 제외하고 # 및 모든 데이터토토 베이스에 연결할 수있는 역할 "지원"멤버. 파일 # $ pgdata/Admins에는 관리자 이름 목록이 포함되어 있습니다. 비밀번호 # 모든 경우에 필요합니다. 틀 # 데이터토토 베이스 사용자 주소 방법을 입력합니다 로컬 동일한 사람 모두 MD5 로컬 모든 @admins md5 로컬 all +지원 MD5 # 위의 마지막 두 줄은 한 줄로 결합 할 수 있습니다. Local All @Admins,+지원 MD5 # 데이터토토 베이스 열은 목록 및 파일 이름도 사용할 수도 있습니다. 로컬 db1, db2,@demodbs all md5