| PostgreSQL 9.3.25 문서 | ||||
|---|---|---|---|---|
| 브라운 |3_m |2사설 토토 사이트 색 | | PostgreSQL : 문서 : 9.3 : 사설 토토 시스템 | 38장. 스포츠 토토 시스템 | PostgreSQL : 문서 : 9.3 : 와이즈 토토 및 명령 상태 | |
다음에 의한 쿼리 재작성으로 인해포스트그레SQL스포츠 토토 시스템, 기타 테이블/뷰 원래 쿼리에 사용된 것보다 액세스됩니다. 업데이트 시 스포츠 토토이 사용되며 여기에는 테이블에 대한 쓰기 액세스가 포함될 수 있습니다.
재작성 스포츠 토토에는 별도의 소유자가 없습니다. 소유자는 관계(테이블 또는 뷰)는 자동으로 다시 쓰기의 소유자가 됩니다. 이에 대해 정의된 스포츠 토토입니다.PostgreSQL스포츠 토토 시스템은 다음의 동작을 변경합니다. 기본 액세스 제어 시스템. 다음으로 인해 사용되는 관계 스포츠 토토은 스포츠 토토 소유자가 아닌 스포츠 토토 소유자의 권한을 기준으로 확인됩니다. 사용자가 스포츠 토토을 호출합니다. 즉, 사용자는 명시적으로 이름을 지정한 테이블/뷰에 대해 필요한 권한 그의 질문에.
예: 사용자는 다음 중 일부가 포함된 전화번호 목록을 가지고 있습니다. 그것들은 비공개이고 나머지는 장관의 관심 사항입니다. 사무실. 그는 다음을 구성할 수 있습니다:
CREATE TABLEphone_data(사람 문자, 전화 문자, 개인 부울);
전화번호 보기를 AS로 생성
사람을 선택하고 비공개가 아닌 경우 CASE 그런 다음 전화로 전화를 종료하세요.
전화_데이터에서;
비서에게 전화번호에 대한 선택 부여;
그 사람(및 데이터베이스 수퍼유저) 외에는 누구도 접근할 수 없습니다.phone_data테이블. 하지만 그 때문에그랜트, 비서는 다음을 실행할 수 있습니다.선택에전화_번호보기. 스포츠 토토 시스템은 다음을 다시 작성합니다.선택from전화_번호으로선택fromphone_data. 사용자가 소유자이므로전화_번호그러므로 소유자는 스포츠 토토, 읽기 액세스phone_data이다 이제 그의 권한을 확인하고 쿼리가 허용됩니다. 는 액세스 확인전화_번호또한 수행되지만 이는 호출하는 사용자에 대해 수행되므로 아무도 하지만 사용자와 비서는 사용할 수 있습니다.
권한은 스포츠 토토별로 확인됩니다. 그래서 비서는 이제 공중전화번호를 볼 수 있는 사람은 나뿐이다. 그러나 비서가 다른 보기를 설정하고 해당 보기에 대한 액세스 권한을 부여할 수 있습니다. 공개. 그러면 누구든지 볼 수 있습니다.전화_번호비서의 관점을 통한 데이터. 무엇 비서가 할 수 없는 일은 직접 액세스하는 뷰를 만드는 것입니다.phone_data. (실제로 그는 할 수 있지만 그렇게 될 것입니다. 권한 중에는 모든 액세스가 거부되므로 작동하지 않습니다. 확인합니다.) 그리고 사용자가 알게 되자마자 비서는 그의 열었다전화_번호보기, 그는 할 수 있어요 그의 접근 권한을 취소합니다. 즉시 비서의 견해에 접근 실패할 겁니다.
이 스포츠 토토별 확인은 보안이라고 생각할 수도 있습니다. 구멍이지만 실제로는 그렇지 않습니다. 하지만 이 방법으로 작동하지 않으면 비서는 다음과 같은 열로 테이블을 설정할 수 있습니다.전화_번호그리고 1회에 한 번씩 데이터를 거기에 복사합니다. 일. 그러면 그것은 자신의 데이터가 되며 그는 모든 사람에게 액세스 권한을 부여할 수 있습니다. 원한다. 갑그랜트명령은 다음을 의미합니다."나는 당신을 신뢰합니다". 당신이 신뢰하는 누군가가 그 일을 한다면 위에서 생각한 다음 사용할 시간입니다.취소.
뷰를 사용하여 다음 내용을 숨길 수 있다는 점에 유의하세요. 위에 표시된 기술을 사용하는 특정 열은 보이지 않는 행의 데이터를 안정적으로 숨기는 데 사용됩니다.security_barrier플래그가 설정되었습니다. 에 대한 예를 들어 다음 뷰는 안전하지 않습니다.
CREATE VIEW 전화번호 AS
전화가 '412%'가 아닌 곳에서 전화_데이터에서 사람, 전화를 선택하세요.
스포츠 토토 시스템이 다시 작성되므로 이 보기는 안전해 보일 수 있습니다.
모두선택from전화_번호으로선택fromphone_data그리고 자격을 추가하세요
해당 항목만 해당전화하지 않습니다
412로 시작합니다. 하지만 사용자가 자신의 것을 만들 수 있다면
자신의 기능을 기획자를 설득하는 것은 어렵지 않습니다.
이전에 사용자 정의 함수를 실행합니다.좋아하지 않음식. 예를 들면:
CREATE FUNCTION 까다로운(텍스트, 텍스트) $$로 bool을 반환합니다.
시작
공지 올리기 '% = %', $1, $2;
반환 참;
종료
$$ 언어 plpgsql 비용 0.0000000000000000000001;
SELECT * FROM 전화_번호 WHERE 까다로움(사람, 전화);
모든 사람과 전화번호전화_데이터테이블은 다음과 같이 인쇄됩니다.공지사항, 플래너가 실행을 선택하기 때문입니다.
저렴한까다롭습니다함수
더 비싸기 전에좋아하지 않음.
사용자가 새로운 기능을 정의하는 것을 방해하더라도 내장된
기능은 유사한 공격에 사용될 수 있습니다. (예를 들어 대부분의
캐스팅 함수에는 오류 메시지에 입력 값이 포함됩니다.
그들은 생산합니다.)
업데이트 스포츠 토토에도 비슷한 고려사항이 적용됩니다. 의 예에서는 이전 섹션에서는 예제의 테이블 소유자입니다. 데이터베이스가 권한을 부여할 수 있음선택, 삽입, 업데이트및삭제에신발끈다른 사람에게만 볼 수 있음선택켜짐신발끈_로그. 로그 항목을 작성하는 스포츠 토토 작업 여전히 성공적으로 실행되며 다른 사용자가 볼 수 있습니다. 로그 항목. 하지만 그는 가짜 항목을 만들 수 없으며 그럴 수도 없습니다. 기존 항목을 조작하거나 제거합니다. 이 경우에는 기획자를 설득하여 스포츠 토토을 전복할 가능성 작업 순서를 변경하는 유일한 스포츠 토토은 다음과 같습니다. 참고자료신발끈_로그부적격자입니다삽입. 이는 더 이상 사실이 아닐 수도 있습니다. 복잡한 시나리오.
뷰가 행 수준 보안을 제공해야 하는 경우,security_barrier속성은 다음과 같아야 합니다. 뷰에 적용됩니다. 이는 악의적으로 선택된 기능을 방지하고 뷰가 완료될 때까지 행에서 연산자가 호출되지 않습니다. 그 일. 예를 들어 위에 표시된 뷰가 생성된 경우 이렇게 하면 안전할 것입니다.
(보안 장벽) AS로 전화번호 보기 만들기
전화가 '412%'가 아닌 곳에서 전화_데이터에서 사람, 전화를 선택하세요.
다음으로 생성된 보기security_barrier이 옵션 없이 생성된 보기보다 성능이 훨씬 떨어질 수 있습니다. 에서 일반적으로 이를 피할 수 있는 방법은 없습니다. 가능한 가장 빠른 계획입니다. 보안을 손상시킬 수 있는 경우 거부되어야 합니다. 이런 이유로, 이 옵션은 기본적으로 활성화되어 있지 않습니다.
쿼리 플래너는 다음을 처리할 때 더 많은 유연성을 갖습니다. 부작용이 없는 기능. 그러한 기능을 언급합니다. 와 같이누출방지, 다수의 단순 포함 많은 항등 연산자와 같이 일반적으로 사용되는 연산자입니다. 쿼리 플래너는 언제든지 이러한 기능을 안전하게 평가할 수 있습니다. 행에서 호출하기 때문에 쿼리 실행 프로세스의 포인트 사용자에게 보이지 않으면 정보가 유출되지 않습니다. 보이지 않는 행. 대조적으로, 오류를 던질 수 있는 함수 인수로 받은 값(예: 오버플로 또는 0으로 나누는 경우 오류가 발생합니다) 누출 방지 기능이 없으며 다음에 대한 중요한 정보를 제공할 수 있습니다. 보안 보기의 행 필터 전에 적용된 경우 보이지 않는 행.
다음으로 생성된 뷰도 다음을 사용하여 생성된다는 점을 이해하는 것이 중요합니다.security_barrier옵션은 다음과 같습니다. 보이지 않는 내용이 제한적으로만 안전하다는 점 튜플은 안전하지 않을 수 있는 함수에 전달되지 않습니다. 사용자 보이지 않는 것에 대해 추론할 수 있는 다른 방법이 있을 수도 있습니다. 데이터; 예를 들어, 다음을 사용하여 쿼리 계획을 볼 수 있습니다.설명또는 쿼리 실행 시간을 측정합니다. 보기. 악의적인 공격자가 무언가를 추론할 수 있음 보이지 않는 데이터의 양에 대해 알아보거나 정보를 얻을 수도 있습니다. 데이터 분포 또는 가장 일반적인 값에 대해(이러한 상황이 계획의 실행 시간에 영향을 미칠 수 있습니다. 아니면 심지어 그들은 그렇기 때문에 옵티마이저 통계, 계획 선택에도 반영됩니다. 만약에 이러한 유형의 "비밀 채널" 공격이 우려됩니다. 아마도 데이터에 대한 액세스 권한을 전혀 부여하는 것은 현명하지 못할 것입니다.
| 이전 | 배트맨 토토 : 문서 : 9.3 : 배트맨 토토 9.3.25 문서화 | 다음 |
| 스포츠 토토삽입, 업데이트및삭제 | PostgreSQL : 문서 : 9.3 : 사설 토토 시스템 | 스포츠 토토 및 명령 상태 |