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

13.5. 스포츠 토토 베트맨 및 권한

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

재작성 스포츠 토토 베트맨에는 별도의 소유자가 없습니다. 소유자는 관계(테이블 또는 뷰)는 자동으로 해당 항목의 소유자가 됩니다. 이에 대해 정의된 스포츠 토토 베트맨을 다시 작성합니다.포스트그레SQL규칙 시스템이 동작을 변경함 기본 액세스 제어 시스템의. 사용되는 관계 규칙 소유자의 권한에 대해 규칙을 확인하려면, 규칙을 호출하는 사용자가 아닙니다. 즉, 사용자는 다음 작업만 수행합니다. 그가 이름을 지정한 테이블/뷰에 대해 필요한 권한이 필요합니다. 그의 질문.

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

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

그 사람(및 데이터베이스 수퍼유저) 외에는 누구도 다음 항목에 접근할 수 없습니다. 전화_데이터 테이블. 그러나 GRANT로 인해 비서는 SELECT를 수행할 수 있습니다. 전화번호 보기에서. 규칙 시스템은 Phone_number에서 SELECT를 Phone_data에서 SELECT로 추가하고 추가합니다. 비공개가 거짓인 항목만 유효하다는 자격 원했다. 사용자가 Phone_number의 소유자이므로 읽기 이제 Phone_data에 대한 액세스가 그의 권한과 비교하여 확인되고 쿼리는 승인된 것으로 간주됩니다. 접근 확인 phone_number도 수행되지만 이는 사용자를 호출하므로 사용자와 비서 외에는 누구도 사용할 수 없습니다. 그것.

권한은 규칙별로 확인됩니다. 그래서 비서는 현재 공중전화번호를 볼 수 있는 사람은 나뿐이다. 하지만 비서가 다른 보기를 설정하고 해당 보기에 대한 액세스 권한을 부여할 수 있습니다. 공개. 그러면 누구나 다음을 통해 전화번호 데이터를 볼 수 있습니다. 비서 보기. 비서가 할 수 없는 일은 Phone_data에 직접 액세스하는 뷰(실제로는 가능하지만 모든 액세스가 트랜잭션을 중단하므로 작동하지 않습니다. 권한 확인). 그리고 사용자가 알아차리자마자 비서는 자신의 전화번호 보기를 열었고 비서는 자신의 전화번호를 취소할 수 있습니다. 액세스. 즉시 비서 보기에 액세스하면 실패하다.

누군가는 규칙 검사에 의한 이 규칙이 다음과 같다고 생각할 수도 있습니다. 보안 허점이 있지만 실제로는 그렇지 않습니다. 이것이 작동하지 않을 경우, 비서는 다음과 같은 열로 테이블을 설정할 수 있습니다. 전화번호를 입력하고 하루에 한 번씩 데이터를 거기에 복사하세요. 그렇다면 그것은 자신의 데이터를 사용하고 원하는 모든 사람에게 액세스 권한을 부여할 수 있습니다. 에이 GRANT는 다음을 의미합니다."나는 당신을 신뢰합니다". 만약 누군가가 당신은 위의 일을 신뢰합니다. 이제 그것에 대해 생각해 볼 시간입니다. 그런 다음 취소하세요.

이 메커니즘은 업데이트 규칙에도 작동합니다. 에서 이전 섹션의 예, Al의 테이블 소유자 데이터베이스는 GRANT SELECT, INSERT, UPDATE 및 DELETE를 수행할 수 있습니다. 신발 끈이 al에게 보입니다. 하지만 shoelace_log에서는 SELECT만 가능합니다. 규칙 로그 항목을 작성하는 작업은 여전히 성공적으로 실행됩니다. 그리고 Al은 로그 항목을 볼 수 있었습니다. 하지만 그는 가짜를 만들 수 없습니다 항목을 조작하거나 기존 항목을 제거할 수도 없습니다.

경고:GRANT ALL에는 현재 RULE이 포함되어 있습니다. 허가. 이는 부여된 사용자가 규칙을 삭제할 수 있음을 의미합니다. 변경 사항을 적용하고 다시 설치하십시오. 내 생각엔 이건 받아야 할 것 같아 빨리 바뀌었어요.