Postgresql 9.2.24 문서 | ||||
---|---|---|---|---|
이전 | up | 37 장. 스포츠 토토 시스템 | 토토 핫 : 문서 : 9.2 : 규칙 및 명령 상태 |
postgresql스포츠 토토 시스템, 기타 테이블/뷰 원래 쿼리에 사용 된 것보다 액세스 할 수 있습니다. 업데이트시 스포츠 토토은 사용되며 테이블에 대한 쓰기 액세스가 포함될 수 있습니다.
재 작성 스포츠 토토에는 별도의 소유자가 없습니다. a의 소유자 관계 (표 또는보기)는 자동으로 소유자입니다. 정의 된 스포츠 토토을 다시 작성하십시오. 그만큼postgresql스포츠 토토 시스템은 동작을 변경합니다 기본 액세스 제어 시스템. 사용되는 관계 스포츠 토토 소유자의 권한에 대해 스포츠 토토을 확인하십시오. 스포츠 토토을 호출하는 사용자가 아닙니다. 이것은 사용자가 필요하다는 것을 의미합니다 그가 이름을 지은 테이블/뷰에 필요한 권한 그의 질문에 명시 적으로.
예 : 사용자는 일부의 전화 번호 목록이 있습니다. 그것들은 사적이고, 다른 사람들은 비서관에게 관심이 있습니다. 사무실. 그는 다음을 구성 할 수 있습니다.
테이블 Create Phone_Data (사람 문자, 전화 텍스트, 개인 부울); view phone_number를 만듭니다 개인 선택, 사례가없는 경우 전화로 전화로 전화로 종료 Phone_data에서; Phone_number에서 Select Grant Select에서 비서에게;
그 (및 데이터베이스 슈퍼 유저)를 제외한 아무도에 액세스 할 수 없습니다.Phone_data테이블. 하지만 때문에grant, 비서는 a를 운영 할 수 있습니다.selectonPhone_number보기. 스포츠 토토 시스템이 다시 작성됩니다 그만큼selectFromPhone_numberatselectFromPhone_data. 사용자는의 소유자이므로Phone_number따라서 스포츠 토토의 소유자, 읽기 액세스phone_data지금입니다 그의 특권에 대해 확인하면 쿼리가 허용됩니다. 그만큼 액세스 점검phone_number도 있습니다 수행되었지만 이것은 호출 사용자에 대해 수행되므로 아무도 그러나 사용자와 비서는 그것을 사용할 수 있습니다.
권한은 스포츠 토토에 따라 스포츠 토토을 확인합니다. 그래서 비서입니다 현재 공중 전화 번호를 볼 수있는 유일한 사람. 하지만 장관은 다른 견해를 설정하고 이에 대한 접근을 허락 할 수 있습니다. 대중. 그런 다음 누구나를 볼 수 있습니다.Phone_number비서의 견해를 통한 데이터. 장관이 할 수없는 것은 직접적인 견해를 만드는 것입니다. 액세스Phone_data. (실제로 그는 할 수 있습니다. 그러나 모든 액세스가 거부되므로 작동하지 않습니다. 권한 수표.) 그리고 사용자가 알 수 있으면 비서관Phone_number보기, 그는 자신의 접근을 취소 할 수 있습니다. 즉시, 모든 접근 비서의 견해는 실패 할 것입니다.
이 스포츠 토토별 검사가 보안이라고 생각할 수도 있습니다. 구멍이지만 실제로는 그렇지 않습니다. 그러나 그것이 이런 식으로 작동하지 않으면 비서관은와 같은 열의 테이블을 설정할 수 있습니다.Phone_number그리고 데이터를 거기에 복사하십시오 하루에 한 번. 그러면 그것은 자신의 데이터이고 그는 액세스 권한을 부여 할 수 있습니다. 그가 원하는 모든 사람. 에이그랜트명령 수단,"나는 당신을 믿습니다". 누군가가 당신이라면 신뢰는 위의 일을합니다. 이제 생각할 때입니다. 사용Revoke.
뷰는의 내용을 숨기는 데 사용될 수 있습니다. 위에 표시된 기술을 사용하는 특정 열은 이 아니라면 보이지 않는 행으로 데이터를 안정적으로 숨기는 데 사용됩니다.Security_Barrier플래그가 설정되었습니다. 을 위한 예를 들어 다음 견해는 안전하지 않습니다.
view phone_number를 만듭니다 전화 _Data에서 전화를 선택하여 전화가 '412%'를 좋아하지 않는 경우;
스포츠 토토 시스템이
다시 작성selectFromPhone_numberatselectFromPhone_data그리고 위치 만 입력하는 자격을 추가전화412로 시작하지 않습니다. 그러나 만약
사용자는 자신의 기능을 만들 수 있지만 어렵지 않습니다.
플래너가 사용자 정의 함수를 실행하도록 설득합니다
이전좋아하지
표현.
예를 들어:
기능 생성 까다 롭습니다 (텍스트, 텍스트)는 bool을 $$로 반환합니다 시작하다 통지 ' % = %', $ 1, $ 2; 진실을 반환하십시오. 끝 $$ 언어 PLPGSQL 비용 0.000000000000000000000001; The Tricky (Person, Phone);에서 * Phone_number에서 *를 선택하십시오.
모든 사람과 전화 번호Phone_data테이블은 A로 인쇄됩니다통지, 플래너는 실행을 선택하기 때문에
저렴한까다로운
함수
더 비싼 전좋아하지
.
사용자가 새로운 기능을 정의하는 것을 방지하더라도
내장 기능은 유사한 공격에 사용할 수 있습니다. (예를 들어,
대부분의 주조 기능에는 오류의 입력 값이 포함됩니다.
그들이 생산하는 메시지.)
유사한 고려 사항이 업데이트 스포츠 토토에 적용됩니다. 예에서 이전 섹션의 예제에서 테이블의 소유자 데이터베이스는 권한을 부여 할 수 있습니다select, 삽입, 업데이트및삭제onShoelace다른 사람을 보지만selectonshoelace_log. 쓰는 스포츠 토토 조치 로그 항목은 여전히 성공적으로 실행되며 기타 사용자는 로그 항목을 볼 수 있습니다. 그러나 그는 가짜를 만들 수 없습니다 출품작도 기존의 입장을 조작하거나 제거 할 수 없었습니다. 이것에서 사례, 스포츠 토토을 전복시킬 가능성은 없습니다. 플래너가 운영 순서를 변경하도록 설득하는 것입니다. 참고 문헌 유일한 스포츠 토토shoelace_log자격이없는 것입니다삽입. 이것은 더 복잡한 경우에 해당되지 않을 수 있습니다 시나리오.
로드 레벨 보안을 제공하기 위해 필요한 경우, 그만큼Security_Barrier속성이 있어야합니다 보기에 적용됩니다. 이것은 악의적으로 선택된 기능을 방지합니다 그리고 조회가 끝날 때까지 운영자가 행에서 호출되는 것을 작업을 마쳤습니다. 예를 들어, 위에 표시된 견해가 있다면 이렇게 만들어지면 안전 할 것입니다 :
(security_barrier)를 사용하여 view phone_number를 만듭니다 전화 _Data에서 전화를 선택하여 전화가 '412%'를 좋아하지 않는 경우;
Security_Barrier보기보다 훨씬 나빠질 수 있습니다 이 옵션없이 생성되었습니다. 일반적으로 피할 방법이 없습니다 이것 : 가능한 가장 빠른 계획은 거부해야합니다. 보안을 타협하십시오. 이러한 이유로이 옵션은 활성화되지 않습니다 기본적으로.
쿼리 플래너는 다룰 때 더 많은 유연성을 가지고 있습니다 부작용이없는 기능. 이러한 기능은 참조됩니다 asLeakProof, 그리고 많은 것을 포함합니다 많은 평등 연산자와 같이 단순하고 일반적으로 사용되는 운영자. 쿼리 플래너는 그러한 기능을 안전하게 평가할 수 있습니다. 쿼리 실행 프로세스의 어느 시점에서나 호출 한 이후 사용자가 보이지 않는 줄에 대한 정보는 유출되지 않습니다. 보이지 않는 행. 대조적으로, 던질 수있는 함수 인수로 수신 된 값 (예 : 하나)에 따라 오류 오버플로 또는 분할의 경우 오류가 발생합니다. 0)은 누출 방지되지 않으며 중요한 것을 제공 할 수 있습니다 보안 전에 적용되는 경우 보이지 않는 행에 대한 정보 보기의 행 필터보기
그만큼Security_Barrier옵션이 의도되었습니다 제한된 의미에서만 안전해야합니다. 보이지 않는 튜플은 가능하지 않은 상태로 전달되지 않습니다 기능. 사용자는 다른 제작 수단이있을 수 있습니다 보이지 않는 데이터에 대한 추론; 예를 들어, 그들은 볼 수 있습니다 쿼리 계획설명또는 측정 보기에 대한 쿼리 시간을 실행하십시오. 악의적 인 공격자가 할 수 있습니다 보이지 않는 데이터의 양에 대해 유추 할 수 있거나 데이터 배포 또는 대부분에 대한 정보를 얻으십시오. 공통 값 (이러한 것들이의 실행 시간에 영향을 줄 수 있으므로 계획; 또는 최적화에도 반영되기 때문에 통계, 계획 선택). 이러한 유형의 "은밀한 경우 채널 "공격은 우려됩니다. 데이터에 전혀 액세스 할 수 있습니다.