일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 깃허브
- 면접
- Eclipse
- 자바
- 제이쿼리
- 오라클
- SESSION
- 스프링
- Oracle
- EL태그
- 이클립스
- 자바스크립트
- java
- 설치
- 설정
- jsp
- jquery
- 필터체인
- 마이바티스
- jstl
- jsp 내부객체
- 폼태그
- 버튼
- html
- 알고리즘
- 셋업
- springboot
- 깃허브 간단요약
- MySQL
- Spring
- Today
- Total
은은하게 코드 뿌시기
[DB] 권한관리 - 오라클 본문
1. 권한관리 ?
데이터를 안전하게 보관하고 특정 데이터에 대해서 관련된 사용자만 데이터를 사용 및 관리할 수있게 하기위해 사용 하는것으로 , 접속 사용자에 따라 접근 할 수있는 데이터 영역과 권한을 지정 해주는 것을 말한다.
오라클에서 의 권한관리는 시스템 권한(System privilege)와 객체 권한(object privilege)로 가 있다.
1.1.1 시스템 권한
- 사용자 생성과 정보 수정 및 삭제, 데이터베이스 접근, 오라클 데이터베이스의 여러 자원과 객체 생성 및 관리 권한으로 이루어져있다.
- 데이터 베이스 관리 권한이 있는 사용자가 부여할 수있는 권한이다.
*시스템 권한의 종류 중 일부 - ANY키워드가 들어 있는 권한은 소유자에 상관없이 사용가능한 권한
시스템 권한 분류 | 시스템 권한 | 설명 |
USER(사용자) | CREATE USER | 사용자 생성권한 |
ALTER USER | 생성된 사용자의 정보 수정 권한 | |
DROP USER | 생성된 사용자의 삭제 권한 | |
SESSION(접속) | CREATE SESSION | 데이터베이스 접속 권한 |
ALTER SESSION | 데이터베이스 접속 상태에서 환경 값 변경 권한 | |
TABLE(테이블) | CREATE TABLE | 자신의 테이블 생성 권한 |
CREATE ANY TABLE | 임의의 스키마 소유 테이블 생성 권한 | |
ALTER ANY TABLE | 임의의 스키마 소유 테이블 수정 권한 | |
DROP ANY TABLE | 임의의 스키마 소유 테이블 삭제 권한 | |
INSERT ANY TABLE | 임의의 스키마 소유 테이블 데이터 삽입 권한 | |
UPDATE ANY TABLE | 임의의 스키마 소유 테이블 데이터 수정 권한 | |
DELETE ANY TABLE | 임의의 스키마 소유 테이블 데이터 삭제 권한 | |
SELECT ANY TABLE | 임의의 스키마 소유테이블 데이터 조회 권한 | |
INDEX(인덱스) | CREATE ANY INDEX | 임의의 스키마 소유테이블의 인덱스 생성 권한 |
ALTER ANY INDEX | 임의의 스키마 소유 테이블의 인덱스 수정 권한 | |
DROP ANY INDEX | 임의의 스키마 소유 테이블의 인덱스 삭제 권한 | |
VIEW(뷰) | (생략) | 뷰와 관련한 여러권한 |
SEQUENCE(시퀀스) | (생략) | 시퀀스와 관련된 여러 권한 |
SYNONYM(동의어) | (생략) | 동의어와 관련된 여러권한 |
PROFILE(프로파일) | (생략) | 사용자 접속 조건 지정과 관련된 여러 권한 |
ROLE(롤) | (생략) | 권한을 묶은 그룹과 관련된 여러권한 |
1.1.2 시스템 권한 부여 하기
GRANT CREATE SESSION TO 사용자이름; GRANT CREATE SESSION TO ORCLSTUDY; - ORCLSTUDY 사용자에게 CREATESESSION = 데이터베이스접속권한을 부여하겠다. |
GRANT 시스템권한1,시스템권한2,.....시스템권한N TO [사용자이름/롤이름1, 롤이름2,.....롤이름N/PUBLIC] [WITH ADMIN OPTION]; |
WITH ADMIN OPTION : GRANT문을 통해 부여받은 권한을 다른 사용자에게 부여할 수있는 권한도 함께 부여받습니다. 현재 사용자가 권한이 사라져도, 권한을 재부여한 다른 사용자의 권한은 유지됩니다. |
권한 부여 예제
시스템 계정으로 접속하여 사용자 생성하기 | CREATE USER 사용자이름 IDENTIFIED BYORCLE; |
사용자 권한 부여하기 | GRANT RESOURCE, CREATE SESSION,CREATE TABLE TO 사용자이름; |
GRANT에 사용된 RESOURCE 키워드
RESOURCE는 오라클 데이터베이스에서 제공하는 롤(role)중 하나이다.
롤은 여러권한을 하나의 이름으로 묶어 권한 부여 관련 작업을 간편하게 하려고 사용합니다.
GRANT에 RESOURCE를 지정하지 않는다면, 사용자에게 테이블 생성권한을 부여 해도
CREATE문으로 테이블을 생성할 수 없거나 테이블이 생성되더라도 INSERT문에서 오류
다음과 같은 오류 메세지를 출력하며 동작하지 않는 경우가 발생합니다.
ORA-01950: 테이블 스페이스 USER 권한이 없습니다. |
RESOURCE롤에는 사용자를 생성할 때 사용테이블 스페이스 영역을 무제한 사용 가능(UNLIMITED TABLESPACE)하게 해주는 권한이 있기 때문에, RESOURCE롤을 GRANT문에 추가하면 별 문제없이 사용자가 테이블을 생성하고 신규 데이터를 저장할 수 있습니다.
하지만 엄밀한 관리가 필요한 경우에 UNLIMITED TABLESPACE 권한은 적절하지 않으므로
사용자 생성 및 수정을 할 때 QUOTA절로 사용자 여역에 제한을 두기도합니다.
ALTER USER ORCLSTUDY QUOTA 2M ON USERS; |
12C버전에서는 REOURCE롤에 UNLIMITED TABLESPACE 권한을 부여하지 않습니다.
설명은 11C기반의 설명이다.
그렇다면 19C 기반일때 사용자 생성의 예제는 다음과 같다.
19C 사용자 생성
alter session set “_ORACLE_SCRIPT”=true; | 세션변경 - C##을 안쓰기위한 작업 |
CREATE USER 사용자이름 IDENTIFIED BY "비밀번호"; | 사용자 생성 |
GRANT CONNECT, RESOURCE TO 사용자이름; | DB접속 권한 과 자원을 사용할 수있는 권한 부여 |
ALTER USER 사용자이름 DEFAULT TABLESPACE USERS QUOTA UNLIMITED ON USERS; |
사용자 영역 역할제한 설정 -USERS 테이블 스페이스를 사용 할 수있도록 권한 부여 |
1.1.3 시스템 권한 취소
REVOKE [시스템 권한] FROM [사용자 이름/롤(Role) 이름/ PUBLIC]; |
1.2 객체권한 ?
object privilege, 특정 사용자가 생성한 테이블, 인덱스, 뷰, 시퀀스 등과 관련된 권한입니다.
1.2.1 객체권한의 종류
객체 권한 분류 | 객체 권한 | 설명 |
TABLE(테이블) | ALTER | 테이블 변경 권한 |
DELETE | 테이블 데이터 삭제 권한 | |
INDEX | 테이블 인덱스 생성 권한 | |
INSERT | 테이블 데이터 삽입 권한 | |
REFERENCES | 참조 데이터 생성권한 | |
SELECT | 테이블 조회 권한 | |
UPDATE | 테이블 데이터 수정 권한 | |
VIEW(뷰) | DELETE | 뷰 데이터 삭제 권한 |
INSERT | 뷰 데이터 삽입 권한 | |
REFERENCES | 참조 데이터 생성 권한 | |
SELECT | 뷰 조회 권한 | |
UPDATE | 뷰 데이터 수정 권한 | |
SEQUENCE(시퀀스) | ALTER | 시퀀스 수정 권한 |
SELECT | 시퀀스의 CURRVAL과 NEXTVAL 사용권한 | |
PROCEDURE(프로시저) | (생략) | 프로시저 관련 권한 |
FUNCTION(함수) | (생략) | 함수 관련 권한 |
PACKAGE(패키지) | (생략) | 패키지 관련 권한 |
1.2.2 객체 권한 부여
GRANT [객체권한 / ALL PRIVILEGES] ON [스키마.객체이름] TO [사용자 이름/롤(role)이름/PUBLIC] [WITH GRANT OPTION]; |
1.2.3 객체 권한 취소
REVOKE [객체권한/ ALL PRIVILEGES](필수) ON [스키마.객체 이름](필수) FROM [사용자이름/롤(Role) 이름/PUBLIC](필수) [CASCADE CONSTRAINTS/FORCE](선택); |
'Database -Mysql,Oracle' 카테고리의 다른 글
MS SQL 쿼리 - 오라클 쿼리로 바꾸기/ 마이그레이션/ INSERT 쿼리로 긴 텍스트를 집어넣어야 할때! / NCLOB (2) | 2023.05.04 |
---|---|
[DB] 롤 - 오라클 (0) | 2022.11.09 |
[DB] 사용자관리 - 오라클 (0) | 2022.11.09 |
[DB] 제약조건 - 오라클/MYSQL (0) | 2022.11.08 |
[DB] 오라클 scott 계정 활성화 / 오라클 19c scott 계정 활성화 (0) | 2022.11.07 |