본문 바로가기

DBMS

DB 사용자 생성 - 권한부여/제거

반응형

 

 

CREATE 사용자 생성/제거 , DB 접근은 시스템 권한을 가진 DBA만 가능하다.

 

ex)

CREATE USER
CREATE SESSION
CREATE VIEW
DROP USER 등등..

 


 

사용자 id는 id117 , pw는 passwd123으로 만들고 , 접속권한을 부여한다. 


 

 

사용자 생성 : CREATE USER id117 identified by passwd123;

사용자에게 시스템 권한 부여 : GRANT CREATE SESSION TO id117;

(DB에 접속하려면 최소한 CREATE SESSION 권한이 있어야함)


GRANT CONNECT TO id117;

CONNECT는 접속할 수 있는 권한을 묶어 놓은 Role이다.

Role : 사용자에게 권한을 일일이 주기 힘들기에 권한그룹 같은 Role 을 만들어서 관리한다. 


 


 

<권한 부여 / 제거>



GRANT  - 권한부여

REVOKE - 권한제거 

 

특정 TABLE에 권한주기
    GRANT SELECT, UPDATE, INSERT ON TABLE명 TO 계정;
    ※ ALL = SELECT, UPDATE, INSERT 로 표현가능


(권한제거)
REVOKE 권한명(시스템명령 또는 SQL명령) ON TABLE명 FROM 계정

  

 

<관리자 sql>

 
 
GRANT DELETE ANY TABLE TO id117-- id117에게 모든 테이블 데이터 삭제 권한 부여
GRANT DELETE ON hr.departments TO id117; -- id117에게 특정 테이블의 데이터 삭제 권한 부여
GRANT DROP ANY TABLE TO id117; -- id117에게 테이블 삭제 권한 부여DELETE FROM hr.departments WHERE department_id = 260; -- 특정 테이블의 데이터 삭제 


role.sql 확인  -- 권한을 제거해도 다른곳에 관련된 권한이 더 저장되어 있을 수 있다.
REVOKE DELETE ANY TABLE FROM DBA; -- DBA
REVOKE DELETE ANY TABLE FROM DATAPUMP_IMP_FULL_DATABASE;
REVOKE DELETE ANY TABLE FROM IMP_FULL_DATABASE;
 
cs

 

< role.sql >

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
SELECT USERNAME, ROLENAME, PRIVILEGE
FROM (SELECT DECODE(SA1.GRANTEE#, 1'PUBLIC', U1.NAME) username,
        SUBSTR(U2.NAME,1,20) rolename,
        SUBSTR(SPM.NAME,1,27) PRIVILEGE
    FROM SYS.SYSAUTH$ SA1,
        SYS.SYSAUTH$ SA2,
        SYS.USER$ U1,
        SYS.USER$ U2,
        SYS.SYSTEM_PRIVILEGE_MAP SPM
    WHERE SA1.GRANTEE# = U1.USER#
    AND SA1.PRIVILEGE# = U2.USER#
    AND U2.USER# = SA2.GRANTEE#
    AND SA2.PRIVILEGE# = SPM.PRIVILEGE
    UNION
    SELECT U.NAME username, NULL rolename, SUBSTR(SPM.NAME,1,27) privilege
    FROM SYS.SYSTEM_PRIVILEGE_MAP SPM, SYS.SYSAUTH$ SA, SYS.USER$ U
    WHERE SA.GRANTEE#=U.USER#
    AND SA.PRIVILEGE#=SPM.PRIVILEGE)
WHERE USERNAME = UPPER('&username')
AND privilege = 'DELETE ANY TABLE';
 
cs

 

※ 실행 후 프롬프트창에 DBA를 입력하면 'DELETE ANY TABLE' 권한을 가진 목록을 보여주는

     Role이다.

  

   해당 privilege 컬럼의 위 권한을 제거해야 권한이 완전히 제거된다. 

 

 

반응형

'DBMS' 카테고리의 다른 글

PL/SQL 패스워드 검증  (0) 2017.09.19
PL/SQL - 프로시저 생성  (0) 2017.09.18
DB 암호 정책 설정  (0) 2017.09.05
오라클 접속 정보 설정  (0) 2017.08.30
톰캣(tomcat) 설치  (0) 2017.08.13