2014-11-18 3 views
0

테이블 이름을 emp로 만들고 emp 테이블을 업데이트 할 권한이있는 역할을 만들고 싶습니다. 불가능하다고 말하는 웹 페이지를 발견했습니다. (이해함) 또한 다음 코드를 시도해 보겠습니다.Oracle 데이터베이스에서 역할에 권한 부여를 부여하십시오.

GRANT CREATE ON emp TO C##HR; 

하지만 작동하지 않습니다. 다음 메시지가 표시됩니다.

Do not attempt to grant or revoke EXECUTE privilege on tables. 

위의 시나리오를 수행 할 수있는 방법이 있습니까? 아니면 불가능한가요?

참고 : - 내가 ORACLED DBMS 12C

답변

0

을 사용하고 난 당신이 달성하기 위해 노력하고 정확하게 이해하는 것이 매우 확실하지 않다.

사용자 (또는 역할)에게 CREATE TABLE 권한을 부여 할 수 있습니다. 이를 통해 개발자는 자신의 스키마에서 원하는 모든 테이블을 만들 수 있습니다. 사용자가 테이블을 작성할 수는 있지만 작성할 수있는 테이블의 이름은 제한 할 수 없습니다. 정말 까다로워 지길 원한다면 CREATE TABLE 권한을 부여 할 수 있지만 DDL 트리거를 만들어서 EMP이 아닌 테이블을 만들지 못하게하십시오. 가능한 일이지만 가난한 아키텍처입니다. 한 손으로 권한을 부여하고 다른 손으로 권한을 부분적으로 제한하면 사용자가 실제로 어떤 권한을 갖고 있는지 이해하기가 매우 어렵습니다.

사용자가 테이블을 소유하고있는 경우, 해당 사용자는 항상 테이블의 허락을 INSERT, UPDATEDELETE 데이터가뿐만 아니라 TRUNCATE 또는 DROP 같은 DDL을 실행하는 것입니다. 사용자가 EMP이라는 테이블 만 만들 수 있도록 제한하더라도 해당 사용자는 테이블을 완벽하게 제어 할 수 있습니다.

이제는 권한이있는 사용자 (예 : DBA)가 소유 한 저장 프로 시저에서 원하는 모든 것을 래핑하고 해당 저장 프로 시저를 실행할 수있는 권한을 사용자 (또는 역할)에게 부여 할 수 있습니다 . 예를 들어, DBA 사용자는 CREATE TABLE 문을 수락하고 호출자가 소유 한 스키마가 아닌 스키마에 테이블을 만든 다음이 테이블에 대해 사용자에게 UPDATE 권한을 부여하는 프로 시저를 만들 수 있습니다. 그런 다음 사용자 (또는 역할)에게이 절차에 대한 EXECUTE 권한을 부여 할 수 있습니다. 물론, 왜 그런 일을하고 싶은지 이해하기 힘듭니다. 그러나 당신은 할 수 있었다.