Database

[Oracle] 오라클 계정 권한 부여

csicto 2024. 11. 5. 13:22

특정 계정의 모든 권한 다른 계정에게 부여

 

결론 : 가능하긴 한데 아무튼 안됨

 

오늘 신규 계정을 생성하고 기존에 사용하던 다른 계정에서 신규 계정에 객체를 생성하고 관리할 수 있게 해달라는 요청이 있었다.

 

그러니까 신규 스키마(NEW)의 객체를 핸들링할 수 있는 모든 권한을 기존 사용 중인 스키마들(SCHEMA1, SCHEMA2, SCHEMA3)에게 부여해달라는게 내용이었다.

 

SCHEMA1, SCHEMA2, SCHEMA3 스키마에서 NEW 스키마에 테이블도 만들고 뷰도 만들고 그렇게 해달란다.

 

특정 계정의 특정 객체에 권한을 다른 계정에 부여해본 적은 종종 있는데 이런 경우는 한 번도 해본적 없어서 그냥 해봤다.

 

GRANT CREATE ON [NEW].* TO SCHEMA1;

 

아무래도 내 뇌피셜로 한거니까 될 리가 없다ㅋ 될거라고 생각도 안하긴 했음

 

일반적으로 필요한 권한은 아래와 같이 주는게 정배다.

 

GRANT [권한] [객체] TO [스키마];

 

예를 들면 GRANT CREATE TABLE TO NEW; 이런 식이다.

(NEW 스키마는 자신의 테이블스페이스에 TABLE을 만들 수 있게 된다.)

 

특정 스키마의 특정 객체에 대한 권한을 다른 스키마에게 부여하는 경우 아래와 같이 한다.

 

GRANT [권한] ON [스키마명].[객체명] TO [권한 부여받을 스키마];

 

예를 들면 GRANT SELECT ON NEW.TABLE1 TO SCHEMA1; 이런 식이다.

(SCHEMA1은 NEW의 TABLE1을 SELECT 할 수 있게 된다.)

 

대충 응용해서 몇 개 해봤는데 안됨ㅋ

 

찾아보니까 이런 요청을 받거나 시도한 사람들이 당연하지만 이미 있었다.

 

권장 사항은 위에 적어둔 것처럼 특정 객체에 대해서만 필요 권한을 부여하는 것이 좋은 것 같았다.

 

하지만 불가능한 것은 아니었다.

 

GRANT [권한] ANY [객체] TO [스키마];

 

예를 들면 GRANT CREATE ANY VIEW TO SCHEMA1;

(SCHEMA1이 모든 스키마에 VIEW를 만들 수 있게 된다.)

 

이렇게 하면 되긴 하는데 특정 스키마가 아닌 모든 스키마에 대한 권한이라서 권장하지 않는다고 하는 것 같다.

 

그래서 그냥 안된다고 했고 

(된다고 그냥 해주면 감사에서 곤란해진다.)

 

계정을 생성해 뒀으니 필요한 객체를 먼저 생성하고 그 객체에 대한 권한 요청을 달라고 했다.

 

 

추가로 찾아보니 GRANT 권한 ANY 객체 TO 스키마를 사용할 때 모든 객체에 대해 사용이 가능한 것으로 보였다.

(TABLE, VIEW, FUNCTION, PROCEDURE, PACKAGE 등등)

 

계정 생성 및 권한 부여 관련 명령어들은 아래에 정리해두었다.

 

테이블 스페이스 생성

CREATE TABLESPACE [테이블스페이스명]
DATAFILE '[~~\ORADATA\테이블스페이스명.ORA]'
SIZE [초기 사이즈]
AUTOEXTEND ON NEXT [자등 증가 용량]
MAXSIZE [최대 용량];

 

계정 생성

CREATE USER [계정명] IDENTIFIED BY [패스워드]
       DEFAULT   TABLESPACE [테이블스페이스명]
       TEMPORARY TABLESPACE [임시테이블스페이스명]
       QUOTA [할당용량] ON [테이블스페이스명]
       QUOTA UNLIMITED ON [테이블스페이스명];

 

계정 접속 권한 부여

GRANT CONNECT TO [계정명];

 

추가적으로 필요한 권한은 위에 GRANT [권한] [객체] TO [계정]; 을 응용하여 사용하면 된다.

 

계정 권한 회수

REVOKE [권한] ON [객체] FROM [계정];

 

계정 권한 조회

SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = '[계정명]';

 

계정 생성 요청이 오면 이정도 작업을 진행하는 것 같다.

 

진짜 끝ㅋ