λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
DB/Oracle

[Oracle] GRANT(κΆŒν•œλΆ€μ—¬) / REVOKE (κΆŒν•œνšŒμˆ˜)

by yunamom 2022. 4. 26.
λ°˜μ‘ν˜•

GRANT(κΆŒν•œλΆ€μ—¬) / Revoke (κΆŒν•œνšŒμˆ˜)

GRANT REVOKE
μ‚¬μš©μž(User)μ—κ²Œ μ ‘μ†κΆŒν•œ, 였브젝트 μƒμ„±κΆŒν•œ, DBA κΆŒν•œ 등을 λΆ€μ—¬ν•  수 μžˆλŠ” λͺ…λ Ήμ–΄ μ‚¬μš©μž(User)μ—κ²Œ λΆ€μ—¬ν•œ κΆŒν•œμ„ λ‹€μ‹œ νšŒμˆ˜ν•˜λŠ” λͺ…λ Ήμ–΄

μ˜€λΌν΄μ— μ ‘μ†ν•˜κΈ° μœ„ν•œ 계정, μ•”ν˜Έλ₯Ό μƒμ„±ν•˜κ³  λ‚œ 뒀에 κΆŒν•œμ΄ μžˆμ–΄μ•Ό 접속 및 μž‘μ—…μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.

κΆŒν•œμ€ 크게 2κ°€μ§€λ‘œ λ‚˜λˆ„μ–΄μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.

1. System Privilege (μ‹œμŠ€ν…œ κΆŒν•œ)

2. Object Privilege (객체 κΆŒν•œ)


βœ¨μ‹œμŠ€ν…œ κΆŒν•œ (System Privileges) 

μ‹œμŠ€ν…œ κΆŒν•œμ€ μ‚¬μš©μž (User) κ°€ λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ νŠΉμ • μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆλ„λ‘ ν•œλ‹€.

- DBA κΆŒν•œμ„ 가진 μœ μ € (SYS , SYSTEM) 만 μ‹œμŠ€ν…œ κΆŒν•œμ„ λΆ€μ—¬ν•˜κ³  νšŒμˆ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

- κΆŒν•œμ˜ ANY ν‚€μ›Œλ“œλŠ” μ‚¬μš©μžκ°€ λͺ¨λ“  μŠ€ν‚€λ§ˆμ—μ„œ κΆŒν•œμ„ 가짐을 μ˜λ―Έν•œλ‹€.

- GRANT λͺ…령은 μ‚¬μš©μž λ˜λŠ” ROLE에 λŒ€ν•΄μ„œ κΆŒν•œμ„ λΆ€μ—¬ν•  수 μžˆλ‹€.

