개발스토리

권한 관리 본문

Computer Science/데이터베이스

권한 관리

무루뭉 2021. 6. 7. 00:06

 

데이터베이스 보안의 목표

 

 

조직에서 허가한 사용자만 데이터베이스에 접근할 수 있도록 통제하여 보안을 유지하는 것

 

데이터베이스 보안

 

■ 물리적 환경에 대한 보안

- 자연 재해처럼 데이터베이스에 물리적 손실을 발생시키는 위험으로부터 데이터베이스를 보호

■ 권한 관리를 통한 보안

- 접근이 허락된 사용자만 권한 내에서 데이터베이스를 사용하도록 보호

- 계정이 발급된 사용자만 데이터베이스에 접근할 수 있도록 통제하고, 사용자 별로 사용 범위와 수행 가능한 작업 내용을 제한

■ 운영 관리를 통한 보안

- 접근이 허락된 사용자가 권한 내에서 데이터베이스를 사용하는 동안 데이터 무결성을 유지하도록 제약 조건을 정의하고 위반하지 않도록 통제

 

권한 관리의 개념

 

 

■ 접근 제어(Access Control)

- 계정이 발급된 사용자가 로그인에 성공했을 경우에만 데이터베이스에 접근을 허용

- 사용자 계정 관리는 데이터베이스 관리자가 담당

■ 각 사용자는 허용된 권한 내에서만 데이터베이스를 사용

- 로그인에 성공한 사용자도 데이터베이스 사용 범위와 수행 가능한 작업이 제한된다.

■ 데이터베이스의 모든 객체는 생성한 사용자만 사용 권한을 가진다.

- 데이터베이스 객체의 소유자는 필요에 따라 SQL문을 이용해 다른 사용자에게 사용 권한을 부여하거나 취소할 수 있다.

 

 

 

■ 객체 권한 부여 : GRANT

- 객체의 소유자가 다른 사용자에게 객체에 대한 사용 권한을 부여

GRANT 권한 ON 객체 TO 사용자 [WITH GRANT OPTION];

- 부여 가능한 주요 권한 : INSERT, DELETE, UPDATE, SELECT, REFERENCES

- 여러 권한을 한 번에 부여하는 것도 가능하다.

- 기본적으로 GRANT 문으로 부여받은 권한은 다른 사용자에게 부여할 수 없다.

- PUBLIC : 모든 사용자에게 권한을 똑같이 부여하고 싶다면 특정 사용자를 지정하는 대신 PUBLIC 키워드를 이용한다.

- WITH GRANT OPTION : 사용자가 자신이 부여받은 권한을 다른 사용자에게도 부여할 수 있도록 한다.

 

예시를 살펴볼까요~~?!?!

Q 고객 테이블에 대한 검색 권한을 사용자 Hong에게 부여해보자.

> GRANT SELECT ON 고객 TO Hong;

Q 고객 테이블에 대한 삽입과 삭제 권한을 모든 사용자에게 부여해보자.

> GRANT INSERT, DELETE ON 고객 TO PUBLIC;

Q 고객 테이블을 구성하는 속성 중 등급과 적립금 속성에 대한 수정 권한을 사용자 JOO에게 부여해보자

> GRANT UPDATE(등급, 적립금) ON 고객 TO JOO;

Q 고객 테이블에 대한 검색 권한을 WITH GRANT OPTION을 포함하여 사용자 JOO에게 부여해보자

> GRANT SELECT ON 고객 TO JOO WITH GRANT OPTION;

 

■ 시스템 권한 부여 : GRANT

- 시스템 권한은 데이터베이스 관리자가 부여한다.

시스템 권한 : 데이터베이스 관리와 관련된 작업에 대한 권한 : DDL과 관련된 권한들

- 시스템 권한을 부여할 때는 객체를 지정할 필요가 없다.

Q 테이블을 생성할 수 있는 시스템 권한을 사용자 JOO에게 부여해보자

> GRANT CREATE TABLE TO JOO;

Q 뷰를 생성할 수 있는 시스템 권한을 사용자 JOO에게 부여해보자

> GRANT CREATE VIEW TO JOO;

 

■ 객체 권한 취소 : REVOKE

- 객체 소유자가 다른 사용자에게 부여한 객체의 사용 권한을 취소

REVOKE 권한 ON 객체 FROM 사용자 CASCADE | RESTRICT;

 

