Data Base_Oracle/SQL

SQL_ROLE 생성, 부여, 삭제

pathas 2020. 1. 10. 17:09

ROLE 생성

관리자만 생성 가능

§ 형식

[ SQL> create role 롤명; ]

# 예제

▷ usercreate라는 이름을 가진 롤 생성
[ SQL> create role usercreate;
롤이 생성되었습니다.
select * from dba_roles where role='USERCREATE'; ]

ROLE PASSWORD AUTHENTICAT
USERCREATE NO NONE

ROLE 권한 입력

동일한 권한을 여러 개의 롤에 동시에 부여 가능

§ 형식

[ SQL> grant 권한명,,, to 롤명,,,; ]

# 예제

▶ usercreate 롤에 로그인, 계정 생성, 계정 수정 권한 입력
[ SQL> grant create session, create user, alter user to usercreate;
권한이 부여되었습니다.
select * from dba_sys_privs where grantee=upper('usercreate'); ]

GRANTEE PRIVILEGE ADM
USERCREATE CREATE SESSION NO
USERCREATE CREATE USER NO
USERCREATE ALTER USER NO

※ 롤에도 GRANT를 사용해서 권한을 부여하는 것이지만
계정에 부여하는 것과 혼동될 수 있기 때문에 '입력'으로 표현

ROLE 계정에 부여

사용자 정의 롤을 계정에 부여

§ 형식

[ SQL> grant 롤명,,, to 계정명,,,; ]

# 예제

▶ scott, test2 계정에 usercreate 롤 부여
[ SQL> grant usercreate to scott, test2;
권한이 부여되었습니다. ]

 

▷ scott 계정에서 test3 계정 생성
[ SQL> create user test3 identified by t1234;
사용자가 생성되었습니다. ]

 

▷ scott 계정에서 test3 암호 변경
[ SQL> alter user test3 identified by 1234;
사용자가 변경되었습니다. ]

 

▷ scott 계정에서 test3 계정 삭제
[ SQL> drop user test3;
1행에 오류:
ORA-01031: 권한이 불충분합니다 ]

 

※ DROP USER 권한은 부여되지 않았기 때문에 발생하는 에러

ROLE 삭제

§ 형식

[ SQL> drop role 롤명; ]

# 예제

▶ sys 계정에서 usercreate 롤 삭제
[ SQL> drop role usercreate;
롤이 삭제되었습니다. ]

 

▷ scott 계정에서 test4 계정 생성
[ SQL> create user test4 identified by t1234;
1행에 오류:
ORA-01031: 권한이 불충분합니다 ]

 

※ sys 계정에서 롤을 삭제했기 때문에 발생하는 에러
롤을 부여받았던 계정의 권한도 자동으로 모두 회수됨


ROLE을 생성, 부여, 삭제하는 방법에 대해 알아보았습니다.

롤은 권한을 담는 그릇이기 때문에 부여해야 할 권한과 계정이 많은 경우에
권한들을 계정마다 하나씩 부여하지 않아도 된다는 장점이 있습니다.