본문 바로가기
CS/DB

[DB - 데이터베이스 개론] Chapter 11. 보안과 권한 관리

by 원만사 2022. 2. 7.
반응형

목차

     

    01. 보안 

     데이터베이스는 조직에서 허가한 사용자만 접근할 수 있도록 통제하여 보안을 유지하는 일이 무척 중요하다. 데이터베이스의 보안은 데이터를 보호하는 방법을 고려하는 측면에 따라 다양하게 구분할 수 있는데, 일반적으로 다음 세 가지 유형으로 구분된다.

     

    데이터베이스 보안의 유형

     

    ① 물리적 환경에 대한 보안

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

     

    ② 권한 관리를 통한 보안

    - 접근이 허락된 사용자만 부여된 권한 내에서 데이터베이스를 사용할 수 있도록 한다. 계정이 발급된 사용자만 데이터베이스에 접근할 수 있도록 통제하고, 사용자별로 데이터베이스의 사용 범위와 수행 가능한 작업 내용을 제한할 수 있어야 한다.

     

    ③ 운영 관리를 통한 보안

    - 데이터 무결성을 유지하기 위해 올바른 제약조건을 정의하고, 사용자들이 정의된 제약조건을 위반하지 않도록 통제해야 한다.

     

    02. 권한 관리

    1. 권한 관리의 개념

     DBMS은 데이터베이스의 보안을 유지하기 위해, 계정이 발급된 사용자가 로그인에 성공했을 경우에만 데이터베이스에 접근이 가능하도록 접근 제어(access control) 기능을 기본으로 제공한다. 

     

     사용자 계정 관리는 DBMS의 데이터베이스 관리자가 담당한다. 데이터베이스 관리자는 데이터베이스 전체의 보안을 관리하기 위해 필요한 모든 권한을 가지고 있다.

     

     로그인을 통해 데이터베이스에 접근하더라도 데이터베이스 안에 있는 모든 데이터를 사용할 수 있는 것은 아니다. 사용자별로 데이터베이스의 사용 범위와 수행 가능한 작업을 제한할 수 있어, 각 사용자는 자신에게 허용된 권한 내에서만 데이터베이스를 사용할 수 있다. 

     기본적으로 데이터베이스의 모든 객체는 해당 객체를 생성한 사용자만 권한을 가지게 된다. 하지만 SQL 문을 이용해 다른 사용자에게 자신이 생성한 객체에 대한 적절한 수준의 사용 권한을 부여하거나 취소할 수 있다. 

     

    권한 관리를 통한 보안 (출처: https://minkwon4.tistory.com/316)

     

     

    2. 권한의 부여

     객체의 소유자가 다른 사용자에게 객체에 대한 사용 권한을 부여하기 위해 필요한 SQL 명령문 GRANT 문의 기본 형식은 다음과 같다.

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

     

     테이블과 관련하여 다른 사용자에게 부여할 수 있는 주요 권한으로는 INSERT, DELETE, UPDATE, SELECT, REFERENCES가 있다. REFERENCES는 외래키 제약조건을 정의할 수 있는 권한에 해당한다. 일부 속성만 권한을 부여하려면 권한과 함께 권한을 부여하고 싶은 속성의 이름을 ( )안에 나열하면 된다. 모든 사용자에게 권한을 똑같이 부여하고 싶다면 특정 사용자를 지정하는 대신 PUBLIC 키워드를 이용하여 GRANT 문을 작성한다.

     

     GRANT 명령어로 부여받은 권한은 기본적으로 다른 사용자에게 부여할 수 없지만 WITH GRANT OPTION을 포함하면 권한을 부여받은 사용자가 자신이 부여받은 권한을 다른 사용자에게도 부여할 수 있다. 

     

     보안을 강화하기 위해 뷰를 이용할 수도 있다. 뷰를 이용하면 사용자가 테이블에 직접 접근하지 못하게 하면서 사용자에게 필요한 테이블 일부만 제공할 수 있다. 따라서 사용자와 관련 없는 테이블의 다른 부분을 숨겨 보안을 유지하는 데 도움이 된다. 테이블에서 사용자가 업무를 수행하는 데 필요한 테이블의 일부분을 뷰로 생성한 후 사용자에게 이 뷰에 대한 권한을 부여하는 것도 보안을 유지하는 데 도움이 될 수 있다. 

     

     객체에 대한 권한은 해당 객체의 소유자가 부여하지만 시스템 권한은 데이터베이스 관리자가 부여할 수 있다. 시스템 권한은 데이터베이스 관리와 관련된 작업에 대한 권한이다. 테이블 생성이나 뷰 생성 문 데이터 정의어(DDL)와 관련된 작업에 대한 권한들이 시스템 권한에 속한다. 시스템 권한 부여 역시 GRANT 명령어를 이용하는데, 시스템 권한을 부여할 때는 객체를 따로 지정할 필요가 없다. 

     

    3. 권한의 취소

     GRANT 명령어를 통해 다른 사용자에게 권한을 부여한 사용자가 자신이 부여한 권한을 취소할 수도 있다. 이를 위해 필요한 SQL 명령어는 REVOKE이며 REVOKE 문의 기본 형식은 다음과 같다.

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

     

     CASCADE와 RESTRICT는 다음과 같은 상황에서 어떤 옵션을 사용할지를 결정하면 된다. 테이블의 소유자인 A가 B에게 권한을 부여했고 B는 해당 테이블의 권한을 C에게 부여했다. A가 B의 권한을 취소할 때 B가 C에게 부여한 권한을 어떻게 처리해야 할까?

     C에게 주어진 권한 역시 취소하려면 CASCADE를 사용하면 된다. CASCADE를 사용하면 A가 B뿐만 아니라 C가 부여받은 권한도 연쇄적으로 함께 취소할 수 있다.

     C가 부여받은 권한은 취소하지 않도록 하려면 RESTRICT 옵션을 지정하면 된다.

     

     데이터베이스 관리자가 다른 사용자에게 부여한 시스템 권한을 취소할 때도 REVOKE 문을 이용한다. 단, 객체를 따로 지정할 필요는 없다.

     

    4. 역할의 부여와 취소

     여러 사용자에게 동일한 권한들을 부여하고 취소하는 번거로운 작업을 편리하게 수행할 수 있도록 도움을 주는 것이 역할(role)에 해당한다. 역할은 여러 권한을 그룹으로 묶어놓은 것으로, 권한들을 넣어둔 바구니로 이해하면 쉽다. 사용자에게 부여하고 싶은 여러 권한을 역할에 미리 넣어두고 필요할 때 역할을 부여하면 여러 권한을 쉽게 부여할 수 있다. 

     

     새로운 역할을 생성하는 기능은 데이터베이스 관리자가 담당한다. 역할을 생성하는 데 필요한 SQL 명령어는 CREATE ROLE이며 기본 형식은 다음과 같다.

    CREATE ROLE 롤이름;

     

     역할에 필요한 권한들을 넣을 때는 GRANT 명령어를 이용한다. 역할에 객체와 관련된 권한을 넣는 작업은 객체의 소유자가 담당한다. 역할에 권한을 넣은 GRANT 문의 기본 형식은 다음과 같다.

    GRANT 권한 ON 객체 TO 롤이름;

     

     역할을 사용자에게 부여하는 것은 데이터베이스 관리자가 담당하며 GRANT 문을 이용한다. 기본 형식은 다음과 같다.

    GRANT 롤이름 TO 사용자;

     

     역할을 이용하면 GRANT 문 하나만으로도 여러 권한을 한 번에 부여할 수 있다. 그리고 또 다른 사용자에게 해당 테이블에 대한 권한을 부여해야 하는 경우에도 해당 역할만 부여하면 된다. 

     

     새로운 권한의 추가, 기존 권한의 취소 등 역할에 변화가 생기면 해당 역할을 부여받은 모든 사용자에게 변화가 그대로 전달된다. 즉, 역할을 부여받은 모든 사용자의 권한도 변경된 역할에 맞게 자동으로 변경되므로 역할을 이용하면 권한을 관리하기가 더 쉬워진다. 

     

     사용자에게 부여받은 역할을 취소하는 작업은 데이터베이스 관리자가 담당하며, 권한 취소처럼 REVOKE 문을 이용한다. 기본 형식은 다음과 같다.

    REVOKE 롤이름 FROM 사용자;

     

     역할을 제거하면 제거된 역할을 부여받은 모든 사용자도 역할에 속해 있던 권한을 더는 가지지 못하게 된다. 역할 제거는 데이터베이스 관리자가 담당하며 DROP ROLE 문을 이용한다. 기본 형식은 다음과 같다.

    DROP ROLE 롤이름;

     

    REFERENCE

     

    데이터베이스 개론 - 교보문고

    [요약]①데이터베이스 기초 이론 : 1장에서 데이터베이스를, 2장에서 DBMS를 소개합니다. 3장에서는 이들을 조합한 데이터베이스 시스템을 소개합니다.②데이터 모델과 연산 : 4장에서 데이터 모

    www.kyobobook.co.kr

     

    반응형

    댓글