SQL_ROLE 생성, 부여, 삭제
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을 생성, 부여, 삭제하는 방법에 대해 알아보았습니다.
롤은 권한을 담는 그릇이기 때문에 부여해야 할 권한과 계정이 많은 경우에
권한들을 계정마다 하나씩 부여하지 않아도 된다는 장점이 있습니다.