이 문서는 지원되지 않는 버전의 PostgreSQL 용입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다현재버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

50.1. 유효성 검사기 토토 핫 안전하게 설계#

경고

유효성 검사기 토토 핫 구현하기 전에이 섹션 전체를 읽고 이해합니다. 오작동하는 유효성 검사기는 잘못된 보안 감각으로 인해 인증이 전혀없는 것보다 더 나쁩니다. 그리고 다른 OAUTH 생태계에 대한 공격에 기여할 수 있기 때문에.

50.1.1. 유효성 검사기 책임#

다른 토토 핫은 토큰 검증에 매우 다른 접근 방식을 취할 수 있지만 구현은 일반적으로 세 가지 별도의 작업을 수행해야합니다.

토큰 검증

유효성 검사기는 먼저 제시된 토큰이 실제로 클라이언트 인증에 사용하기위한 유효한 베어러 토큰인지 확인해야합니다. 이를 수행하는 올바른 방법은 공급자에 따라 다르지만 일반적으로 토큰이 신뢰할 수있는 당사자 (오프라인 유효성 검사)에 의해 토큰이 만들어 졌음을 증명하기 위해 암호화 작업을 포함하여 신뢰할 수있는 당사자에게 토큰을 제시하여 귀하를 위해 유효성 검사를 수행 할 수 있도록하십시오.

온라인 검증, 일반적으로 구현Oauth 토큰 내성, 유효성 검사기 토토 핫의 단계가 적고 도난 당하거나 오해가 발생한 경우 토큰의 중앙 취소를 허용합니다. 그러나 토토 핫은 인증 시도 당 하나 이상의 네트워크 호출을해야합니다 (모두 구성된 내에서 완료해야합니다Authentication_Timeout). 또한 제공자는 외부 리소스 서버에서 사용할 내성 엔드 포인트를 제공하지 않을 수 있습니다.

오프라인 유효성 검사는 훨씬 더 관련되어 있으며, 일반적으로 유효성 검사기가 제공자에 대한 신뢰할 수있는 서명 키 목록을 유지하고 내용과 함께 토큰의 암호화 서명을 확인해야합니다. 구현은 발행자의 확인 ( "이 토큰은 어디에 있습니까?"), 청중 ( "이 토큰은 누구입니까?") 및 유효성 기간 ( "언제이 토큰을 사용할 수 있습니까?")를 포함하여 제공자의 서신 지침을 따라야합니다. 토토 핫과 제공자 사이에 통신이 없기 때문에이 방법을 사용하여 토큰을 중앙에서 취소 할 수 없습니다. 오프라인 유효성 검사기 구현은 토큰의 유효성 기간의 최대 길이에 제한을 제한 할 수 있습니다.

토큰을 검증 할 수없는 경우 토토 핫이 즉시 실패해야합니다. 신뢰할 수있는 당사자가 소지자 토큰을 발행하지 않은 경우 추가 인증/승인이 무의미합니다.

고객 승인

다음 유효성 검사기는 최종 사용자가 클라이언트에게 자신을 대신하여 서버에 액세스 할 수있는 권한을 부여해야합니다. 여기에는 일반적으로 토큰에 할당 된 스코프를 확인하여 현재 HBA 매개 변수에 대한 데이터베이스 액세스를 포함하는지 확인하는 것이 포함됩니다..

이 단계의 목적은 OAUTH 클라이언트가 허위 척 하에서 토큰을 얻지 못하도록하는 것입니다. 유효성 검사기가 데이터베이스 액세스를 커버하는 스코프를 전달하기 위해 모든 토큰이 필요한 경우, 제공자는 사용자에게 흐름 중에 해당 액세스 권한을 부여하도록 크게 프롬프트해야합니다. 이를 통해 클라이언트가 자격 증명을 사용하여 데이터베이스에 연결하지 않아야하는 경우 요청을 거부 할 수 있습니다.

배포 된 아키텍처에 대한 대역 외에 지식을 사용하여 명시 적 범위없이 클라이언트 승인을 설정할 수는 있지만,이를 수행하면 루프에서 사용자를 제거하여 배치 실수를 포착하지 못하게하고 그러한 실수를 조용히 이용할 수 있습니다. 데이터베이스에 대한 액세스는 신뢰할 수있는 클라이언트 만 엄격하게 제한되어야합니다[17]사용자가 추가 범위를 제출하지 않은 경우.

승인이 실패하더라도, 토토 핫은 감사 및 디버깅에 사용하기 위해 토큰에서 인증 정보를 계속 가져 오도록 선택할 수 있습니다..

최종 사용자 인증

마지막으로, 유효성 검사기는 제공자 에게이 정보를 요청하거나 토큰 자체에서이를 추출하여 해당 식별자를 서버로 반환하여 토큰의 사용자 식별자를 결정해야합니다 (이를 통해 HBA 구성을 사용하여 최종 승인 결정을 내립니다). 이 식별자는 세션 내에서를 통해 사용할 수 있습니다.System_USER그리고 서버 로그에 녹음 된 iflog_connections활성화되었습니다.

