개발자 끄적끄적
무결성 제약 본문
<기본적 무결성 제약의 보장>
- 기본키 무결성 제약
- 참조 무결성 제약
<테이블 무결성 제약의 보장>
- NOT NULL
- UNIQUE
- CHECK
- DEFAULT
<오라클에서의 사용자 권한 제어>
- 오라클의 권한 종류
- 시스템 권한(System privileges)
- 사용자의 생성, 테이블이나 테이블 스페이스의 생성 등과 같이 주로 시스템의 자원을 관리할 수 있는 권한
- 데이터베이스 관리자 계정(sys, system)은 모든 시스템 권한을 가진다
- 객체 권한(object privileges)
- 해당 객체에 대해 select, insert, delete, update 등과 같은 DML을 실행 할 수 있는 권한
- 객체
- 테이블이나 뷰 또는 사용자 정의 함수 등
<오라클의 대표적인 시스템 권한>
1. 사용자
- create user : 사용자 계정을 생성할 수 있는 권한
- drop user : 사용자 계정을 삭제하는 권한
2. 세션
- create session : 데이터베이스 접속(로그인)권한
3. 테이블
- create table : 테이블을 생성할 수 있는 권한
- drop any table : 임의의 테이블을 삭제하는 권한
- select any table : 임의의 테이블에 대한 읽기 권한
4. 뷰
- create view : 뷰를 생성할 수 있는 권한
- drop any view : 임의의 뷰에 대한 삭제 권한
5. 테이블 스페이스
- create tablespace : 테이블 스페이스를 생성하는 권한
- drp tablespace : 테이블 스페이스에 대한 삭제 권한
6. 롤
- create role : 롤을 생성할 수 있는 권한
- drop any role : 임의의 롤을 삭제하는 권한
<사용자 계정 생성과 GRANT>
- 사용자 계정 생성 예
- system 계정에서 실행
- lee : 사용자 ID
- lee_pass : 비밀번호
- users : default tablespace, users는 오라클 설치 시 기본적으로 생성
<사용자 계정 생성과 GRANT>
- 사용자 생성 후 권한을 부여해야한다
- 권한 없이 로그인을 할 경우의 예
ERROR : user LEE lacks CREATE SESSION privileges ; logon denied
- ex) lee에게 create session과 create table 권한을 부여(system 계정에서)
grant create session to lee
grant create table to lee
- 사용자 lee는 로그인과 테이블 생성에 대한 권한을 부여받았으므로 로그인이 가능하며 동시에 테이블 생성도 가능
<테이블에 대한 권한의 부여와 회수 예>
1. system 계정으로 로그인을 한 후에 다음과 같이 kim이란 계정을 추가로 생성하고 권한을 부여
(질의 61)
create user kim
identified by kim_pass
default tablespace users
quota 2M on users
grant create session to kim
grant create table to kim
2. lee로 로그인을 하여 student 테이블과 department 테이블을 생성하고, 레코드들을 삽입
- lee로 로그인 한 후에 kim에게 student 테이블에 대한 select 권한을 다음과 같이 부여
grant select on student to kim
- kim으로 로그인하여 student 테이블에 대한 select연산을 실행
conn kim/kim_pass
select stu_id
from lee.student
- 다른 사용자가 소유한 테이블에 대해 테이블 이름을 명시할 때는 '소유자명.테이블명' 과 같이 테이블 이름 앞에 소유자명까지 기입
<WITH GRANT OPTION의 실행 예>
- chang이라는 계정을 생성했다고 가정
- lee 계정으로 로그인을 한 후에 kim에게 student 테이블에 대한 select권한을 부여
grant select on student to kim with grant option (lee가 실행)
- kim으로 로그인하여 chang에게 전파
grant select on lee.student to chang (kim 실행)
- chang으로 로그인하여 student 테이블에 대한 select 명령 실행 가능
<REVOKE>
- lee가 kim에게 부여된 revoke문을 이요하여 권한을 회수
revoke select on student from kim
- 간접적으로 권한을 부여 받은 chang에게도 자동적으로 권한을 회수한다
<참고 : with grant option 과 with admin option>
- 오라클에서는 with grant option과 with option을 모두 지원
- with grant option
- 객체 권한을 다른 사용자에게 전파할 떄 사용
- with admin option
- 시스템 권한을 전파할 때 사용
- ex) grant create table to kim with admin option
<롤의 생성과 관리>
- 오라클의 기본적인 롤 종류
- 오라클에서 권한의 종류는 200여개
- 롤의 사용이 필수적
- 오라클에서 사전에 정의된 기본 롤
1. connect : 사용자가 데이터베이스에 접속할 수 있는 기본적인 시스템 권한
- 권한 종류 : create session
2. resource : 사용자가 객체를 생성하고 관리할 수 있는 시스템 권한
- create table
- create trigger
- create procedure
- create cluster
- create sequence
3. DBA : 시스템 및 객체 관리에 대한 모든 권한
- 데이터베이스 관리자 권한
- ex) park에게 connect와 resource 권한을 부여
grant connect, resource to park
<롤의 생성과 사용자 배정>
- 롤 생성
- create role문은 데이터베이스 관리자 또는 데이터베이스 관리자로부터 롤을 생성하는 권한을 부여 받은 사용자만이 실행
ex) create role stu_role
- student 테이블이 소유자가 lee라고 가정
- system 계정에서 다음을 실행
ex) grant select, insert on lee.student to stu_role
ex) grant stu_role to park
- 롤에서 사용자 배제
- ex) stu_role에 배정된 park을 다음과 같이 revoke문으로 배제
revoke stu_role from park (sys 계정)
'데이터 베이스' 카테고리의 다른 글
물리적 저장구조와 인덱스 (0) | 2023.04.23 |
---|---|
사용자 권한 (0) | 2023.04.07 |
SQL문법 (0) | 2023.03.28 |