다음에 의한 쿼리 재작성으로 인해PostgreSQL윈 토토 시스템, 기타 테이블/뷰 원래 쿼리에 사용된 것보다 액세스됩니다. 업데이트 시 윈 토토이 사용되며 여기에는 테이블에 대한 쓰기 액세스가 포함될 수 있습니다.
재작성 윈 토토에는 별도의 소유자가 없습니다. 소유자는 관계(테이블 또는 뷰)는 자동으로 해당 항목의 소유자가 됩니다. 이에 대해 정의된 윈 토토을 다시 작성합니다.PostgreSQL윈 토토 시스템이 동작을 변경합니다. 기본 액세스 제어 시스템의. 사용되는 관계 윈 토토 소유자의 권한에 대해 윈 토토을 확인하려면, 윈 토토을 호출하는 사용자가 아닙니다. 즉, 사용자는 단지 그가 명명한 테이블/뷰에 필요한 권한 그의 질문에 명시적으로.
예: 사용자는 다음 중 일부가 포함된 전화번호 목록을 가지고 있습니다. 그것들은 비공개이고 나머지는 장관의 관심 사항입니다. 사무실. 그는 다음을 구성할 수 있습니다:
CREATE TABLEphone_data(사람 문자, 전화 문자, 개인 부울);
전화번호 보기를 AS로 생성
비공개가 아닌 전화_데이터에서 사람, 전화를 선택하세요.
비서에게 전화번호에 대한 선택 부여;
그 사람(그리고 데이터베이스 수퍼유저) 외에는 누구도 접근할 수 없습니다.phone_data테이블. 하지만 그 때문에부여, 비서는 다음을 실행할 수 있습니다.선택에전화_번호보기. 윈 토토 시스템이 다시 작성됩니다선택from전화_번호으로선택fromphone_data그리고 다음 항목만 해당하는 제한을 추가합니다.비공개거짓입니다. 사용자는 다음과 같습니다. 소유자전화_번호따라서 윈 토토의 소유자, 읽기 액세스 권한phone_data이제 그의 권한에 대해 확인됩니다. 쿼리가 허용됩니다. 접속 확인전화_번호또한 수행되지만 이것이 완료되었습니다. 호출하는 사용자에 대해 반대하므로 사용자와 사용자 외에는 아무도 없습니다. 비서가 사용할 수 있어요.
권한은 윈 토토별로 확인됩니다. 그래서 비서는 현재 공중전화번호를 볼 수 있는 사람은 나뿐이다. 하지만 비서가 다른 보기를 설정하고 해당 보기에 대한 액세스 권한을 부여할 수 있습니다. 대중. 그러면 누구든지 볼 수 있습니다.전화_번호비서의 관점을 통한 데이터. 비서가 할 수 없는 일은 직접적으로 뷰를 생성하는 것입니다. 액세스phone_data. (실제로 그는 그럴 수 있다. 하지만 실행 중에는 모든 액세스가 거부되므로 작동하지 않습니다. 권한 확인.) 그리고 사용자가 알게 되자마자 비서가 열었다.전화_번호보기, 그는 자신의 액세스 권한을 취소할 수 있습니다. 즉시, 비서의 견해는 실패할 것이다.
이 윈 토토별 확인은 보안이라고 생각할 수도 있습니다. 구멍이지만 실제로는 그렇지 않습니다. 하지만 이 방법으로 작동하지 않으면 비서는 다음과 같은 열로 테이블을 설정할 수 있습니다.전화_번호그리고 거기에 데이터를 복사하세요 하루에 한 번. 그러면 그것은 자신의 데이터이고 그는 다음에 대한 액세스 권한을 부여할 수 있습니다. 그가 원하는 모든 사람. 갑그랜트명령 의미한다,"나는 당신을 신뢰합니다". 만약 누군가 당신이 신뢰는 위의 일을 합니다. 이제 다시 생각해 볼 시간입니다. 사용취소.
이 메커니즘은 업데이트 윈 토토에도 작동합니다. 의 예에서는 이전 섹션에서는 예제의 테이블 소유자입니다. 데이터베이스가 권한을 부여할 수 있음선택, 삽입, 업데이트및삭제에신발끈다른 사람에게만 볼 수 있음선택켜짐신발끈_로그. 작성하는 윈 토토 작업 로그 항목은 계속 성공적으로 실행되며 다른 항목은 사용자는 로그 항목을 볼 수 있습니다. 하지만 그는 가짜를 만들 수 없습니다 항목을 조작하거나 기존 항목을 제거할 수도 없습니다.