두 가지 기능에 대해서만 액세스 권한이 있어야하는 사용자가 있으므로 그에게 부여했습니다.
REVOKE ALL ON FUNCTION some_func(firstid INT) FROM PUBLIC;
GRANT EXECUTE ON FUNCTION some_func(firstid INT) TO some_user;
하지만 이상한 오류가 발생합니다.
42501: permission denied for relation some_table
내 기능에 액세스하려고 할 때 :
SELECT * FROM offers_get(0);
내 기능은 다음과 같습니다.
CREATE OR REPLACE FUNCTION public.some_func(firstid integer)
RETURNS TABLE(/* something */)
LANGUAGE plpgsql
AS $function$
DECLARE
/* something */
BEGIN
/* some other logic */
RETURN QUERY SELECT * FROM some_table;
END;
$function$
그렇다면 관련 테이블에 대한 액세스 권한이 부여되지 않았습니까? 함수 실행에 대해서만 액세스 권한을 부여하는 방법은 무엇입니까?
를 사용하여 함수를 정의하려고합니다 SECURITY DEFINER
( 문서 참조 ).
기본적으로 Postgres는 정의자가 아닌 호출자의 권한을 사용합니다.
CREATE OR REPLACE FUNCTION public.some_func(firstid integer)
RETURNS TABLE(/* something */)
LANGUAGE plpgsql
SECURITY DEFINER
. . .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다