이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 39.5. 롤 토토 및 특권버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

33.4. 토토 결과 및 특권

다음에 의한 쿼리 재작성으로 인해PostgreSQL토토 결과 시스템, 기타 테이블/뷰 원래 쿼리에 사용된 것보다 액세스됩니다. 업데이트 시 토토 결과이 사용되며 여기에는 테이블에 대한 쓰기 액세스가 포함될 수 있습니다.

재작성 토토 결과에는 별도의 소유자가 없습니다. 소유자는 관계(테이블 또는 뷰)는 자동으로 해당 항목의 소유자가 됩니다. 이에 대해 정의된 토토 결과을 다시 작성합니다. 그만큼PostgreSQL토토 결과 시스템이 동작을 변경합니다. 기본 액세스 제어 시스템의. 사용되는 관계 토토 결과 소유자의 권한과 비교하여 토토 결과을 확인하려면 토토 결과을 호출하는 사용자가 아닙니다. 즉, 사용자는 단지 그가 명명한 테이블/뷰에 필요한 권한 그의 질문에 명시적으로.

예: 사용자는 다음 중 일부가 포함된 전화번호 목록을 가지고 있습니다. 그것들은 비공개이고 나머지는 장관의 관심 사항입니다. 사무실. 그는 다음을 구성할 수 있습니다:

CREATE TABLEphone_data(사람 문자, 전화 문자, 개인 부울);
전화번호 보기를 AS로 생성
    비공개가 아닌 전화_데이터에서 사람, 전화를 선택하세요.
비서에게 전화번호에 대한 선택 부여;

그 사람(및 데이터베이스 수퍼유저) 외에는 누구도 접근할 수 없습니다.phone_data테이블. 하지만 그 때문에부여, 비서는 다음을 실행할 수 있습니다.선택전화_번호보기. 토토 결과 시스템이 다시 작성됩니다 그만큼선택from전화_번호으로선택fromphone_data그리고 다음 항목만 해당하는 제한을 추가합니다.비공개거짓입니다. 사용자는 다음과 같습니다. 소유자전화_번호따라서 토토 결과의 소유자, 읽기 액세스 권한phone_data이제 그의 권한에 대해 확인됩니다. 쿼리가 허용됩니다. 접속 확인전화_번호또한 수행되지만 이것이 완료되었습니다. 호출하는 사용자에 대해 반대하므로 사용자와 사용자 외에는 아무도 없습니다. 비서가 사용할 수 있어요.

권한은 토토 결과별로 확인됩니다. 그래서 비서는 현재 공중전화번호를 볼 수 있는 사람은 나뿐이다. 하지만 비서가 다른 보기를 설정하고 해당 보기에 대한 액세스 권한을 부여할 수 있습니다. 대중. 그러면 누구든지 볼 수 있습니다.전화_번호비서의 관점을 통한 데이터. 비서가 할 수 없는 일은 직접적으로 뷰를 생성하는 것입니다. 액세스phone_data. (실제로 그는 그럴 수 있다. 하지만 실행 중에는 모든 액세스가 거부되므로 작동하지 않습니다. 권한 확인.) 그리고 사용자가 알게 되자마자 비서가 열었다.전화_번호보기, 그는 자신의 액세스 권한을 취소할 수 있습니다. 즉시, 비서의 견해는 실패할 것이다.

이 토토 결과별 확인은 보안이라고 생각할 수도 있습니다. 구멍이지만 실제로는 그렇지 않습니다. 하지만 이 방법으로 작동하지 않으면 비서는 다음과 같은 열로 테이블을 설정할 수 있습니다.전화_번호그리고 거기에 데이터를 복사하세요 하루에 한 번. 그러면 그것은 자신의 데이터이고 그는 다음에 대한 액세스 권한을 부여할 수 있습니다. 그가 원하는 모든 사람. 에이그랜트명령 수단,"나는 당신을 신뢰합니다". 만약 누군가 당신이 신뢰는 위의 일을 합니다. 이제 다시 생각해 볼 시간입니다. 사용취소.

이 메커니즘은 업데이트 토토 결과에도 작동합니다. 의 예에서는 이전 섹션에서는 예제의 테이블 소유자입니다. 데이터베이스가 권한을 부여할 수 있음선택, 삽입, 업데이트삭제신발끈다른 사람에게만 볼 수 있음선택켜짐신발끈_로그. 작성하는 토토 결과 작업 로그 항목은 계속 성공적으로 실행되며 다른 항목은 사용자는 로그 항목을 볼 수 있습니다. 하지만 그는 가짜를 만들 수 없습니다 항목을 조작하거나 기존 항목을 제거할 수도 없습니다.