윈 토토 작성

윈 토토 만들기-표에 대한 새 행 수준 보안 윈 토토 정의

시놉시스

윈 토토 작성이름ontable_name[as 허용 | 제한적]
    [all | 선택 | 삽입 | 업데이트 | 삭제  ]
    [ 에게role_name| 공개 | current_role | current_user | session_user [, ...]]
    [사용 ( 사용using_expression)]]
    [check (와 함께check_expression)]

설명

윈 토토 작성명령은 테이블에 대한 새 행 수준 보안 윈 토토을 정의합니다. 표에서로드 레벨 보안을 활성화해야합니다 (사용ALTER 테이블 ... 행 레벨 보안 활성화) 생성 된 윈 토토을 적용하려면

윈 토토은 관련 윈 토토 표현식과 일치하는 행을 선택, 삽입, 업데이트 또는 삭제할 수있는 권한을 부여합니다. 기존 테이블 행은에 지정된 표현에 대해 확인됩니다.사용, 새로운 행을 통해 생성 될 새로운 행삽입또는업데이트with with. A사용표현식은 주어진 행에 대해 true를 반환 한 다음 해당 행이 사용자에게 표시되는 반면 False 또는 NULL이 반환되면 행을 보이지 않습니다. Awith with표현식은 행에 true를 반환 한 다음 해당 행이 삽입되거나 업데이트되고 False 또는 Null이 반환되면 오류가 발생합니다.

for삽입and업데이트진술,with Check표현은 이후에 시행됩니다트리거가 발사되고 실제 데이터 수정이 이루어지기 전에. 따라서 A전 행트리거 삽입 할 데이터를 수정하여 보안 윈 토토 검사 결과에 영향을 미칩니다.with with표현은 다른 제약 조건보다 먼저 시행됩니다.

윈 토토 이름은 테이블 당입니다. 따라서 하나의 윈 토토 이름은 여러 테이블에 사용될 수 있으며 해당 테이블에 적합한 각 테이블에 대한 정의가 있습니다.

윈 토토은 특정 명령 또는 특정 역할에 적용될 수 있습니다. 새로 생성 된 윈 토토의 기본값은 달리 명시되지 않는 한 모든 명령과 역할에 적용한다는 것입니다. 여러 윈 토토이 단일 명령에 적용될 수 있습니다. 자세한 내용은 아래를 참조하십시오.표 281다른 유형의 윈 토토이 특정 명령에 어떻게 적용되는지 요약합니다.

둘 다 가질 수있는 윈 토토의 경우사용andwith withExpressions (alland업데이트), 그렇지 않은 경우with with표현식이 정의 된 다음사용표현식은 어떤 행이 보이는지를 결정하는 데 사용됩니다 (정상사용CASE) 및 어떤 새 행을 추가 할 수 있는지 (with withCASE).

테이블에 대한로드 레벨 보안이 활성화되어 있지만 적용 가능한 윈 토토이 존재하지 않으면 A기본 거부윈 토토이 가정되므로 행이 표시되거나 업데이트되지 않습니다.

매개 변수

이름

생성 될 윈 토토의 이름. 이것은 표에 대한 다른 윈 토토의 이름과 구별되어야합니다.

table_name

표의 이름 (선택적으로 스키마 자격) 윈 토토이 적용됩니다.

허용

윈 토토이 허용 윈 토토으로 작성되어야한다고 지정하십시오. 주어진 쿼리에 적용 가능한 모든 허용 윈 토토은 부울을 사용하여 함께 결합됩니다.또는운영자. 허용 윈 토토을 만들어 관리자는 액세스 할 수있는 일련의 레코드에 추가 할 수 있습니다. 윈 토토은 기본적으로 허용됩니다.

제한적

윈 토토이 제한 윈 토토으로 작성되어야한다고 지정합니다. 주어진 쿼리에 적용 가능한 모든 제한 윈 토토은 부울을 사용하여 함께 결합됩니다.and연산자. 제한 윈 토토을 작성함으로써 관리자는 각 레코드에 대해 모든 제한 윈 토토이 전달되어야하므로 액세스 할 수있는 레코드 세트를 줄일 수 있습니다.

