19.2. ��֤����

�����С�ڸ���ϸ��������֤������

19.2.1. ������֤

��������� trust �����Σ���֤ģʽ�� PostgreSQL �ͼ����κο������ӵ����������˶��������κ������������ݿ��û����������ݿⳬ���û������ӡ� ��Ȼ���� database �� user �ֶ������������Ȼ���á� �������Ӧ��������Щ�����ӵ��������Ѿ����㹻����ϵͳ��α����Ļ����

trust ��֤���ڵ��û�����վ�ı��������Ƿdz����ʺͷ���ġ� ͨ���������������ڶ��û������Ļ����� ��������ʹ�ڶ��û��Ļ����ϣ���Ҳ����ʹ�� trust�� ֻҪ�������ļ�ϵͳȨ�������˶Է������� Unix ���׽����ļ��ķ��ʡ� Ҫ����Щ���ƣ���������� ���� unix_socket_permissions ���Լ����ܻ��� unix_socket_group�������� Section 16.4.2 �������������� ������������� unix_socket_directory����Unix ���׽����ļ�����һ������ǡ�����Ƶ�Ŀ¼�

�����ļ�ϵͳȨ��ֻ�ܰ��� Unix �׽������ӡ����������Ʊ��� TCP/IP ���ӣ� ��ˣ�������������ļ�ϵͳȨ�������Ʊ��ذ�ȫ����ôɾ�� pg_hba.conf ��� host ... 127.0.0.1 ... �У����߰�����Ϊһ���� trust ����֤������

trust ��֤ģʽֻ�ʺ� TCP/IP ���ӣ�ֻ������������Щ�� pg_hba.conf ������Ϊ trust���������ӵ������������ϵ����л�������������û���ʱ����Ǻ��ʵġ� ����������ʹ�� trust ��Ϊ�κγ�����localhost��127.0.0.1������� TCP/IP ���ӵ���֤��ʽ��

19.2.2. ������֤

�Կ���Ϊ��������֤�������� md5��crypt�� �� password����Щ���������Ϸdz����ƣ�ֻ��������ͨ�����Ӵ��͵ķ�����ͬ�� ����ֻ�� md5 ֧�ּ��ܵĿ���洢�� pg_shadow � �������ַ���Ҫ���ڸñ��д洢δ���ܵĿ��

����㵣�Ŀ������("sniffing")�� ��ô md5 �ȽϺ��ʣ���������֧�� 7.2 ��ǰ���ϵĿͻ��ˣ� ��ô����ѡ crypt����������ڿ��ŵĻ�������ʹ�ã� Ӧ�þ����ܱ���ʹ�� password����������������ʹ���� SSL�� SSH����������ͨѶ��ȫ�����ӷ�װ����

PostgreSQL ���ݿ�������κβ���ϵͳ�û������޹ء� �������ݿ��û��Ŀ����Ǵ洢��pg_shadowϵͳ������ġ� ��������� SQL �������� CREATE USER �� ALTER USER �ȹ���Ҳ����˵�� CREATE USER foo WITH PASSWORD 'secret';��ȱʡʱ�����û����ȷ�����ÿ���洢�Ŀ����ǿղ��Ҹ��û��Ŀ�����֤�ܻ�ʧ�ܡ�

Ҫ�����������ij���ݿ���û����� ������ pg_hba.conf �е� user �ֶ��г���Щ�û�������ǰ���С�ڽ��͵�������

19.2.3. Kerberos ��֤

Kerberos ��һ���������ڹ��������Ͻ��зֲ�����Ĺ�ҵ��׼�İ�ȫ��֤ϵͳ�� �� Kerberos ϵͳ������ԶԶ�ij����˱��ĵ��ķ�Χ�� �ܵ�˵�������൱���ӣ�ͬ��Ҳ�൱ǿ�󣩵�ϵͳ�� Kerberos FAQ �� MIT �ŵ��ȼƻ� �Ǹ���ʼ̽�� �ĺõط����ִ��ںü���Kerberos������Դ���롣

Ҫʹ�� Kerberos��������֧�ֱ�����������ʱ��򿪡� ���� Chapter 14 ��ȡ����ϸ�ڡ� Kerberos 4 �� 5 ����֧�֣� ����������һ��������ֻ��֧��һ���汾��

