윈 토토 : 문서 : 9.4 : 윈 토토 | |||
---|---|---|---|
PostgreSQL : 문서 : 9.4 : 토토 결과 이름 맵 | 스포츠 토토 : 문서 : 9.4 : 클라이언트 인증 | 19 장. 클라이언트 윈 토토 | 배트맨 토토 : 문서 : 9.4 : 인증 문제 |
다음 하위 섹션에서는 인증 방법을 자세히 설명합니다.
언제신뢰윈 토토이 지정되어 있습니다.PostgreSQL서버에 연결할 수있는 사람은 누구나 지정한 데이터베이스 사용자 이름 (SuperUser 이름)으로 데이터베이스에 액세스 할 수있는 권한이 있다고 가정합니다. 물론,에서 제한이 제한됩니다.데이터베이스and사용자열은 여전히 적용됩니다. 이 방법은 서버에 대한 연결에 적절한 운영 시스템 수준 보호가있을 때만 사용해야합니다.
신뢰인증은 단일 사용자 워크 스테이션의 로컬 연결에 적합하고 매우 편리합니다. 일반적으로not다중 사용자 기계에서 적절합니다. 그러나 사용할 수 있습니다신뢰다중 사용자 시스템에서도 파일 시스템 권한을 사용하여 서버의 UNIX-DOMAIN 소켓 파일에 대한 액세스를 제한하는 경우. 이렇게하려면를 설정하십시오.unix_socket_permissions(그리고 아마도unix_socket_group) 구성 매개 변수에 설명 된PostgreSQL : 문서 : 9.4 : 무지개 토토 및 인증. 또는를 설정할 수 있습니다unix_socket_directories구성 매개 변수 소켓 파일을 적절하게 제한된 디렉토리에 배치합니다.
파일 시스템 권한 설정은 Unix-Socket 연결에만 도움이됩니다. 로컬 TCP/IP 연결은 파일 시스템 권한으로 제한되지 않습니다. 따라서 지역 보안에 파일 시스템 권한을 사용하려면를 제거하십시오.호스트 ... 127.0.0.1 ...라인에서PG_HBA.conf또는 비로 변경하십시오신뢰윈 토토 방법.
신뢰윈 토토은 TCP/IP 연결에만 적합합니다.pg_hba.conf지정하는 선신뢰. 사용하는 것은 합리적이지 않습니다신뢰이외의 TCP/IP 연결의 경우LocalHost(127.0.0.1).
암호 기반 윈 토토 방법은입니다.MD5and비밀번호. 이 방법은 비밀번호가 연결을 통해 전송되는 방식, 즉 MD5 하시 및 명확한 텍스트를 제외하고 비슷하게 작동합니다.
비밀번호에 대해 전혀 걱정하는 경우"스니핑"공격MD5선호됩니다. 솔직한비밀번호가능하면 항상 피해야합니다. 하지만,MD5db_user_namespace기능. 연결이 SSL 암호화로 보호되면비밀번호SSL 사용에 따라 SSL 윈 토토서 윈 토토이 더 나은 선택 일 수 있지만..
PostgreSQL데이터베이스 암호는 운영 체제 사용자 암호와 별개입니다. 각 데이터베이스 사용자의 비밀번호는에 저장됩니다.pg_authid시스템 카탈로그. 비밀번호는 SQL 명령으로 관리 할 수 있습니다PostgreSQL : 문서 : 9.4 : 사설 토토 사이트 만들기및PostgreSQL : 문서 : 9.4 : Alter 사설 토토 사이트, 예 :비밀번호 'Secret'을 사용하여 사용자 foo 생성. 사용자에 대한 비밀번호가 설정되지 않은 경우 저장된 비밀번호는 NULL이고 비밀번호 인증은 해당 사용자에게 항상 실패합니다.
GSSAPIRFC 2743에 정의 된 보안 윈 토토을위한 산업 표준 프로토콜입니다.PostgreSQL지원GSSAPIwithKerberosRFC 1964에 따른 윈 토토GSSAPI이를 지원하는 시스템에 자동 인증 (단일 사인온)을 제공합니다. 인증 자체는 안전하지만 데이터베이스 연결을 통해 전송 된 데이터는 암호화되지 않은 채 전송됩니다.SSL사용됩니다.
GSSAPI 지원을 활성화해야 할 때PostgreSQL건축되었습니다. 보다15 장자세한 내용은
언제GSSAPI용도Kerberos, 형식으로 표준 원칙을 사용합니다ServiceName/hostname@Realm. PostgreSQL 서버는 서버가 사용하는 키 탭에 포함 된 모든 원칙을 수락하지만를 사용하여 클라이언트의 연결을 할 때 올바른 주요 세부 정보를 지정하려면 CARE를 사용해야합니다.krbsrvname연결 매개 변수. (참조섹션 31.1.2.) 설치 기본값을 기본값에서 변경할 수 있습니다Postgres빌드 시간을 사용하여./configure-- with-krb-srvnam =무엇이든. 대부분의 환경 에서이 매개 변수는 변경 될 필요가 없습니다. 일부 Kerberos 구현은 서비스 이름을 대문자로 받아야하는 Microsoft Active Directory와 같은 다른 서비스 이름이 필요할 수 있습니다 (Postgres).
hostname는 서버 시스템의 자격을 갖춘 호스트 이름입니다. 서비스 교장의 영역은 서버 시스템의 선호되는 영역입니다.
고객 교장은PostgreSQL예를 들어 첫 번째 구성 요소로서 데이터베이스 사용자 이름pgusername@realm. 또는 사용자 이름 매핑을 사용하여 주요 이름의 첫 번째 구성 요소에서 데이터베이스 사용자 이름으로 매핑 할 수 있습니다. 기본적으로 클라이언트의 영역은에 의해 확인되지 않습니다.postgresql. Cross Realm 인증이 활성화되어 있고 영역을 확인 해야하는 경우 사용하십시오.KRB_REALM매개 변수 또는 enableInclude_Realm그리고 사용자 이름 매핑을 사용하여 영역을 확인하십시오.
서버 keytab 파일이 읽을 수 있고 (그리고 바람직하게는 읽을 수 있는지 확인하십시오)PostgreSQL서버 계정. (참조PostgreSQL : 문서 : 9.4 : PostgreSQL 무지개 토토 계정.) 키 파일의 위치는에 의해 지정됩니다.KRB_SERVER_KEYFILE구성 매개 변수. 기본값은/usr/local/pgsql/etc/krb5.keytab(또는 모든 디렉토리가Sysconfdir빌드 시간). 보안상의 이유로,에만 별도의 keytab을 사용하는 것이 좋습니다.PostgreSQLSystem keytab 파일에서 권한을 열지 않고 서버
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, Principalfred@example.com연결할 수 있습니다. 또한 교장을 허용하려면fred/users.example.com@example.com,에 설명 된대로 사용자 이름 맵을 사용하십시오.PostgreSQL : 문서 : 9.4 : 토토 결과 이름 맵.
다음 구성 옵션이 지원됩니다GSSAPI:
1으로 설정하면 인증 된 사용자 원금의 영역 이름이 사용자 이름 매핑을 통해 전달되는 시스템 사용자 이름에 포함됩니다 (PostgreSQL : 문서 : 9.4 : 토토 결과 이름 맵). 그렇지 않으면 권장되는 구성입니다. 그렇지 않으면 다른 영역의 사용자 이름으로 사용자를 구별하는 것은 불가능합니다. 이 매개 변수의 기본값은 0이지만 (시스템 사용자 이름에 영역을 포함하지 않음) 향후 버전에서 1으로 변경 될 수 있습니다.PostgreSQL. 사용자는 업그레이드 할 때 문제를 피하기 위해 명시 적으로 설정할 수 있습니다.
시스템과 데이터베이스 사용자 이름간에 매핑 할 수 있습니다. 보다PostgreSQL : 문서 : 9.4 : 토토 결과 이름 맵자세한 내용. gssapi/kerberos 교장의 경우username@example.com(또는 덜 일반적으로username/hostbased@example.com), 매핑에 사용되는 기본 사용자 이름은입니다.사용자 이름(또는사용자 이름/호스트 기반, 각각),Include_Realm1으로 설정되었습니다 (권장대로 위에서 참조).username@example.com(또는username/hostbased@example.com)는 매핑시 시스템 사용자 이름으로 간주됩니다.
사용자 원금 이름과 일치하도록 영역을 설정합니다. 이 매개 변수가 설정되면 해당 영역의 사용자 만 허용됩니다. 설정되지 않은 경우 사용자 이름 매핑이 수행 된 경우 모든 영역의 사용자가 연결할 수 있습니다.
SSPIisWindows단일 사인온을 사용한 보안 윈 토토 기술.postgresqlsspi를 사용합니다협상사용되는 모드Kerberos가능하면 자동으로 다시 떨어집니다ntlm다른 경우.SSPI윈 토토은 서버와 클라이언트 모두 실행중인 경우에만 작동합니다Windows21516_21555GSSAPI사용 가능합니다.
사용시Kerberos윈 토토,SSPI같은 방식으로 작동GSSAPI보다섹션 19.3.3자세한 내용.
다음 구성 옵션이 지원됩니다SSPI:
1으로 설정하면 인증 된 사용자 원금의 영역 이름이 사용자 이름 매핑을 통해 전달되는 시스템 사용자 이름에 포함됩니다 (PostgreSQL : 문서 : 9.4 : 토토 결과 이름 맵). 그렇지 않으면 권장되는 구성입니다. 그렇지 않으면 다른 영역의 사용자 이름으로 사용자를 구별하는 것은 불가능합니다. 이 매개 변수의 기본값은 0이지만 (시스템 사용자 이름에 영역을 포함하지 않음) 향후 버전에서 1으로 변경 될 수 있습니다.PostgreSQL. 사용자는 업그레이드 할 때 문제를 피하기 위해 명시 적으로 설정할 수 있습니다.
시스템과 데이터베이스 사용자 이름간에 매핑 할 수 있습니다. 보다PostgreSQL : 문서 : 9.4 : 토토 결과 이름 맵자세한 내용. SSPI/Kerberos 교장의 경우username@example.com(또는 덜 일반적으로username/hostbased@example.com), 매핑에 사용되는 기본 사용자 이름은입니다.사용자 이름(또는사용자 이름/호스트 기반, 각각),Include_Realm1으로 설정되었습니다 (권장대로 위에서 참조).username@example.com(또는username/hostbased@example.com)는 매핑시 시스템 사용자 이름으로 간주됩니다.
사용자 원금 이름과 일치하도록 영역을 설정합니다. 이 매개 변수가 설정되면 해당 영역의 사용자 만 허용됩니다. 설정되지 않은 경우 사용자 이름 매핑이 수행 된 경우 모든 영역의 사용자가 연결할 수 있습니다.
ID 인증 메소드는 ID 서버에서 클라이언트 운영 체제 사용자 이름을 얻고 허용 된 데이터베이스 사용자 이름 (선택적 사용자 이름 매핑)으로 사용하여 작동합니다. 이것은 TCP/IP 연결에서만 지원됩니다.
참고 :로컬 (Non-TCP/IP) 연결에 ID가 지정된 경우 피어 윈 토토 (참조섹션 19.3.6) 대신 사용됩니다.
다음 구성 옵션이 지원됩니다ID:
시스템과 데이터베이스 사용자 이름간에 매핑 할 수 있습니다. 보다PostgreSQL : 문서 : 9.4 : 토토 결과 이름 맵자세한 내용.
the"식별 프로토콜"RFC 1413에 설명되어 있습니다. 사실상 모든 UNIX와 같은 운영 체제는 기본적으로 TCP 포트 113에서 청취하는 ID 서버와 함께 제공됩니다. ID 서버의 기본 기능은와 같은 질문에 답하는 것입니다."포트 밖으로 나가는 연결을 시작한 사용자x내 포트에 연결y? ". 부터PostgreSQL둘 다 알고 있습니다xandy물리적 연결이 설정되면 연결 클라이언트의 호스트에서 ID 서버를 심문 할 수 있으며 주어진 연결에 대해 운영 체제 사용자를 이론적으로 결정할 수 있습니다.
이 절차의 단점은 클라이언트의 무결성에 달려 있다는 것입니다. 클라이언트 시스템이 신뢰할 수 없거나 손상된 경우 공격자는 포트 113에서 거의 모든 프로그램을 실행하고 선택한 사용자 이름을 반환 할 수 있습니다. 따라서이 인증 방법은 각 클라이언트 시스템이 엄격한 제어하에있는 폐쇄 된 네트워크와 데이터베이스 및 시스템 관리자가 긴밀한 연락처로 작동하는 경우에만 적합합니다. 즉, ID 서버를 실행하는 컴퓨터를 신뢰해야합니다. 경고에 귀를 기울인다 :
식별 프로토콜은 윈 토토 또는 액세스 제어 프로토콜로 의도되지 않습니다. |
||
--RFC 1413 |
일부 ID 서버에는 원산지 관리자 만 알고있는 키를 사용하여 반환 된 사용자 이름을 암호화하는 비표준 옵션이 있습니다. 이 옵션필수ident 서버를 사용할 때 사용하십시오PostgreSQL이후PostgreSQL실제 사용자 이름을 결정하기 위해 반환 된 문자열을 해독하는 방법이 없습니다.
피어 인증 방법은 커널에서 클라이언트 운영 체제 사용자 이름을 얻고 허용 된 데이터베이스 사용자 이름 (선택적 사용자 이름 매핑)으로 사용하여 작동합니다. 이 방법은 로컬 연결에서만 지원됩니다.
다음 구성 옵션이 지원됩니다피어:
시스템과 데이터베이스 사용자 이름간에 매핑 할 수 있습니다. 보다PostgreSQL : 문서 : 9.4 : 토토 결과 이름 맵자세한 내용.
피어 인증은 운영 체제에서만 사용할 수 있습니다getPeereid ()
함수,SO_PEERCRED소켓 매개 변수 또는 유사한 메커니즘. 현재 포함Linux, 대부분의 풍미BSD포함OS X및Solaris.
이 윈 토토 방법은와 유사하게 작동합니다.비밀번호LDAP를 암호 검증 방법으로 사용하는 것을 제외하고. LDAP는 사용자 이름/비밀번호 쌍을 검증하는 데만 사용됩니다. 따라서 LDAP를 인증에 사용하기 전에 사용자는 이미 데이터베이스에 존재해야합니다.
LDAP 인증은 두 가지 모드로 작동 할 수 있습니다. 단순 바인드 모드를 호출하는 첫 번째 모드에서 서버는로 구성된 Distinguished Name에 바인딩됩니다.접두사 사용자 이름 접미사. 일반적으로prefix매개 변수는 지정하는 데 사용됩니다CN =또는도메인\활성 디렉토리 환경에서.접미사비활성 디렉토리 환경에서 DN의 나머지 부분을 지정하는 데 사용됩니다.
Search+Bind 모드를 호출하는 두 번째 모드에서 서버는 먼저 고정 된 사용자 이름과 비밀번호를 사용하여 LDAP 디렉토리에 바인딩합니다.ldapbinddn및ldapbindpasswd, 데이터베이스에 로그인하려는 사용자를 검색합니다. 사용자와 암호가 구성되지 않으면 익명 바인드가 디렉토리로 시도됩니다. 검색은 하위 트리를 통해 수행됩니다.ldapbasednldapsearchattribute. 이 검색에서 사용자가 발견되면 서버는 클라이언트가 지정된 암호를 사용 하여이 사용자로 디렉토리를 연결 해제하고 다시 바인딩하여 로그인이 올바른지 확인합니다. 이 모드는 APACHE MOD_AUTHNZ_LDAP 및 PAM_LDAP와 같은 다른 소프트웨어에서 LDAP 인증 체계에서 사용하는 모드와 동일합니다. 이 방법은 사용자 객체가 디렉토리에있는 위치에서 훨씬 더 많은 유연성을 허용하지만 LDAP 서버에 대한 두 가지 별도의 연결이 이루어집니다..
다음 구성 옵션은 두 모드 모두에서 사용됩니다.
연결할 LDAP 서버의 이름 또는 IP 주소. 여러 서버를 지정하여 공간으로 구분할 수 있습니다.
LDAP 서버의 포트 번호를 연결합니다. 포트가 지정되지 않으면 LDAP 라이브러리의 기본 포트 설정이 사용됩니다.
PostgreSQL과 LDAP 서버를 연결하려면 1로 설정하여 TLS 암호화를 사용합니다. 이것은 LDAP 서버로의 트래픽을 암호화합니다. SSL을 사용하지 않는 한 클라이언트에 대한 연결은 여전히 암호화되지 않습니다..
다음 옵션은 간단한 바인드 모드에서만 사용됩니다 :
간단한 바인드 인증을 수행 할 때 DN을 바인딩 할 때 사용자 이름으로 전제하는 문자열.
간단한 바인드 인증을 수행 할 때 DN을 바인딩 할 때 사용자 이름에 추가 할 문자열.
다음 옵션은 검색+바인드 모드에서만 사용됩니다 :
루트 DN 검색+바인드 인증을 수행 할 때 사용자 검색을 시작하려면
검색+바인드 인증을 수행 할 때 검색을 수행하기 위해 디렉토리에 바인딩 할 사용자의 DN.
검색+바인드 인증을 수행 할 때 검색을 수행하기 위해 사용자가 디렉토리에 바인딩하는 비밀번호.
검색+바인드 인증을 수행 할 때 검색에서 사용자 이름과 일치하는 속성. 속성이 지정되지 않은 경우uid속성이 사용됩니다.
RFC 4516 LDAP URL. 이것은 다른 LDAP 옵션 중 일부를보다 작고 표준적인 형태로 작성하는 대안적인 방법입니다. 형식은
ldap : //호스트[:포트]/기반[? [속성] [? [스코프]]]
스코프베이스, ONE, sub, 일반적으로 후자. 하나의 속성 만 사용되며 필터 및 확장과 같은 표준 LDAP URL의 다른 구성 요소는 지원되지 않습니다.
비인형 바인드의 경우ldapbinddnandldapbindpasswd별도의 옵션으로 지정해야합니다.
암호화 된 LDAP 연결을 사용하려면ldaptls옵션을 사용해야합니다ldapurl. 그만큼LDAPSURL 구성표 (Direct SSL Connection)가 지원되지 않습니다.
LDAP URL은 현재 Windows가 아닌 OpenLDAP에서만 지원됩니다.
검색+바인드 옵션과 간단한 바인드에 대한 구성 옵션을 혼합하는 오류입니다.
간단한 바인드 LDAP 구성의 예는 다음과 같습니다.
호스트 ... ldap ldapserver = ldap.example.net ldapprefix = "cn ="ldapsuffix = ", dc = example, dc = net"
데이터베이스 서버에 데이터베이스 사용자로 연결되는 경우대소점요청됩니다. PostgreSQL은 DN을 사용하여 LDAP 서버에 바인딩하려고 시도합니다CN = NODUSER, DC = 예제, DC = NET및 클라이언트가 제공 한 비밀번호. 해당 연결이 성공하면 데이터베이스 액세스가 승인됩니다.
검색+바인드 구성의 예는 다음과 같습니다.
호스트 ... ldap ldapserver = ldap.example.net ldapbasedn = "dc = example, dc = net"ldapsearchattribute = uid
데이터베이스 서버에 데이터베이스 사용자로 연결되는 경우대소점요청됩니다. PostgreSQL은 익명으로 바인딩하려고합니다 (이후ldapbinddn지정되지 않음) LDAP 서버를 위해 검색을 수행하십시오(uid = sysuers)지정된 기본 DN 아래. 항목이 발견되면 해당 발견 된 정보와 클라이언트가 제공하는 비밀번호를 사용하여 바인딩하려고 시도합니다. 두 번째 연결이 성공하면 데이터베이스 액세스가 부여됩니다.
URL로 작성된 동일한 검색+바인드 구성이 있습니다 :
host ... ldap ldapurl = "ldap : //ldap.example.net/dc=example ,dc=net? uid? sub"
LDAP에 대한 인증을 지원하는 다른 소프트웨어는 동일한 URL 형식을 사용하므로 구성을 더 쉽게 공유 할 수 있습니다..
팁 :LDAP는 종종 쉼표와 공간을 사용하여 DN의 다른 부분을 분리하기 때문에 종종 예제와 같이 LDAP 옵션을 구성 할 때 이중 인용 매개 변수 값을 사용해야합니다.
이 윈 토토 방법은와 유사하게 작동합니다.비밀번호반경을 암호 검증 방법으로 사용한다는 점을 제외하고. 반경은 사용자 이름/비밀번호 쌍을 검증하는 데만 사용됩니다. 따라서 RADIUS를 인증에 사용하기 전에 사용자는 이미 데이터베이스에 존재해야합니다.
RADIUS 윈 토토을 사용하면 액세스 요청 메시지가 구성된 RADIUS 서버로 전송됩니다. 이 요청은 유형입니다윈 토토 만, 그리고에 대한 매개 변수 포함사용자 이름, 비밀번호(암호화) 및NAS 식별자. 요청은 서버와 공유되는 비밀을 사용하여 암호화됩니다. Radius Server는이 서버에 중 하나를 사용하여 응답합니다.액세스 허가또는액세스 거부. 반경 회계에 대한 지원이 없습니다.
반경에 대해 다음 구성 옵션이 지원됩니다.
RADIUS 서버의 이름 또는 IP 주소를 연결합니다. 이 매개 변수가 필요합니다.
RADIUS 서버와 안전하게 대화 할 때 사용되는 공유 비밀. PostgreSQL 및 Radius 서버에서 정확히 동일한 값을 가져야합니다. 이것은 최소 16 자 이상의 문자열 인 것이 좋습니다. 이 매개 변수가 필요합니다.
참고 :사용 된 암호화 벡터는 암호화 적으로 만 강력합니다.PostgreSQL37157_37186OpenSSL. 다른 경우, 반경 서버로의 전송은 난독 화 된 것으로 간주되어야하며, 안전하지 않은 채로만 외부 보안 조치를 적용해야합니다.
RADIUS 서버의 포트 번호를 연결합니다. 포트가 지정되지 않은 경우 기본 포트1812사용됩니다.
NAS 식별자반경 요청에서. 이 매개 변수는 예를 들어 사용자가 인증하려고 시도하는 데이터베이스 사용자를 식별하는 두 번째 매개 변수로 사용할 수 있으며, 이는 RADIUS 서버에서 정책 일치에 사용할 수 있습니다. 식별자가 지정되지 않은 경우 기본값PostgreSQL사용됩니다.
이 인증 방법은 SSL 클라이언트 인증서를 사용하여 인증을 수행합니다. 따라서 SSL 연결에만 사용할 수 있습니다. 이 인증 방법을 사용할 때 서버는 클라이언트가 유효한 인증서를 제공해야합니다. 비밀번호 프롬프트는 클라이언트에게 전송되지 않습니다. 그만큼CN(공통 이름) 인증서의 속성은 요청 된 데이터베이스 사용자 이름과 비교되며 일치하는 경우 로그인이 허용됩니다. 사용자 이름 매핑을 사용하여 허용CN데이터베이스 사용자 이름과 다르려면.
SSL 인증서 인증에 대해 다음 구성 옵션이 지원됩니다.
시스템과 데이터베이스 사용자 이름간에 매핑 할 수 있습니다. 보다PostgreSQL : 문서 : 9.4 : 토토 결과 이름 맵자세한 내용.
이 윈 토토 방법은와 유사하게 작동합니다.비밀번호PAM (Pluggable Authentication Modules)을 인증 메커니즘으로 사용한다는 점을 제외하고. 기본 팸 서비스 이름은입니다.PostgreSQL. PAM은 사용자 이름/비밀번호 쌍을 검증하는 데만 사용됩니다. 따라서 PAM을 인증에 사용하기 전에 사용자는 이미 데이터베이스에 존재해야합니다. Pam에 대한 자세한 내용은를 읽으십시오.Linux-Pam페이지.
PAM에 대해 다음 구성 옵션이 지원됩니다.
PAM 서비스 이름.
참고 :PAM이 읽기 위해 설정된 경우/etc/shadow, PostgreSQL 서버가 뿌리가 아닌 사용자가 시작하여 인증이 실패합니다. 그러나 PAM이 LDAP 또는 기타 인증 방법을 사용하도록 구성된 경우 문제가 아닙니다.