λŒ€ν‘œμ μΈ μ‹œμŠ€ν…œ κΆŒν•œ μ„€λͺ…
CREATE SESSION 데이터 베이슀λ₯Ό μ—°κ²°ν•  수 μžˆλŠ” κΆŒν•œ
CREATE TABLE ν…Œμ΄λΈ”μ„ 생성할 수 μžˆλŠ” κΆŒν•œ
CREATE SEQUENCE μ‹œν€€μŠ€λ₯Ό 생성할 수 μžˆλŠ” κΆŒν•œ
CREATE VIEW λ·°λ₯Ό 생성할 수 μžˆλŠ” κΆŒν•œ
CREATE PROCEDURE ν”„λ‘œμ‹œμ €λ₯Ό 생성할 수 μžˆλŠ” κΆŒν•œ
CREATE ROLE 였라클 λ°μ΄ν„°λ² μ΄μŠ€ 역할을 생성할 수 μžˆλŠ” κΆŒν•œ
ALTER USER μƒμ„±ν•œ μ‚¬μš©μžμ˜ μ •μ˜λ₯Ό λ³€κ²½ν•  수 μžˆλŠ” κΆŒν•œ
DROP USER μƒμ„±ν•œ μ‚¬μš©μžλ₯Ό μ‚­μ œμ‹œν‚€λŠ” κΆŒν•œ
-μ‹œμŠ€ν…œ κΆŒν•œ λΆ€μ—¬(GRANT) κΈ°λ³Έ 문법
​
GRANT μ‹œμŠ€ν…œ κΆŒν•œλͺ… [, μ‹œμŠ€ν…œ κΆŒν•œλͺ… ... | λ‘€λͺ…]
TO μœ μ €λͺ… [, μœ μ €λͺ…... | λ‘€λͺ… ... |PUBLIC | ​[WITH ADMIN OPTION];
​
- μ‹œμŠ€ν…œ κΆŒν•œλͺ… : λΆ€μ—¬ν•  μ‹œμŠ€ν…œ κΆŒν•œμ˜ 이름
- λ‘€λͺ… : κΆŒν•œμ„ λΆ€μ—¬ν•  λ˜λŠ” κΆŒν•œμ„ 받을 λ‘€ (ROLE)의 이름
- μœ μ €λͺ… : κΆŒν•œμ„ λΆ€μ—¬ 받을 μœ μ €(User) 이름
- PUBLIC : μ‹œμŠ€ν…œκΆŒν•œ, λ˜λŠ” λ°μ΄ν„°λ² μ΄μŠ€ 역할을 λͺ¨λ“  μ‚¬μš©μžμ—κ²Œ λΆ€μ—¬ν•  수 μžˆλ‹€.
- WITH ADMIN OPTION : κΆŒν•œμ„ λΆ€μ—¬ 받은 μ‚¬μš©μžλ„ λΆ€μ—¬ 받은 κΆŒν•œμ„ λ‹€λ₯Έ μ‚¬μš©μž λ˜λŠ” μ—­ν• λ‘œ λΆ€μ—¬ν•  수 μžˆκ²Œλœλ‹€.
​
​
- μ‹œμŠ€ν…œ κΆŒν•œ λΆ€μ—¬(GRANT) 예제
- sys κΆŒν•œμœΌλ‘œ μ ‘μ†ν•œλ‹€. (DBA κΆŒν•œμ„ 가지고 μžˆλŠ” μœ μ €)
SQL >
CONNECT sys/manager AS SYSDBA
​
SQL>
GRANT CREATE USER, ALTER USER, DROP USER
TO scott WITH ADMIN OPTION;
​
​
-μ‹œμŠ€ν…œ κΆŒν•œ 회수 (REVOKE) 예제
SQL>
REVOKE CREATE USER, ALTER USER, DROP USER
FROM scott;
​

✨객체 κΆŒν•œ (Object Privileges) 

κ°μ²΄κΆŒν•œμ€ μ‚¬μš©μžκ°€ μ†Œμœ ν•˜κ³  μžˆλŠ” νŠΉμ • 객체λ₯Ό λ‹€λ₯Έ μ‚¬μš©μžλ“€μ΄ μ ‘κ·Όν•˜κ±°λ‚˜ μ‘°μž‘ν•  수 μžˆλ„λ‘ ν•œλ‹€.

​

- ν…Œμ΄λΈ”μ΄λ‚˜ λ·°, μ‹œν€€μŠ€, ν”„λ‘œμ‹œμ €, ν•¨μˆ˜ λ˜λŠ” νŒ¨ν‚€μ§€ 쀑 μ§€μ •λœ ν•œ 객체에 νŠΉλ³„ν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 있게 ν•œλ‹€.

- 객체 μ†Œμœ μžλŠ” λ‹€λ₯Έ μ‚¬μš©μžμ—κ²Œ νŠΉμ • κ°μ²΄κΆŒν•œμ„ λΆ€μ—¬ν•  수 μžˆλ‹€.

- PUBLIC 으둜 κΆŒν•œμ„ λΆ€μ—¬ν•˜λ©΄ 회수 ν•  λ•Œλ„ PUBLIC 으둜 ν•΄μ•Όν•œλ‹€.

- 기본적으둜 μ†Œμœ ν•œ 객체에 λŒ€ν•΄μ„œλŠ” λͺ¨λ“  κΆŒν•œμ΄ μžλ™μ μœΌλ‘œ νšλ“λœλ‹€.

- WITH GRANT OPTION μ˜΅μ…˜μ€ ROLE 에 κΆŒν•œμ„ λΆ€μ—¬ν•  λ•ŒλŠ” μ‚¬μš©ν•  수 μ—†λ‹€.

-객체 κΆŒν•œ λΆ€μ—¬ (GRANT) κΈ°λ³Έ 문법
SQL>
GRANT [κ°μ²΄κΆŒν•œλͺ…] (컬럼)
ON [객체λͺ…]
TO { μœ μ €λͺ… | λ‘€λͺ… | PUBLC} [WITH GRANT OPTION]
​
-κ°μ²΄κΆŒν•œλͺ… : 객체에 μ‚¬μš© κ°€λŠ₯ν•œ κΆŒν•œ
- 컬럼λͺ… : λ§Œμ•½ ON 절의 Object κ°€ Table μ΄λ‚˜ View 일 경우
- ON 객체λͺ…: Table, VIew, Sequence, Procedure λ“±
- TO {μœ μ €λͺ… | λ‘€λͺ… | PUBLIC} : μ‚¬μš©μžλ₯Ό 일일이 λ‚˜μ—΄ ν•  수 있고, ROLE 에 μ†Œμ†λœ μ‚¬μš©μžκ°€ λ μˆ˜λ„ μžˆλ‹€.
- WITH GRANT OPTION: 이 μ˜΅μ…˜μ„ μ‚¬μš©ν•˜λ©΄ TO 절의 λŒ€μƒλ„ μžμ‹ μ΄ 받은 κΆŒν•œμ„ λ‹€λ₯Έ μœ μ €μ—κ²Œ λΆ€μ—¬ν• μˆ˜ μžˆλ‹€.
​
​
-객체 κΆŒν•œ λΆ€μ—¬ (GRANT) 예제
SQL>
GRANT SELECT ,INSERT
ON mp
TO scott WITH GRANT OPTION
​
​
-객체 κΆŒν•œμ˜ 회수 (Revoke) κΈ°λ³Έ 문법
SQL>
REVOKE { κΆŒν•œλͺ… [, κΆŒν•œλͺ…...] ALL}
ON 객체λͺ…
FROM {μœ μ €λͺ… [, μœ μ €λͺ…...] | λ‘€λͺ…(ROLE) | PUBLIC}
[CASCADE CONSTRAINTS]
​
-객체 κΆŒν•œμ˜ μ² νšŒλŠ” κ·Έ κΆŒν•œμ„ λΆ€μ—¬ν•œ λΆ€μ €μ•Όλ§Œμ΄ μˆ˜ν–‰ν•  수 μžˆλ‹€.
- CASCADE CONSTRAINT :이 λͺ…λ Ήμ–΄μ˜ μ‚¬μš©μœΌλ‘œ μ°Έμ‘° 객체 κΆŒν•œμ—μ„œ μ‚¬μš©λœ μ°Έμ‘° 무결성 μ œν•œμ„ 같이 μ‚­μ œ κ°€λŠ₯
- WITH GRANT OPTION 으둜 객체 κΆŒν•œμ„ λΆ€μ—¬ν•œ μ‚¬μš©μžμ˜ 객체 κΆŒν•œμ„ μ² νšŒν•˜λ©΄
κΆŒν•œμ„ 뢀여받은 μ‚¬μš©μžκ°€ λΆ€μ—¬ν•œ 객체 κΆŒν•œ λ˜ν•œ 같이 μ² νšŒλ˜λŠ” μ’…μ†μ² νšŒκ°€ λ°œμƒν•œλ‹€.
​
​
-객체 κΆŒν•œμ˜ 회수 (Revoke) κΈ°λ³Έ 예제
SQL>
REVOKE SELECT , INSERT
ON emp
FROM scott
[CASCADE CONSTRAINTS]
​

✨ROLE (κΆŒν•œλ“€μ˜ 집합) 

λ‘€(ROLE) μ΄λž€ μ‚¬μš©μžμ—κ²Œ ν—ˆκ°€ ν•  수 μžˆλŠ” κΆŒν•œλ“€μ˜ 집합이라고 ν•  수 μžˆλ‹€.

​

-λ‘€(ROLE)은 CREATE ROLE κΆŒν•œμ„ 가진 USER 에 μ˜ν•΄μ„œ 생성 λœλ‹€.

-λ‘€(ROLE)은 두가지 μš©λ„λ‘œ μ‚¬μš©ν•  수 μžˆλŠ”λ°, μ²«λ²ˆμ§Έλ‘œλŠ” μ‚¬μš©μžμ—κ²Œ κΆŒν•œμ˜ 집합(ROLE)을 λΆ€μ—¬ν•˜λŠ”κ²ƒ.

λ‘λ²ˆμ§ΈλŠ” μ‹œμŠ€ν…œκΆŒν•œμ²˜λŸΌ 'λ‘€(ROLE)을 뢀여받은 μ‚¬μš©μžλ“€μ„ μ‚¬μš©μž 그룹으둜 μ‚¬μš©ν•˜λŠ” 것이닀.

- ν•œ μ‚¬μš©μžκ°€ μ—¬λŸ¬κ°œμ˜ λ‘€ (ROLE)에 μ ‘κ·Όν•  수있고, μ—¬λŸ¬ μ‚¬μš©μžμ—κ²Œ 같은 λ‘€(ROLE)을 λΆ€μ—¬ν•  수 μžˆλ‹€.

- μ‚¬μš©μžλŠ” λ‘€(ROLE)에 (ROLE)을 λΆ€μ—¬ν•  수 μžˆλ‹€.

- 였라클 λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ„€μΉ˜ν•˜λ©΄ 기본적으둜 CONNECT, RESOURCE, DB ROLE 이 μ œκ³΅λœλ‹€.

-DBA κ°€ USER 의 역할에 λ§žλ„λ‘ ROLE 을 μƒμ„±ν•˜μ—¬μ„œ ROLE 만 μœ μ €μ—κ²Œ 지정을 ν•œλ‹€λ©΄ 효율적으둜 μœ μ €λ“€μ˜ κΆŒν•œμ„ 관리할 수 μžˆλ‹€.

1. λ‘€ 생성
SQL> CREATE ROLE salesman;
​
2. 둀에 κΆŒν•œμ„ λΆ€μ—¬
SQL> GRANT create session, create select, TO salesman;
​
3. 둀을 μ‚¬μš©μž λ˜λŠ” λ‘€μ—κ²Œ λΆ€μ—¬
SQL> GRANT salesman TO martin, allen. turner, ward;

 

​

 

 

 

300x250

μ½”λ“œ