다른 제공 업체는 최종 사용자에 대한 다양한 인증 정보를 기록 할 수 있습니다. 일반적으로클레임. 제공자는 일반적으로 이러한 청구 중 어느 것이 승인 결정에 사용할 수있을 정도로 신뢰할 수 있고 그렇지 않은지 문서화합니다. (예를 들어, 많은 공급자가 사용자가 디스플레이 이름을 임의로 변경할 수 있기 때문에 최종 사용자의 전체 이름을 인증을위한 식별자로 사용하는 것이 현명하지 않을 것입니다. 궁극적으로 사용하는 청구 (또는 클레임의 조합)가 제공자 구현 및 애플리케이션 요구 사항에 따릅니다..

Usermap Delegation을 활성화하여 익명/가명 로그인이 가능하다는 점에 유의하십시오. 보다섹션 50.1.3.

50.1.2. 일반 코딩 가이드 라인#

토큰 검증을 구현할 때 개발자는 다음을 명심해야합니다.

토큰 기밀

토토 핫은 서버 로그에 토큰 또는 토큰 조각을 작성해서는 안됩니다. 토토 핫이 토큰을 잘못 고려하더라도 마찬가지입니다. 고객이 잘못된 제공 업체와 의사 소통하도록 혼동하는 공격자는 디스크에서이를 (그렇지 않으면 유효한) 토큰을 검색 할 수 없어야합니다.

네트워크를 통해 토큰을 보내는 구현 (예 : 공급자와 함께 온라인 토큰 검증을 수행하기 위해)은 피어를 인증하고 강력한 운송 보안이 사용되고 있는지 확인해야합니다.

로깅

토토 핫이 동일하게 사용할 수 있습니다PostgreSQL : 문서 : 18 : 55.2. 서버 내보고 사설 토토 핫 사이트표준 확장으로서; 그러나 클라이언트에 대한 로그 항목을 방출하기위한 규칙은 연결의 인증 단계에서 미묘하게 다릅니다. 일반적으로 토토 핫은에서 확인 문제를 기록해야합니다.Commerror사용하는 대신 정상적으로 레벨과 반환오류/치명적스택을 풀고, 인증되지 않은 고객에게 정보가 유출되지 않도록하십시오.

인터럽트

토토 핫은 서버가 인증 시간 초과 및 종료 신호를 올바르게 처리 할 수 있도록 신호별로 방해 할 수 있어야합니다.PG_CTL. 예를 들어, 소켓의 호출 차단은 일반적으로 소켓 이벤트와 레이스없이 인터럽트를 모두 처리하는 코드로 대체해야합니다 (참조Waitlatchorsocket (), waiteventsetwait (), et al) 및 장기 루프가 주기적으로 호출해야합니다check_for_interrupts (). 이 지침을 따르지 않으면 반응이없는 백엔드 세션이 발생할 수 있습니다.

테스트

OAUTH 시스템 테스트의 폭은이 문서의 범위를 훨씬 뛰어 넘지 만 최소한 부정적인 테스트는 필수로 간주되어야합니다. 공인 사용자를 허용하는 모듈을 설계하는 것은 사소한 일입니다. 시스템의 요점은 무단 사용자를 막는 것입니다.

Documentation

Validator 구현은 각 최종 사용자에 대해 서버에보고 된 인증 된 ID의 내용과 형식을 문서화해야합니다. DBA는이 정보를 사용하여 pg_ident 맵을 구성해야 할 수 있기 때문입니다. (예 : 이메일 주소입니까? 조직 ID 번호입니까? UUID?) 토토 핫 사용하는 것이 안전한지 여부를 문서화해야합니다.delegate_ident_mapping = 1모드, 그리고 그렇게하려면 추가 구성이 필요한 추가 구성.

50.1.3. 사용자 승인 (Usermap Delegation)#

유효성 검사 토토 핫의 표준 전달 가능한 표준은 사용자 식별자이며 서버가 구성된 모든 구성과 비교합니다.PostgreSQL : 문서매핑최종 사용자가 연결 권한이 있는지 확인하십시오. 그러나 OAUTH 자체는 승인 프레임 워크이며 토큰은 사용자 권한에 대한 정보를 전달할 수 있습니다. 예를 들어, 토큰은 사용자가 속한 조직 그룹과 관련이 있거나 사용자가 가정 할 수있는 역할을 나열하고 모든 서버에 대한 지식을 로컬 사용에 대한 지식을 바람직하지 않을 수 있습니다..

사용자 이름 매핑을 완전히 우회하고 Validator 모듈에 사용자 연결을 승인 할 추가 책임이 있다고 가정하면 HBA를 구성 할 수 있습니다delegate_ident_mapping. 그런 다음이 토토 핫은 토큰 스코프 또는 동등한 방법을 사용하여 사용자가 원하는 역할하에 연결할 수 있는지 여부를 결정할 수 있습니다. 사용자 식별자는 여전히 서버에서 녹음되지만 연결을 계속할지 여부를 결정하는 데 부분적으로 참여하지 않습니다.

이 체계를 사용하면 인증 자체가 선택 사항입니다. 토토 핫이 연결이 승인되었다고보고하는 한 기록 된 사용자 식별자가 전혀 없어도 로그인이 계속됩니다. 이를 통해 데이터베이스에 대한 익명 또는 가명적 액세스를 구현할 수 있습니다. 여기서 타사 제공 업체는 필요한 모든 인증을 수행하지만 서버에 사용자 식별 정보를 제공하지는 않습니다. (일부 제공 업체는 나중에 감사를 위해 대신 기록 할 수있는 익명의 ID 번호를 만들 수 있습니다.)

usermap 대표단은 가장 아키텍처 유연성을 제공하지만 유효성 검사기 토토 핫 연결 권한 부여를위한 단일 실패 지점으로 바꿉니다. 주의해서 사용하십시오.



[17]PostgreSQL서버는 동일한 엔티티에 의해 제어됩니다. 특히 LIBPQ가 지원하는 장치 인증 클라이언트 흐름은 일반적 으로이 막대를 충족하지 않습니다. 공개/신뢰할 수없는 클라이언트가 사용하도록 설계되었으므로