보안과 권한 관리
포스트
취소

보안과 권한 관리

보안

데이터베이스 보안의 유형

  • 물리적 환경에 대한 보안
    • 자연 재해 등으로부터 보호한다.
  • 권한 관리를 통한 보안
    • 권한이 없는 사용자로부터 보호한다.
    • 접근이 허락된 사용자만 부여된 권한 내에서 DB를 사용할 수 있도록 한다.
    • 계정이 발급되 사용자만 DB에 접근할 수 있다.
    • 각 사용자별로 DB의 사용 범위와 수행 가능한 작업 내용을 제한할 수 있어야 한다.
  • 운영 관리를 통한 보안
    • 권한이 있는 사용자로부터 보호한다.
    • 실수 등의 이유로 데이터 무결성을 위반하는 행동을 하는 것에 대한 여지를 없애기 위해
      올바른 제약조건을 정의하고, 사용자들이 정의된 제약조건을 위반하지 않도록 통제해야 한다.

권한 관리

  • DBMS는 DB의 보안을 유지하기 위해 계정이 발급된 사용자가
    로그인에 성공했을 경우에만 DB에 접근이 가능하도록 하는
    접근 제어(access control) 기능을 기본으로 제공한다.
    • 모든 사용자는 자신에게 발급된 계정으로 로그인해야 DB에 접근할 수 있다.
  • DB 전체의 보안을 관리하기 위해 필요한 모든 권한은 DBA가 가지고 있다.
  • 로그인을 통해 DB에 접근할 수 있어도 DB 안의 모든 데이터를 사용할 수 있는 것은 아니다.
  • DBMS가 사용자별로 DB의 사용 범위와 수행 가능한 작업을 제한할 수 있다.
    • 각 사용자는 자신에게 허용된 권한 내에서만 DB를 사용할 수 있다.
  • 테이블이나 뷰같이 DB에 존재하는 모든 객체는
    기본적으로 해당 객체를 생성한 사용자만 사용 권한을 가지게 된다.

권한 관리를 통한 보안의 방법

  • 객체 권한
    • 권한 부여
      • GRANT
    • 권한 취소
      • REVOKE
  • 역할
    • 역할 생성
      • CREATE ROLE
    • 역할에 대한 권한 부여
      • GRANT
    • 역할 부여
      • GRANT

권한 부여

  • 테이블과 관련하여 다른 사용자에게 부여할 수 있는 주요 권한
    • INSERT
      • 데이터 삽입
    • DELETE
      • 데이터 삭제
    • UPDATE
      • 데이터 갱신
    • SELECT
      • 데이터 조회
    • REFERENCES
      • 권한 부여 대상인 테이블의 기본키를 참조하는 외래키를
        자신이 생성하는 테이블에 포함할 수 있다.
  • GRANT는 기본적으로 테이블을 구성하는 모든 속성에 권한을 부여한다.
  • 일부 속성만 나열하려면 권한과 함께
    권한을 부여하고 싶은 속성의 목록을 () 안에 나열한다.
  • 모든 사용자에게 동일한 권한을 부여하고 싶다면
    사용자명 대신에 PUBLIC 키워드를 사용하면 된다.
  • GRANT 명령어로 부여받은 권한은 기본적으로 다른 사용자에게 부여할 수 없다.
  • WITH GRANT OPTION을 포함하면 권한을 부여받은 사용자가
    자신이 부여받은 권한을 다른 사용자에게도 부여할 수 있다.
  • 시스템 권한은 특정 객체에 대한 권한이 아니므로 객체를 지정할 필요가 없다.
  • 기본 형식
    • GRANT 권한 ON 객체 TO 사용자 [WITH GRANT OPTION]
  • 예시
    • 고객 테이블에 대한 검색 권한을 사용자 Hong에게 부여
      • GRANT SELECT ON 고객 TO Hong;
    • 고객 테이블에 대한 삽입과 삭제 권한을 모든 사용자에게 부여
      • GRANT INSERT, DELETE ON 고객 TO PUBLIC;
    • 고객 테이블을 구성하는 속성 중 등급과 적립금 속성에 대한
      수정 권한을 사용자 Park에게 부여
      • GRANT UPDATE(등급, 적립금) ON 고객 TO Park;
    • 고객 테이블에 대한 검색 권한과
      해당 권한을 다른 사용자에게 부여할 수 있는 권한을
      사용자 Lee에게 부여
      • GRANT SELECT ON 고객 TO Lee WITH GRANT OPTION;
    • 테이블을 생성할 수 있는 시스템 권한을 사용자 Song에게 부여
      • GRANT CREATE TABLE TO Song;
    • 뷰를 생성할 수 있는 시스템 권한을 사용자 Shin에게 부여
      • GRANT CREATE VIEW TO Shin;

권한 취소

  • 권한 삭제 대상이 되는 사용자가 다른 사용자에게 권한을 부여한 경우
    • 연쇄적으로 권한 취소
      • CASCADE 옵션 지정
    • 대상 사용자만 권한 취소
      • RESTRICT 옵션 지정
  • 시스템 권한은 특정 객체에 대한 권한이 아니므로 객체를 지정할 필요가 없다.
  • 기본 형식
    • REVOKE 권한 ON 객체 FROM 사용자 CASECADE | RESTRICT;
  • 예시
    • 사용자 Hong에게서 고객 테이블에 대한 조회 권한 취소하면서
      Hong이 권한을 부여한 다른 사용자들의 권한도 함깨 취소
      • REVOKE SELECT ON 고객 FROM Hong CASECADE;
    • 사용자 Hong에게서 고객 테이블에 대한 조회 권한 취소하면서
      Hong이 권한을 부여한 다른 사용자들의 권한은 남기고
      Hong의 권한만 취소
      • REVOKE SELECT ON 고객 FROM Hong RESTRICT;
    • Hong에게서 테이블 생성 권한 취소
      • REVOKE CREATE TABLE FROM Hong;

역할의 부여와 취소

  • 역할 생성
    • CREATE ROLE 역할명;
  • 역할에게 권한 부여
    • GRANT 권한 ON 객체 TO 역할명;
  • 사용자에게 역할 부여
    • GRANT 역할명 TO 사용자;
  • 역할에서 권한 취소
    • REVOKE 권한 ON 객체 FROM 역할명;
  • 사용자에게서 역할 취소
    • REVOKE 역할명 FROM 사용자;
  • 역할 삭제
    • DROP ROLE 역할명;
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.