Database - 데이터베이스 보안

Bomin Seo·2022년 7월 26일
0

데이터 베이스 보안과 권한 관리

  • 데이터베이스가 손실되면 데이터베이스를 소유한 조직체의 운영에 심대한 지장을 초래할 수 있으므로 권한이 없는 사용자로부터 데이터베이스를 보호하는 것이 중요하다.
  • 데이터베이스에서 릴레이션을 생성하면 생성자를 제외한 다른 사용자들은 그 릴레이션에 접근할 수 없다.
  • 공유 데이터베이스에 생성된 릴레이션들은 일반적으로 여러 사용자들이 접근할 수 있도록 권한을 허가한다.
  • DBMS는 릴레이션의 생성자가 다른 사용자들에게 적절한 수준의 권한을 허가하고, 허가한 권한을 취소하는 권한 관리 기법을 제공한다.

3가지 유형의 보안

물리적 보호

  • 화재, 홍수, 지진 등과 같은 자연 재해, 도둑, 컴퓨터 시스템에 대한 우연한 손상, 데이터에 손상을 주는 기타 유형의 위험으로부터 데이터베이스를 보호하는 것

권한 보호

  • 권한을 가진 사용자들만 특정한 접근 모드로 데이터베이스에 접근할 수 있도록 보호하는 것

운영 보호

  • 데이터베이스의 무결성에 대한 사용자 실수의 영향을 최소화하거나 제거하는 조치

DBMS가 데이터베이스 보안과 관련하여 제공해야 하는 2가지 기능

접근 제어

  • 데이터베이스 시스템에 대한 접근을 통제할 수 있는 기능
  • DBMS는 로그인 과정을 통제하기 위하여 사용자 계정과 암호를 관리한다.

보안 및 권한 관리

  • DBMS는 특정 사용자 또는 사용자들의 그룹이 지정된 데이터베이스 영역만 접근할 수 있고 그 외의 영역은 접근할 수 없도록 통제하는 기능을 제공한다.

2가지 보안 기법

임의 보안 기법

  • 사용자들에게 특정 릴레이션, 투플, 애트리뷰트를 지정된 모드(읽기, 삽입, 삭제, 수정)로 접근할 수 있는 권한을 허가(grant)하고 취소(revoke)하는 기법
  • 대부분의 상용 관계 DBMS에서 사용되는 기법
  • DBMS는 시스템 카탈로그에 누가 권한을 허가 받았고 권한을 취소당했는가를 유지한다.

강제 보안 기법

  • 데이터와 사용자들을 다양한 보안 등급(1급 비밀, 2급 비밀, 3급 비밀, 일반 정보 등)으로 분류하고 해당 조직에 적합한 보안 정책을 적용하여 다단계 보안을 시행하기 위해 사용된다.
  • 대부분의 상용 관계 DBMS는 이런 보안 기법을 제공하지 않는다.

데이터베이스 보안을 위해 데이터베이스 관리자가 수행하는 작업

  • 사용자 또는 사용자들의 그룹에 대한 새로운 계정과 암호의 생성, 권한 부여와 취소, 특정 계정에 대한 특정 권한의 부여와 취소 등
  • 각 로그인 세션 동안 사용자가 데이터베이스에 가한 모든 연산들을 기록할 수 있다.
  • 권한이 없는 사용자가 데이터베이스를 갱신했다는 의심이 들면 데이터베이스 감사를 실시할 수 있다.
     데이터베이스 감사는 특정 기간 동안 데이터베이스에서 수행된 모든 연산들을 검사하기 위해서 시스템 로그를 조사하는 것

권한 관리

권한 허가

  • 서로 다른 객체들에 대해서 다양한 권한들이 존재한다.

  • 객체의 생성자는 객체에 대한 모든 권한을 가진다.

  • 생성자는 자신이 소유한 임의의 객체에 대한 특정 권한을 GRANT문을 사용하여 다른 사용자나 역할에게 허가할 수 있다.

  • GRANT절에 SELECT, INSERT, DELETE, UPDATE, REFERENCES 중 1개 이상의 권한을 포함할 수 있다.

  • UPDATE문을 사용하여 애트리뷰트를 수정하려면 그 애트리뷰트에 대한 UPDATE 권한이 필요하다.

  • 릴레이션을 참조하는 외래 키 제약조건을 만들려면 해당 릴레이션에 대해 REFERENCES권한이 필요하다.

  • 만일 어떤 사용자가 WITH GRANT OPTION절과 함께 권한을 허가 받았으면 그 사용자도 WITH GRANT OPTION과 함께 또는 없이 그 권한을 다른 사용자에게 허가할 수 있다.

  • 기본 릴레이션의 소유자가 다른 사용자들이 릴레이션에 직접 접근하지 못하게 하려는 경우에는 릴레이션 자체에 대한 권한을 허가하지 않고, 참조하는 뷰를 정의한 후 뷰에 대한 권한을 부여할 수 있다.

권한 취소

  • 다른 사용자에게 허가한 권한을 취소하기 위해서 REVOKE문을 사용한다.

  • 만일 어떤 사용자가 허가했던 권한을 취소하면 권한을 취소당한 사용자가 WITH GRANT OPTION을 통해서 다른 사용자에게 허가했던 권한들도 연쇄적으로 취소된다.

  • 취소하려는 권한을 허가했던 사람만 그 권한을 취소할 수 있다.

  • 권한을 허가했던 사람은 자신이 권한을 허가했던 사용자로부터만 권한을 취소할 수 있다.

역할

  • 여러 사용자들에 대한 권한 관리를 단순화하기 위해 역할을 사용한다.
  • 역할은 사용자에게 허가할 수 있는 연관된 권한들의 그룹으로서 이름을 가진다.
  • 각 사용자는 여러 역할들에 속할 수 있으며 여러 사용자들이 동일한 역할을 부여받을 수 있다.
  • 동일한 권한들의 집합을 여러 사용자들에게 허가하는 대신에 이 권한들을 역할에게 허가하고, 역할을 사용자에게 허가한다.
  • 어떤 역할과 연관된 권한들에 변화가 생기면 그 역할을 허가 받은 모든 사용자들은 자동적으로 즉시 변경된 권한들을 가진다.
  • 역할을 생성하는 방법은 DBMS마다 다르며, 오라클에서는 CREATE ROLE문을 사용하여 역할을 생성한다.

profile
KHU, SWCON

0개의 댓글