제한 윈 토토을 유용하게 사용하여 해당 액세스를 줄이기 전에 기록에 대한 액세스 권한을 부여하기 위해 적어도 하나의 허용 윈 토토이 필요합니다. 제한 윈 토토 만 존재하면 기록에 액세스 할 수 없습니다. 허용적이고 제한적인 윈 토토이 혼합 될 때, 모든 제한 윈 토토 외에 허용 윈 토토 중 하나 이상이 통과하는 경우에만 기록이 접근 할 수 있습니다..

명령

윈 토토이 적용되는 명령. 유효한 옵션은all, select, 삽입, 업데이트삭제. all기본값입니다. 이들이 적용되는 방법에 대한 세부 사항은 아래를 참조하십시오.

role_name

윈 토토을 적용 할 역할. 기본값은public, 모든 역할에 윈 토토을 적용 할 것입니다.

using_expression

anySQL조건부 표현식 (반환부울). 조건부 표현식에는 집계 또는 창 함수가 포함될 수 없습니다. 이 표현식은로드 레벨 보안이 활성화 된 경우 테이블을 참조하는 쿼리에 추가됩니다. 표현식이 true를 반환하는 행이 보입니다. 표현식이 False 또는 NULL을 반환하는 행은 사용자에게 보이지 않습니다 (Aselect), 수정에 사용할 수 없습니다 (in업데이트또는삭제). 이러한 행은 조용히 억제됩니다. 오류 가보고되지 않습니다.

check_expression

anySQL조건부 표현식 (반환부울). 조건부 표현식에는 집계 또는 창 함수가 포함될 수 없습니다. 이 표현은에서 사용됩니다.삽입and업데이트행 수준 보안이 활성화 된 경우 테이블에 대한 쿼리. 표현식이 TRUE로 평가하는 행만 허용됩니다. 삽입 된 레코드 또는 업데이트로 인한 레코드에 대해 표현식이 False 또는 Null로 평가되면 오류가 발생합니다.check_expression원래 내용이 아닌 Row의 제안 된 새로운 내용에 대해 평가됩니다.

명령 당 윈 토토

all

사용all윈 토토의 경우 명령 유형에 관계없이 모든 명령에 적용됨을 의미합니다. IF anall윈 토토이 존재하고보다 구체적인 윈 토토이 존재합니다.all윈 토토 및보다 구체적인 윈 토토 (또는 윈 토토)이 적용됩니다. 또한,all윈 토토은 쿼리의 선택 측면과 수정 측면 모두에 적용됩니다.사용두 경우에 대한 표현사용표현이 정의되었습니다.

예를 들어, an업데이트발행 된 다음all윈 토토은 무엇에 적용 할 수 있습니다업데이트업데이트 할 행으로 선택할 수 있습니다 (적용사용expression) 및 결과 업데이트 된 행으로 테이블에 추가 될 수 있는지 확인하십시오 (with Check표현, 정의 된 경우사용그렇지 않으면 표현). IF an삽입또는업데이트명령을 통과하지 않는 테이블에 행을 추가하려고 시도합니다all윈 토토with Check표현, 전체 명령이 중단됩니다.

select

사용select윈 토토의 경우select쿼리 및 시간select윈 토토이 정의 된 관계에 대한 권한이 필요합니다. 결과적으로 통과하는 관계의 레코드 만입니다.select윈 토토은 a 중 반환됩니다.select쿼리 및 필요한 쿼리select예 : 권한업데이트, 또한도 허용하는 레코드 만 볼 수 있습니다.select윈 토토. 에이select윈 토토을 가질 수 없음with Check표현, 관계에서 기록이 검색되는 경우에만 적용되므로

삽입

사용삽입윈 토토의 경우에 적용되는 윈 토토을 의미합니다.삽입명령. 이 윈 토토을 통과하지 못하는 행이 삽입되는 행은 윈 토토 위반 오류가 발생하며 전체삽입명령이 중단됩니다.삽입윈 토토을 가질 수 없음사용표현, 레코드가 관계에 추가되는 경우에만 적용되므로

참고삽입with충돌에 대한 업데이트checks삽입윈 토토 'with Check|삽입Path.

업데이트