만약, 사용자 KIM이 HONG에게 부여한 고객 테이블에 대한 검색 권한을 취소한다면 PARM에게 부여된 검색 권한은 어떻게 처리 될까? 

>> CASCADE 또는 RESTRICT 옵션으로 선택이 가능하다.

 

KIM이 HONG에게 부여한 고객 테이블에 대한 검색 권한을 취소하면서 HONG이 다른 사용자에게 부여한
고객 테이블에 대한 검색 권한도 함께 취소

> REVOKE SELECT ON 고객 FROM HONG CASCADE;


HONG이 다른 사용자에게 권한을 부여한 적이 없는 경우에만 KIM이 HONG에게 부여한 고객 테이블에 대한
검색 권한을 취소

> REVOKE SELECT ON 고객 FROM HONG RESTRICT;

 

■ 시스템 권한 취소 : REVOKE

- 데이터베이스 관리자가 다른 사용자에게 부여한 시스템 권한을 취소

- 특정 객체에 대한 권한 취소가 아니므로 객체를 지정할 필요가 없다.

JOO에게 부여한 테이블 생성 권한 취소

> REVOKE CREATE TABLE FROM JOO;

 

■ 권한 목록

 

- 권한 부여에 관한 내용을 기록

- 사용자들에게 어떤 권한을 부여했는지, WITH GRANT OPTION을 포함하여 권한을 부여했는지 등

 

 

여기서 만약 KIM이 권한을 JOO, PARK, HONG에게 모두 부여하려면 작업이 번거로워진다. 그래서 역할의 개념을 알아야 한다!

 

역할

 

여러 권한을 그룹으로 묶어놓은 것

 

■ 역할의 필요성

- 여러 사용자에게 동일한 권한들을 부여하고 취소하는 작업을 편리하게 수행할 수 있도록 한다.

- 사용자에게 부여하고 싶은 여러 권한을 미리 넣어두고 필요할 때 역할을 부여하면 여러 권한을 한 번에 부여 가능

- 사용자에게 부여한 역할을 취소하면 한 번에 여러 권한을 취소할 수 있다.

- 권한 관리가 쉬워진다.

- 새로운 권한의 추가, 기존 권한의 취소 등 역할에 변화가 생기면 해당 역할을 부여받은 모든 사용자에게 변화가 그대로 전달된다.

 

■ 역할 생성 : CREATE ROLE

role이라는 이름의 역할 생성

> CREATE ROLE role;

 

■ 역할에 권한 추가 : GRANT

형식 : GRANT 권한 ON 객체 TO 롤이름;

고객 테이블에 대한 검색/삽입/삭제 권한을 role 역할에 넣어보자

> GRANT SELECT, INSERT, DELETE ON 고객 role;

- 객체와 관련된 권한을 역할에 추가하는 작업은 객체의 소유자가 담당한다.

 

■ 역할 부여 : GRANT

형식 : GRANT 롤이름 TO 사용자;

고객 테이블에 대한 검색/삽입/삭제 권한을 포함하고 있는 role 역할을 사용자 JOO에게 부여해보자

> GRANT role TO JOO;

- 역할을 사용자에게 부여하는 것은 데이터베이스 관리자가 담당한다.

 

 

- 위 그림처럼 역할을 이용하면 권한을 쉽게 부여할 수 있고 새로운 권한의 추가도 간편하게 수행된다.

 

■ 역할 취소 : REVOKE

형식 : REVOKE 롤이름 FROM 사용자;

사용자 JOO에게 부여한 role 역할을 취소해보자

> REVOKE role FROM JOO;

- 사용자에게 부여한 역할의 취소는 데이터베이스 관리자가 담당한다.

 

■ 역할 제거 : DROP ROLE

형식 : DROP ROLE 롤이름;

생성한 role 역할을 제거해보자

> DROP ROLE role;

- 역할을 제거하면 제거된 역할을 부여받은 모든 사용자에 대해 역할에 속해 있던 권한이 모두 취소된다.

- 역할 제거는 데이터베이스 관리자가 담당한다.

'Computer Science > 데이터베이스' 카테고리의 다른 글

Database Connection Pool  (1) 2021.08.30
회복과 병행제어4  (0) 2021.06.06
회복과 병행제어3  (0) 2021.05.25
회복과 병행제어2  (1) 2021.05.25
회복과 병행 제어  (0) 2021.05.24
Comments