2011-07-18 4 views
0

뷰 B에서 데이터를 선택할 뷰 A가 있습니다. 나는 오직 Peter만이보기 A에서 읽기 전용 액세스를 원하지만보기 B에서는 선택할 수 없기를 바란다. 그래서 나는 그에게보기 A에 SELECT 권리와보기 B에 REFERENCES 권리를 부여합니다. 그것은 아주 잘 작동합니다.테이블, 뷰 및 함수에 대한 액세스 권한

이제 테이블 B에서 데이터를 선택할 함수 A가 있습니다. 그리고 피터가 함수 A를 실행할 수는 있지만 테이블 B에서 데이터를 선택할 수 없도록합니다. 따라서 피터에게 부여하는 것과 동일한 작업을 수행합니다. 기능 A에서 오른쪽으로 EXECUTE을, 표 B에서 오른쪽으로 REFERENCES을 입력하십시오. 그러나 작동 할 수없고 피터가 기능 A를 실행하면 오류 메시지 "ERROR: permission denied for relation TableB"이 발생합니다. 어떻게 작동하지 않습니까?

답변

1

나는 당신이 security definer을 찾고 있다고 생각합니다.

제쳐두고, leaky view problem을주의하십시오. 아직 완전히 수정되지 않았습니다.

+0

감사합니다. 보안 정의자가 내가 찾고있는 것입니다.보기에도 동일한 보안 정의 기능이 있다고 생각합니까? 나는보기에 보안 정의 자에 관해서는 아무것도 찾을 수 없기 때문에 그렇지 않다고 생각합니다. –

+0

보기 권한이 있습니다. 보안 정의자는 기능을위한 것입니다. –

관련 문제