사용업데이트윈 토토은 그것이 적용될 것임을 의미합니다업데이트, 업데이트 선택공유 선택보조 및 보조 명령충돌에 대한 업데이트조항의삽입명령. 부터업데이트기존 레코드를 가져 와서 새로운 수정 된 레코드로 교체하는 것과 관련이 있습니다.업데이트윈 토토은 모두 A를 수락합니다.사용표현 및 Awith with표현. 그만큼사용표현식을 기록한 표현식업데이트명령은 작동하는 동안,with with표현식은 어떤 수정 된 행이 관계에 다시 저장 될 수 있는지 정의합니다.

업데이트 된 값이 전달되지 않는 행with with표현식으로 인해 오류가 발생하고 전체 명령이 중단됩니다. 만있는 경우사용조항이 지정되어 있으면 해당 조항이 모두 사용됩니다사용andwith with케이스.

일반적으로업데이트명령도 업데이트중인 관계의 열에서 데이터를 읽어야합니다 (예 :여기서절 또는 A반환조항 또는 오른쪽의 표현식SET절). 이 경우select업데이트중인 관계에 대한 권리도 필요하며 적절한select또는all윈 토토이 적용됩니다.업데이트윈 토토. 따라서 사용자는 a를 통해 업데이트되는 행에 액세스해야합니다.select또는all윈 토토은 AN을 통해 행을 업데이트 할 수있는 권한을 부여받는 것 외에도업데이트또는all윈 토토.

언제삽입명령은 보조충돌시 업데이트절인 경우업데이트경로가 가져오고, 업데이트 될 행이 먼저에 대해 확인됩니다사용어떤 표현업데이트윈 토토, 그리고 새로운 업데이트 된 행이에 대해 확인됩니다with with표현. 그러나 독립형과 달리업데이트명령, 기존 행이 전달되지 않으면사용표현, 오류가 발생합니다 (업데이트경로는절대조용히 피하십시오).

삭제

사용삭제윈 토토의 경우에 적용되는 윈 토토을 의미합니다.삭제명령. 이 윈 토토을 통과하는 행만이 A를 볼 수 있습니다.삭제명령. A를 통해 볼 수있는 행이있을 수 있습니다.select삭제할 수없는 것은사용표현삭제윈 토토.

대부분의 경우 a삭제명령은 또한 삭제되는 관계의 열에서 열에서 데이터를 읽어야합니다 (예 : a여기서절 또는 A반환절). 이 경우select관계에 대한 권리도 필요하며 적절한select또는all윈 토토이 적용됩니다삭제윈 토토. 따라서 사용자는 a를 통해 삭제되는 행에 액세스해야합니다.select또는all윈 토토 a를 통해 행을 삭제할 수있는 권한이 부여 된 것 외에도삭제또는all윈 토토.

a삭제윈 토토을 가질 수 없음with with표현식은 관계에서 레코드가 삭제되는 경우에만 적용되므로 확인할 새 행이 없도록합니다..

표 281. 명령 유형에 의해 적용되는 윈 토토

명령 선택/모든 윈 토토 삽입/모든 윈 토토 업데이트/모든 윈 토토 삭제/모든 윈 토토
표현 사용 with with expression 표현 사용 점검 표현 표현 사용
select 기존 행 - - - -
업데이트/공유 선택 기존 행 - 기존 행 - -
삽입 - New Row - - -
삽입 ... 리턴 New Row[a] New Row - - -
업데이트 기존 및 새 행[a] - 기존 행 New Row -
삭제 기존 행[a] - - - 기존 행
분쟁에서 업데이트 기존 및 새로운 행 - 기존 행 New Row -

[A]기존 또는 새 행에 읽기 액세스가 필요한 경우 (예 : A여기서또는반환관계의 열을 나타내는 절).


여러 윈 토토의 적용

다른 명령 유형의 여러 윈 토토이 동일한 명령에 적용되는 경우 (예 :selectand업데이트윈 토토에 적용업데이트명령), 사용자는 두 유형의 권한을 두 가지 유형 (예 : 관계에서 행을 선택할 수있는 권한과 업데이트 권한)이 있어야합니다. 따라서 한 유형의 윈 토토에 대한 표현은를 사용하여 다른 유형의 윈 토토에 대한 표현과 결합됩니다.운영자.

