PostgreSQL배트맨 토토 시스템, 기타 테이블/뷰 원래 쿼리에 사용 된 것보다 액세스 할 수 있습니다. 업데이트 사용 배트맨 토토, 여기에는 테이블에 대한 쓰기 액세스가 포함될 수 있습니다.
재 작성 배트맨 토토에는 별도의 소유자가 없습니다. a의 소유자 관계 (표 또는보기)는 자동으로 소유자입니다. 정의 된 배트맨 토토을 다시 작성하십시오. 그만큼PostgreSQL배트맨 토토 시스템은 동작을 변경합니다 기본 액세스 제어 시스템. 사용되는 관계 배트맨 토토 소유자의 권한에 대해 배트맨 토토을 확인하십시오. 배트맨 토토을 호출하는 사용자가 아닙니다. 즉, 사용자는 만 수행한다는 것을 의미합니다 그가 이름을 지정하는 테이블/뷰에 필요한 권한이 필요합니다. 그의 질문.
For example: A user has a list of phone numbers where some of 그것들은 사적이고, 다른 사람들은 비서관에게 관심이 있습니다. 사무실. 그는 다음을 구성 할 수 있습니다.
테이블 Create Phone_Data (Person Text, Phone Text, Private Bool); view phone_number를 만듭니다 개인이 아닌 경우 Phone_Data에서 사람을 선택하십시오. Phone_number에서 Select Grant Select에서 비서에게;
Nobody except him (and the database superusers) can access the phone_data table. But due to the GRANT, the secretary can SELECT from the phone_number view. The rule system will rewrite the SELECT from phone_number into a SELECT from phone_data and add the qualification that only entries where private is false are wanted. Since the user is the owner of phone_number, the read access to phone_data is now checked against his permissions and the query is considered granted. The check for accessing phone_number is also performed, but this is done against the invoking user, so nobody but the user and the secretary can use 그것.
권한은 규칙에 따라 규칙을 확인합니다. 그래서 비서입니다 현재 공중 전화 번호를 볼 수있는 유일한 사람. 하지만 장관은 다른 견해를 설정하고 이에 대한 접근을 허락 할 수 있습니다. 공공의. 그런 다음 누구나 전화를 통해 폰_number 데이터를 볼 수 있습니다 비서관의 견해. 비서가 할 수없는 것은 a를 만드는 것입니다 Phone_data에 직접 액세스하는 것을보십시오 (실제로는 가능하지만 모든 액세스가 거래 중에 거래를 중단하기 때문에 작동하지 않습니다. 권한 점검). 그리고 사용자가 알 수있게 되 자마자 비서관은 자신의 전화 _number 전망을 열었고, 그는 그의 취소 할 수 있습니다. 입장. 비서관의 견해에 대한 모든 접근은 즉시 할 것입니다 실패하다.
Someone might think that this rule by rule checking is a security hole, but in fact it isn't. If this would not work, the secretary could setup a table with the same columns as phone_number and copy the data to there once per day. Then it's his own data and he can grant access to everyone he wants. 에이 GRANT means"I trust you". 누군가 당신은 위의 일을 믿습니다. 이제 생각할 때입니다. 그런 다음 취소.
이 메커니즘은 업데이트 규칙에도 효과적입니다. 에서 이전 섹션의 예, Al 's의 테이블 소유자 데이터베이스는 al. 그러나 shoelace_log에서만 선택하십시오. 규칙 로그 항목을 작성하는 조치는 여전히 성공적으로 실행됩니다. 그리고 Al은 로그 항목을 볼 수있었습니다. 그러나 그는 가짜를 만들 수 없습니다 출품작도 기존의 입력을 조작하거나 제거 할 수 없습니다.
경고 :보조금은 현재 규칙을 포함합니다 허가. 이것은 부여 된 사용자가 규칙을 삭제할 수 있음을 의미합니다. 변경 사항을 수행하고 다시 설치하십시오. 나는 이것이 얻어야한다고 생각한다 빠르게 변경되었습니다.