PostgreSQL ����ʱ��һ����ͨ�� Kerberos ���� �������������� servicename/hostname@realm�� ����� servicename �� postgres ������������ʱ�� ./configure --with-krb-srvnam=whatever ѡ����һ����ͬ�� hostname���� hostname �Ƿ���������ȫ�Ƶ��������֡� �����������Ƿ�����������������

�ͻ����Ը������������Լ��� PostgreSQL �û�����Ϊ��һ������������ pgusername/otherstuff@realm�� Ŀǰ PostgreSQL û�м��ͻ���������������˿������֤����ô�����������κο��Ժ���ͨѶ�������ᱻ���ܡ�

ȷ����ķ���������Կ�ļ��ǿ��Ա� PostgreSQL �������ʻ���ȡ����þ���ֻ���ģ����ּ� Section 16.1������Կ�ļ��� keytab����λ���������ò��� krb_server_keyfile �����ġ� ���ּ� Section 16.4����ȱʡʱ�� Kerberos 4 ���� /etc/srvtab�� Kerberos 5���� /usr/local/pgsql/etc/krb5.keytab �������κ���������ʱ������Ϊ sysconfdir ��Ŀ¼����

Ҫ������Կ�ļ���keytab�����������������ӣ��԰汾5��

kadmin% ank -randkey postgres/server.my.domain.org
kadmin% ktadd -k krb5.keytab postgres/server.my.domain.org

�Ķ� Kerberos ���ĵ���ȡ��ϸ��Ϣ��

�ں����ݿ����ӵ�ʱ����ȷ���Լ���ÿ������ӵ��һ��ƥ������������ݿ��û�������Ʊ�� ���ӣ��������ݿ��û� fred���� fred@EXAMPLE.COM �� fred/users.example.com@EXAMPLE.COM ���������������ݿ��������֤��

����������Apache web ��������ʹ����mod_auth_krb�� mod_perl�� �������һ��mod_perl�ű����� AuthType KerberosV5SaveCredentials�� ����������һ��ͨ�� web �İ�ȫ���ݿ���ʣ�����Ҫ����Ŀ��

19.2.4. ���� Ident ����֤

��ݣ�ident����֤����������ģʽ��ʹ��һ��ӳ���ļ��г���ɵ��û��Ͷ�Ӧ���û�����ԣ� Ȼ��ͨ����ȡ�ͻ��˵IJ���ϵͳ�û����Լ��ж���ɵ����ݿ��û����ķ�������֤�� �жϿͻ��˵��û����Ƿdz��ؼ��İ�ȫ�㣬�����������͵IJ�ͬ������ʵ�ַ���Ҳ���в�ͬ��

19.2.4.1. ͸�� TCP/IP �������֤

"Identification Protocol����ʶЭ�飩"�� RFC 1413 ����������ʵ����ÿ����Unix�IJ���ϵͳ������һ��ȱʡʱ����113�˿ڵ���ݷ������� ��ݷ������Ļ��������ǻش��������������⣺ "��ʲô�û�����Ķ˿�X��ʼ���������ӵ��ҵĶ˿�Y�����ˣ�"�� ��Ϊ�ڽ������������Ӻ�PostgreSQL ��֪�� X Ҳ֪�� Y�� ���������ѯ�����г������ӵĿͻ��˵����������������Ͽ�������������жϷ������ӵIJ���ϵͳ�û���

��������ȱ������ȡ���ڿͻ��˵������ԣ�����ͻ��˲����Ż��߱������߹��ƣ� �������ǿ�����113�˿��������κγ����ҷ�������ѡ����κ��û��Ļ������޷���֤�ˡ� ��������֤����ֻ�����ڷ�յ����磬 �������������ÿ̨�ͻ������������ܵĿ����²������ݿ�Ͳ���ϵͳ����Ա���ԱȽϷ������ϵ�ϡ� ���仰˵������������������(ident)����Ļ����������Ǿ��棺
 

��ݱ�ʶЭ�鲢����������֤���߷��ʿ���Э�顣

 
--RFC 1413 

