01. 보안
조직에서 허가한 사용자만 데이터베이스에 접근할 수 있도록 통제하여 보안을 유지
권한 관리를 통한 보안
- 접근이 허락된 사용자만 권한 내에서 데이터베이스를 사용하도록 보호
- 계정이 발급된 사용자만 데이터베이스에 접근할 수 있도록 통제하고, 사용자별로 사용 범위와 수행 가능한 작업 내용을 제한
운영 관리를 통한 보안
- 접근이 허락된 사용자가 권한 내에서 데이터베이스를 사용하는 동안 데이터 무결성을 유지하도록 제약조건을 정의하고 위반하지 않도록 통제
02.권한관리
권한 관리의 개념
- 접근 제어(access control)
- 계정이 발급된 사용자가 로그인에 성공했을 경우에만 데이터베이스에 접근 허용
- 사용자 계정 관리는 데이터베이스 관리자가 담당
- 각 사용자는 허용된 권한 내에서만 데이터베이스를 사용
- 로그인에 성공한 사용자도 데이터베이스 사용 범위와 수행 가능한 작업이 제한됨
- 보안을 위한 데이터 단위는 데이터베이스 전체 ~ 특정 테이블의 특정 행과 열 위치에 있는 특정 데이터 값까지 다양함
- 로그인에 성공한 사용자도 데이터베이스 사용 범위와 수행 가능한 작업이 제한됨
- 데이터베이스의 모든 객체는 객체를 생성한 사용자만 사용 권한을 가짐
- 데이터베이스 객체의 소유자는 필요에 따라 SQL 문을 이용해 다른 사용자에게 사용 권한을 부여하거나 취소할 수 있음
객체 권한 부여 : GRANT 문
객체의 소유자가 다른 사용자에게 객체에 대한 사용 권한을 부여
부여 가능한 주요 권한
- INSERT, DELETE, UPDATE, SELECT, REFERENCES(외래키 제약조건을 정의할 수 있는 권한)
UPDATE와 SELECT는 테이블의 일부 속성에 대한 권한 부여도 가능 - 여러 권한을 한 번에 부여하는 것도 가능
- 기본적으로 GRANT 문으로 부여받은 권한은 다른 사용자에게 부여할 수 없음
- PUBLIC : 모든 사용자에게 권한을 똑같이 부여하고 싶다면 특정 사용자를 지정하는 대신 PUBLIC 키워드를 이용하여 작성
- WITH GRANT OPTION : 사용자가 자신이 부여받은 권한을 다른 사용자에게도 부여할 수 있게 함
시스템 권한 부여 : GRANT 문
- 시스템 권한은 데이터베이스 관리자가 부여함
- 시스템 권한 : 데이터베이스 관리와 관련된 작업에 대한 권한
- CREATE TABLE, CREATE VIEW 등 데이터 정의어(DDL)와 관련된 권한들
- 시스템 권한을 부여할 때는 객체를 지정할 필요가 없음
객체 권한 취소 : REVOKE 문
객체 소유자가 다른 사용자에게 부여한 객체의 사용 권한을 취소
- 처리 방법 [사용자 A가 사용자 B에게, 사용자 B는 사용자 C에게 같은 권한을 부여한 경우]
- CASCADE 옵션 – 권한을 취소할 사용자 A가 B뿐 아니라 C가 부여받은 권한도 연쇄적으로 함께 취소
- RESTRICT 옵션 – 권한을 취소할 사용자 A가 C가 부여받은 권한은 취소하지 않도록 함
시스템 권한 취소 : REVOKE 문
데이터베이스 관리자가 다른 사용자에게 부여한 시스템 권한을 취소
특정 객체에 대한 권한 취소가 아니므로 객체를 지정할 필요 없음
권한목록
권한 부여에 관한 내용을 기록한 것
- 사용자들에게 어떤 권한을 부여했는지, WITH GRANT OPTION을 포함하여 권한을 부여했는지 등
- 사용자별로 테이블에 부여된 권한 목록의 관리가 필요
- 데이터베이스 관리자가 담당
역할(role)
개념 : 여러 권한을 그룹으로 묶어놓은 것. 권한들을 넣어둔 바구니
역할의 필요성 :
- 사용자 “Kim”이 자신의 고객 테이블에 대한 검색, 삽입, 삭제 권한을 “Hong”, “Park”, “Lee”에게 모두 부여하려면 작업이 번거로움. 역할을 이용하면 훨씬 더 편리하게 작업할 수 있음
- 여러 사용자에게 동일한 권한들을 부여하고 취소하는 작업을 편리하게 수행할 수 있게 함
- 사용자에게 부여하고 싶은 여러 권한을 역할에 미리 넣어두고 필요할 때 역할을 부여하면 여러 권한을 한 번에 부여할 수 있음
- 사용자에게 부여한 역할을 취소하면 한 번에 여러 권한을 취소할 수 있음
- 권한 관리가 쉬워짐
- 새로운 권한의 추가, 기존 권한의 취소 등 역할에 변화가 생기면 해당 역할을 부여받은 모든 사용자에게 변화가 그대로 전달됨
역할 생성 : CREATE ROLE 문
새로운 역할의 생성은 데이터베이스 관리자가 담당
역할에 권한 추가 : GRANT 문 - 객체와 관련된 권한을 역할에 추가하는 작업은 객체의 소유자가 담당
역할 부여 : GRANT 문 - 역할을 사용자에게 부여하는 것은 데이터베이스 관리자가 담당
역할취소 : REVOKE 문
사용자에게 부여한 역할의 취소는 데이터베이스 관리자가 담당
역할 제거 : DROP ROLE 문
- 역할을 제거하면 제거된 역할을 부여받은 모든 사용자에 대해 역할에 속해 있던 권한이 모두 취소됨
- 역할 제거는 데이터베이스 관리자가 담당
'CS > 데이터베이스' 카테고리의 다른 글
[데이터베이스] 질의 최적화 (0) | 2025.06.16 |
---|---|
[데이터베이스] 병행제어실습 (0) | 2025.06.15 |
[데이터베이스] ch10. 회복과 병행 제어 (0) | 2025.06.09 |
[데이터베이스] ch09. 정규화 (0) | 2025.06.04 |
[데이터베이스] ch08. 데이터베이스 설계 (0) | 2025.06.04 |