동일한 명령 유형의 여러 윈 토토이 동일한 명령에 적용되면 하나 이상이 있어야합니다.허용관계에 대한 액세스 권한 부여 윈 토토 및 모든제한적윈 토토이 통과해야합니다. 따라서 모든허용윈 토토 표현은를 사용하여 결합됩니다또는, 모든제한적윈 토토 표현은를 사용하여 결합됩니다., 결과는를 사용하여 결합됩니다.and. 없는 경우허용윈 토토, 액세스가 거부됩니다.

여러 윈 토토을 결합 할 목적으로all윈 토토은 다른 유형의 윈 토토이 적용되는 것과 동일한 유형을 갖는 것으로 취급됩니다.

예를 들어,업데이트둘 다 요구하는 명령select업데이트권한, 각 유형의 여러 해당 윈 토토이 있으면 다음과 같이 결합됩니다.

표현제한 선택/모든 윈 토토 1
그리고표현제한적 선택/모든 윈 토토 2
그리고
...
그리고
(표현허용 선택/모든 윈 토토 1
  또는표현허용 선택/모든 윈 토토 2
  또는
  ...
))
그리고표현제한적 업데이트/모든 윈 토토 1
그리고표현제한적 업데이트/모든 윈 토토 2
그리고
...
그리고
(표현허용 업데이트/모든 윈 토토 1
  또는표현허용 업데이트/모든 윈 토토 2
  또는
  ...
)

노트

당신은 윈 토토을 만들거나 변경하기위한 테이블의 소유자 여야합니다.

윈 토토은 데이터베이스의 테이블에 대한 명백한 쿼리에 적용되지만 시스템이 내부 참조 무결성 검사를 수행하거나 제약 조건을 유효성을 수행 할 때는 적용되지 않습니다. 이것은 주어진 값이 존재한다고 결정하는 간접적 인 방법이 있음을 의미합니다. 이에 대한 예는 기본 키이거나 고유 한 제약 조건을 갖는 열에 중복 값을 삽입하려고 시도하는 것입니다. 삽입이 실패하면 사용자는 값이 이미 존재한다고 추론 할 수 있습니다. (이 예제는 윈 토토에 의해 사용자가 볼 수없는 레코드를 삽입하도록 허용된다고 가정합니다.) 다른 예는 사용자가 다른 사람을 참조하는 테이블에 삽입 할 수있는 곳입니다. 존재는 사용자가 참조 테이블에 값을 삽입하여 결정할 수 있으며, 여기서 성공은 참조 테이블에 값이 존재 함을 나타냅니다. 이러한 문제는 신중하게 제작 된 윈 토토을 제작하여 사용자가 레코드를 삽입, 삭제 또는 업데이트 할 수 없으며, 그렇지 않으면 볼 수없는 값을 표시하거나 외부 의미를 가진 키 대신 생성 된 값 (예 : 대리 키)을 사용할 수 있습니다..

일반적으로 시스템은 사용자 쿼리에 나타나는 자격을 갖춘 보안 윈 토토을 사용하여 부과 된 필터 조건을 시행하여 보호 된 데이터를 사용자 정의 된 기능에 부주의하게 노출하지 않도록하기 위해 신뢰할 수 없습니다. 그러나 시스템 (또는 시스템 관리자)에 의해 표시된 기능 및 운영자는LeakProof신뢰할 수있는 것으로 가정되기 때문에 윈 토토 표현 전에 평가 될 수 있습니다.

윈 토토 표현이 사용자의 쿼리에 직접 추가되므로 전체 쿼리를 실행하는 사용자의 권한으로 실행됩니다. 따라서 주어진 윈 토토을 사용하는 사용자는 표현식에서 참조 된 테이블 또는 기능에 액세스 할 수 있어야합니다. 그렇지 않으면 행 수준 보안을 활성화 한 테이블을 쿼리하려고 시도 할 때 단순히 허가 거부 오류를 받게됩니다. 그러나 이것은보기의 작동 방식을 바꾸지 않습니다. 정상적인 쿼리 및 뷰와 마찬가지로 View에서 참조되는 테이블에 대한 권한 점검 및 윈 토토은 뷰 소유자의 권리와 View Owner에 적용되는 윈 토토을 사용합니다..

추가 토론 및 실제 사례는 찾을 수 있습니다PostgreSQL : 문서 : 14 : 5.8. 보안 토토 사이트 추천 행.

호환성

윈 토토 작성isPostgreSQL확장.

수정 제출

문서에 맞지 않는 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면