데이터베이스에 접속하여 데이터를 관리하는 계정.
사용자 관리가 필요한 이유?
크고 복잡한 데이터베이스의 경우, 업무 분할과 효율, 보안을 고려하여 업무에따라 여러 사용자들을 나누는것이 필요함.
오라클DB는 테이블,인덱스,뷰 등 여러 객체가 사용자별로 생성되어 각 사용자 업무에 맞는 데이터 구조를 만들어 관리하는 방식 사용가능. 반대로 업무에 맞는 데이터구조를 만들고, 사용자에게 지정해주는것도 가능
데이터베이스에서 데이터 간 관계, 데이터구조, 제약조건등 데이터를 관리하기 위해 정의한 데이터베이스 구조의 범위를 스키마를 통해 그룹단위로 분류.
오라클DB에서는 데이터베이스에 접속한 사용자와 연결된 객체를 의미
CREATE USER문 사용.
CREATE USER 명령어에는 사용 할 수 있는 옵션이 여러가지 있는데, 기본적으로 사용자 이름과 패스워드만 지정해주면 사용자 생성가능함
CREATE USER [사용자이름](필수)
IDENTIFIED BY [패스워드](필수)
DEFAULT TABLESPACE [테이블 스페이스 이름](선택)
TEMPORARY TABLESAPCE [테이블 스페이스(그룹)이름](선택)
QUOTA [테이블 스페이스크기] ON [테이블 스페이스 이름](선택)
PROFILE [프로파일 이름](선택)
PASSWORD EXPIRE(선택)
ACCOUNT [LOCK/UNLOCK](선택)
CREATE USER ORCLSTUDY
IDENTIFIED BY ORACLE;
일반 계정으로 생성하면 권한이없기때문에 DB관리권한이 있는 계정으로 만들어야 함.
이렇게 계정을 만들어도 데이터베이스에 접속하지 못하는데, 권한이 없기때문이다.
GRANT CREATE SESSION TO ORCLSTUDY;
권한을 부여하고 나면 데이터베이스에 접속이 가능해진다.
테이블을 만들고, 여러가지 기능을 사용하려면 몇몇권한이 더 필요하다.
사용자 정보를 변경할 때는 ALTER USER 문을 사용.
ALTER USER ORCLSTUDY
IDENTIFIED BY ORCL;
ORCLSTUDY사용자의 비밀번호를 ORCL로 바꿨다.
DROP USER ORCLSTUDY;
DROP USER문을 사용해 사용자를 삭제함. 만약 삭제하려는 사용자가 다른곳에서 접속중이라면, 삭제가 되지 않는다.
사용자 스키마에 객체가 있을 경우, CASCADE옵션을 사용해 사용자와 객체 모두 삭제가 가능하다.
DROP USER ORCLSTUDY CASCADE;
데이터를 안전하게 보관하기 위해서는 특정 데이터에 대해 관련된 사용자만이 접근하여 관리할 수 있는 보안장치가 필요한데, 오라클은 시스템 권한과 객체 권한으로 권한을 분류하여 관리하게 한다.
오라클DB의 시스템 권한은 사용자 생성, 정보 수정 삭제, 접근, 여러자원및 객체 생성및 관리등을 포함하는 권한.
위에서 DROP으로 사용자를 삭제했으니 다시 생성하고,
CREATE USER ORCLSTUDY
IDENTIFIED BY ORACLE;
데이터베이스 접속권한, 테이블 생성권한을 부여
GRANT RESOURCE, CREATE SESSION, CREATE TABLE TO ORCLSTUDY;
GRANT 명령어로 부여한 권한의 취소는 REVOKE명령어를 사용
REVOKE [시스템권한] FROM [사용자 이름/롤이름/PUBLIC];
특정 사용자가 생성한 테이블,인덱스,뷰,시퀀스등과 관련된 권한.
객체권한부여 또한 GRANT문 사용
임시테이블 TEMP를 만들고,
SELECT와 INSERT권한부여
CREATE TABLE TEMP(
COL1 VARCHAR(20),
COL2 VARCHAR(20)
);
GRANT SELECT ON TEMP TO ORCLSTUDY;
GRANT INSERT ON TEMP TO ORCLSTUDY;
ORCLSTUDY계정으로 들어가서 SELECT,INSERT해보면 ORCLSTUDY사용자 소유는 아니지만 테이블을 생성한 계정의 TEMP테이블을 조화, 삽입이 가능하다.
객체 권한취소역시 REVOKE명령어를 사용.
REVOKE SELECT, INSERT ON TEMP FROM ORCLSTUDY;
롤이란? 여러 종류의 권한을 묶어놓은 그룹을 뜻함
일반회원과 관리자권한이 달라야하는데, 관리자권한을 줄때 무슨권한 무슨권한 일일이 주는게 아니고 관리자권한에 필요한 롤을 통째로 주면 권한관리 효율을 높일수 있다.
롤은 사전 정의된 롤과 사용자 정의 롤로 나뉜다.
CONNECT
사용자가 데이터베이스에 접속하는데 필요한 CREATE SESSION권한을 가지고있음
RESOURCE
사용자가 테이블, 시ㅜ컨스를 비롯한 여러 객체를 생성할 수 있는 기본 시스템 권한을 묶어놓은 롤
DBA
데이터베이스를 관리하는 시스템 권한을 대부분 가지고있음
사용자의 필요에 의해 직접 권한을 포함시킨 롤을 뜻함.
CREATE ROLE으로 롤을 생성하고,
GRANT로 권한을 포함 및 특정 사용자에게 부여하고,
REVOKE로 롤을 취소시킬수있음.
CREATE ROLE ROLESTUDY;
GRANT CONNECT, RESOURCE, CREATE VIEW, CREATE SYNONYM TO ROLESTUDY;
이렇게 완성된 롤을 GRANT명령어로 사용자에게 부여할 수 있다.
GRANT ROLESTUDY TO ORCLSTUDY;
ORCLSTUDY계정으로 들어가서 계정에 부여된 롤과 권한을 확인할수있다.
SELECT * FROM USER_SYS_PRIVS;
SELECT * FROM USER_ROLE_PRIVS;
롤을 취소할 때역시 REVOKE문을 사용
REVOKE ROLESTUDY FROM ORCLSTUDY;
롤 삭제는 DROP명령어를 사용함.
DROP ROLE ROLESTUDY;