2014-06-20 3 views
1

특정 테이블에 액세스하지만 동일한 사용자가 동일한 테이블에서 직접 쿼리를 수행하지 못하게하는 저장 프로 시저에 사용자 execute을 부여하려고합니다.저장 프로 시저 테이블 보안

다음은 현재 모델입니다. 사용자 foo은 저장 프로 시저의 소유자입니다. 필요한 모든 테이블에 대해 직접 선택, 삽입, 업데이트 및 삭제 권한이 있습니다. 저장 프로시 저는 AUTHID CURRENT_USER으로 작성되었습니다. Foo은 사용자 bar에 대한 저장 프로 시저에 execute을 부여합니다.

사용자 bar은 위의 보조금을 통해 저장 프로 시저를 호출합니다. 의도적으로 저장 프로 시저의 소스 코드를 변경할 수있는 기능이 없습니다. 역할을 통해 필요한 테이블에 액세스 할 수 있습니다.

지금까지 제대로 작동합니다. 이제 우리는 새로운 요구 사항을 갖게되었습니다. 저장 프로 시저를 실행할 수 있지만 SQLPlus, JDBC, ODBC 등을 통해 테이블에 대해 직접 쿼리 할 수없는 새 사용자를 만들어야합니다.

이를 구현하는 확실한 방법은 없습니다. 모든 제안을 환영합니다.

답변

3

foo이 소유하는 절차가 기본값 인 authid definer으로 정의 된 경우 호출자는 저장 프로 시저를 실행하기 위해 기본 테이블에 대한 권한이 필요하지 않습니다. 일반적으로 Oracle에서 특권을 관리하는 방법입니다. authid current_user 저장 프로 시저를 사용하는 것이 드문 경우입니다. 호출자가 기본 테이블의 권한 외에도 저장 프로 시저에 대한 권한을 갖도록하기 때문입니다.

기존 절차를 수정하여 권한있는 사용자 정의 저장 프로 시저로 만들거나 새 사용자에게 부여 할 수있는 별도의 정의 자 권한 저장 프로 시저 세트를 만들어야합니다.