programing

오라클에서 dbms_lock에 대한 실행을 허용하는 방법은 무엇입니까?

muds 2023. 8. 29. 21:01
반응형

오라클에서 dbms_lock에 대한 실행을 허용하는 방법은 무엇입니까?

사용자 usr1의 dbms_lock.sleep 프로시저를 사용해야 합니다.sys로 로그인할 수 없지만 "모든 개체 권한 부여" 권한이 있는 사용자 usr2의 암호가 있습니다.그러나 usr2로 로그인하여 발급하려고 할 때

grant execute on sys.dbms_lock to usr1

ORA-01031 "불충분한 권한" 예외가 발생했습니다.다른 사용자의 테스트 패키지에서도 동일하게 작동합니다.시스템 패키지가 특별하게 취급됩니까, 아니면 제가 누락한 것이 있습니까?

시스템 패키지는 초기화 매개 변수 값에 따라 특수하게 처리됩니다.O7_DICTIONARY_ACCESSIBILITY그렇다면FALSEOracle 9i 이후의 기본값입니다.ANY권한이 데이터 사전에 적용되지 않습니다.설명서에서는 이를 '사전 보호'라고 합니다.

보안 가이드에서 찾을 수 있는 가장 가까운 은 표를 로 들 뿐입니다.

그러나 Oracle 지원 노트 174753.1은 사전 보호가 다음을 대체한다고 명시적으로 명시하고 있습니다.grant any object privilege저는 그것을 인용하는 것이 허용되지 않지만, 그것은 당신이 보고 있는 것을 설명합니다. 만약 당신이 그것에 접근할 수 있다면 그것은 찾을 가치가 있을 것입니다.

그래서, 유일한 방법은usr2할 수 있는grant execute on sys.dbms_lock to usr1DBA가 수행해야 하는 작업입니다.grant execute on sys.dbms_lock to usr2 with grant option.

Ben의 말처럼 DBA에게 다음 작업을 수행할 수 있는 권한을 부여해야 합니다.usr1직접 또는 추가with grant option에게 주어진 특권에.usr2혹은 가지고 있습니다.usr2래퍼 프로시저 만들기dbms_lock호출하고 에 대한 권한을 부여합니다.usr1.

SYS가 DBA 역할을 부여받지 않았거나 GRANT ANY OBJECT 권한이 없는 처럼 들립니다.설명서에서 인용하기

개체 권한을 부여하려면 개체를 소유해야 합니다. 또는 개체의 소유자가 GRANT OPTION을 사용하여 개체 권한을 부여했거나 GRANT ANY OBJECT PRIVITY 시스템 권한을 부여받아야 합니다.GRANT ANY OBJECT Privilege가 있는 경우 개체 소유자가 동일한 개체 권한을 부여할 수 있는 경우에만 개체 권한을 부여할 수 있습니다.

이는 다음에 대한 실행을 허용할 수 없음을 의미합니다.dbms_lock왜냐하면 SYS는 그렇게 할 수 없었을 것이기 때문입니다.

설치SYS에 DBA 역할이 자동으로 부여되므로 누군가가 이 역할을 변경했거나 DBA 역할을 가진 다른 사용자를 생성했을 수 있습니다.

두 사용자만 액세스할 수 있는 경우 어느 쪽이든 DBA를 참여시켜야 합니다.필요한 패키지에 대한 실행 권한을 필요한 사용자에게 부여하도록 요청합니다.그들이 당신이 당신의 일을 하기 위해 필요한 패키지에 대해 당신에게 실행을 허락하지 않는 충분한 이유를 제공하는 것은 그들에게 달려 있습니다.

전체 액세스 권한을 얻을 수 없는 경우dbms_lock항상 다른 사용자에서 랩하는 프로시저를 만들 수 있습니다.dbms_lock.sleep필요한 경우에만 해당 절차에 대한 실행 권한을 부여합니다.

언급URL : https://stackoverflow.com/questions/13403533/how-to-grant-execute-on-dbms-lock-in-oracle

반응형