19.2.4.2. ͸�������׽��ֵ������֤

��֧������ Unix ���׽��ֵ�SO_PEERCRED�����ϵͳ�ϣ� ��Ŀǰ�� Linux�� FreeBSD�� NetBSD�� OpenBSD�� BSD/OS���� �����֤Ҳ�������ھֲ����ӡ����ʱ��ʹ�������֤�������Ӱ�ȫ���գ� ʵ������Ҳ��������ϵͳ��ʹ�ñ�������ʱ����ѡ������

��û�� SO_PEERCRED �����ϵͳ�ϣ������ֻ֤��ͨ��TCP/IP���ӻ�ȡ�� �����Ҫ�ƿ�������ƣ����ǿ������� localhost ��ַ 127.0.0.1��Ȼ��������ָ�������ַ�� ������������������ű��������֤�������ij��ϡ�

19.2.4.3. Ident ӳ��

��ʹ�������Ϊ��������֤ʱ�����ж��˳�ʼ�����ӵIJ���ϵͳ�û������ֺ� PostgreSQL �ж����Ƿ������������������ݿ��û���������ӡ� ����ж����ɸ���pg_hba.conf �ļ���� ident �ؼ��ֺ�������ӳ����Ƶġ� ��һ��Ԥ��������ӳ����sameuser����ʾ�κβ���ϵͳ�û���������ͬ�����ݿ��û��������� ��������ߴ��ڵĻ���������ӳ������ֹ�������

�� sameuser �����ӳ�䶨�������ӳ���ļ�� ������ȱʡ�� pg_ident.conf�� ����ȱʡ����ڼ�Ⱥ������Ŀ¼� �����������ǿ��԰�ӳ���ļ����������ط������� ident_file ���ò������� ���ӳ���ļ���������ͨ�õĸ�ʽ��

map-name ident-username database-username

ע�ͺͿհ׺� pg_hba.conf �ļ����һ������map-name �ǽ�������pg_hba.conf���������ӳ����������ơ� ��������������ij������ϵͳ�û����������ĸ����ݿ��û�����ݽ������ӡ� ͬһ��map-name �����ظ�������һ��ӳ��������������û�ӳ�䡣 ��һ������ϵͳ�û�����ӳ��Ϊ���ٸ����ݿ��û�û�����ƣ���֮��Ȼ��

��ϵͳ���������������� postmaster ���յ�һ�� SIGHUP �źŵ�ʱ����ȡ pg_ident.conf �ļ����������һ̨��Ծ��ϵͳ�ϱ༭���ļ��� ��ô����Ҫ�� postmaster ���źţ��� pg_ctl reload ���� kill -HUP �������¶�ȡ���ļ�����

Example 19-2����һ�����Ժ��� Example 19-1 ������ʾ��pg_hba.conf�ļ����ʹ�õ� pg_ident.conf �ļ��� ��������ӵ�������κε�¼�� 192.168 ������Ļ������û�������û������� bryanh��ann���� robert�Ͳ��ܻ�׼���ʡ� Unix �û�robertֻ������ͼ��PostgreSQL�û� bob�������ʱ��������ʣ��������� robert ������ʲô��ݡ� ann ��ֻ������ann��������ӡ� �û�bryanh���������Լ��� bryanh ��ݻ�����Ϊ guest1 �������ӡ�

Example 19-2. һ�� pg_ident.conf �ļ�����

# MAPNAME     IDENT-USERNAME    PG-USERNAME

omicron       bryanh            bryanh
omicron       ann               ann
# bob ����̨�����ϵ��û����� robert
omicron       robert            bob
# bryanh Ҳ������ guest1 �������
omicron       bryanh            guest1

19.2.5. PAM ��֤

�����֤���������������� password�� ֻ������ʹ�� PAM��Pluggable Authentication Modules����Ϊ��֤���ơ� ȱʡ�� PAM �������� postgresql�� ��������ļ� pg_hba.conf �� pam �ؼ��ֺ����ṩ�Լ��Ŀ�ѡ�������� �й� PAM �ĸ�����Ϣ�����Ķ� Linux-PAMҳ���� Solaris PAM ҳ����