패스트캠퍼스 환급챌린지 33일차 : 한 번에 끝내는 컴퓨터 공학 & 인공지능 복수전공 초격차 패키지 강의 후기
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
Ch 2. 데이터베이스 개론 - 데이터베이스 보안과 권한 관리
데이터베이스 보안과 권한 관리: DCL(데이터 제어어)
데이터베이스는 조직의 중요한 정보를 저장하는 핵심 자산이다. 따라서 데이터베이스의 기밀성(Confidentiality), 무결성(Integrity), 가용성(Availability)을 보장하는 보안은 매우 중요하다. 데이터베이스 보안 위협의 주요 원인으로는 권한 있는 사용자의 오남용, 인적 오류, 소프트웨어 취약점 악용 등이 있다. 이러한 위협으로부터 데이터를 보호하기 위해 데이터베이스는 접근 제어(Access Control), 감사(Auditing), 인증(Authentication), 암호화(Encryption) 등 다양한 보안 기능을 제공한다.
이 중 데이터에 대한 접근을 제어하고 사용자에게 권한을 부여하거나 회수하는 데 사용되는 SQL 명령어를 DCL(Data Control Language)이라고 한다. DCL은 데이터베이스 관리자(DBA)가 사용자별로 서로 다른 권한을 부여하고 관리함으로써 보안 설정을 강화하는 데 필수적인 역할을 수행한다.
1. 권한 부여: GRANT 명령어
GRANT 명령어는 데이터베이스의 특정 작업에 대한 수행 권한을 사용자에게 부여할 때 사용한다. 권한은 크게 두 가지로 나눌 수 있다.
- 시스템 권한 (System Privileges): 데이터베이스에 접속하거나, 객체를 생성하는 등 데이터베이스 자체에 대한 권한을 의미한다.
- CREATE SESSION: 데이터베이스에 접속할 수 있는 권한.
- CREATE TABLE: 테이블을 생성할 수 있는 권한.
- CREATE USER: 사용자 계정을 생성할 수 있는 권한.
- 객체 권한 (Object Privileges): 특정 테이블, 뷰, 시퀀스 등 데이터베이스 객체에 접근하고 조작할 수 있는 권한을 의미한다.
- SELECT: 테이블이나 뷰의 데이터를 조회할 수 있는 권한.
- INSERT: 테이블이나 뷰에 데이터를 삽입할 수 있는 권한.
- UPDATE: 테이블이나 뷰의 데이터를 수정할 수 있는 권한.
- DELETE: 테이블이나 뷰의 데이터를 삭제할 수 있는 권한.
GRANT 명령어 형식
GRANT <권한 리스트> ON <객체명> TO <사용자 리스트>;
- <권한 리스트>: SELECT, INSERT, UPDATE, DELETE 등 하나 이상의 권한을 지정한다. 모든 종류의 권한을 부여하려면 ALL PRIVILEGES 키워드를 사용한다.
- <객체명>: 권한을 부여할 테이블, 뷰, 시퀀스 등의 객체 이름을 지정한다.
- <사용자 리스트>: 권한을 부여받을 사용자들의 리스트를 지정한다.
GRANT 명령어 예시
- student 테이블에 대한 SELECT 권한을 kim 사용자에게 부여:
GRANT SELECT ON student TO kim;
- student 테이블에 대한 모든 권한을 lee 사용자에게 부여:
GRANT ALL PRIVILEGES ON student TO lee;
WITH GRANT OPTION
WITH GRANT OPTION을 사용하여 권한을 부여하면, 권한을 받은 사용자가 자신이 부여받은 권한을 다른 사용자에게 다시 부여할 수 있는 권한 전파 기능을 활성화한다.
GRANT SELECT ON student TO kim WITH GRANT OPTION;
2. 권한 회수: REVOKE 명령어
REVOKE 명령어는 사용자에게 부여했던 권한을 회수할 때 사용한다.
REVOKE 명령어 형식
REVOKE <권한 리스트> ON <객체명> FROM <사용자 리스트>;
- REVOKE는 GRANT와 형식은 유사하지만, TO 대신 FROM을 사용한다.
REVOKE 명령어 예시
- kim 사용자로부터 student 테이블의 SELECT 권한을 회수:
REVOKE SELECT ON student FROM kim;
- WITH GRANT OPTION을 통해 부여된 권한을 회수할 경우, 권한을 부여받았던 사용자가 다른 사용자에게 전파했던 권한까지도 연쇄적으로 함께 회수된다.
3. 역할 기반 권한 관리: ROLE
ROLE은 여러 개의 권한을 그룹으로 묶어서 사용자에게 보다 간편하게 부여할 수 있도록 하는 기능이다. 복잡한 권한 체계를 효율적으로 관리할 수 있어 보안 설정을 단순화하는 데 도움이 된다.
- 역할의 장점:
- 여러 권한을 묶어 관리할 수 있다.
- 역할에 부여된 권한을 수정하면, 그 역할을 부여받은 모든 사용자에게 자동으로 변경 사항이 반영된다.
- 역할을 활성화하거나 비활성화하여 일시적으로 권한을 부여하거나 철회할 수 있다.
ROLE 관련 명령어
- 역할 생성:
CREATE ROLE <롤 이름>;
- 역할에 권한 부여: GRANT 명령어를 사용하여 역할에 권한을 지정한다.
-
SQL
GRANT SELECT, INSERT ON student TO <롤 이름>;
- 사용자에게 역할 부여:
GRANT <롤 이름> TO <사용자 이름>;
- 사용자로부터 역할 회수: REVOKE 명령어를 사용하여 역할 부여를 회수할 수 있다.
REVOKE <롤 이름> FROM <사용자 이름>;
데이터베이스 보안은 데이터의 기밀성, 무결성, 가용성을 보장하기 위한 필수적인 요소이며, DCL 명령어인 GRANT, REVOKE, 그리고 ROLE은 이러한 보안을 효과적으로 구현하는 핵심적인 도구이다. GRANT와 REVOKE를 통해 사용자별로 세밀한 접근 권한을 관리하고, ROLE을 통해 복잡한 권한 체계를 간소화할 수 있다. 이러한 명령어를 올바르게 활용하여 데이터에 대한 무단 액세스를 제한하고, 조직의 데이터를 안전하게 보호하는 것이 중요하다.
그 동안 쿼리 잊어먹으면 구글링 필수였는데, 이제 정리해놨으니 내 블로그에서 확인하는게 가능하다! 후후
https://fastcampus.info/4n8ztzq
(~6/20) 50일의 기적 AI 환급반💫 | 패스트캠퍼스
초간단 미션! 하루 20분 공부하고 수강료 전액 환급에 AI 스킬 장착까지!
fastcampus.co.kr