[CS] 데이터베이스 - 보안, 권한 관리

두두·2023년 12월 19일
0

CS

목록 보기
14/14

데이터베이스가 손실되면 데이터베이스를 소유한 조직체의 운영에 심대한
지장을 초래할 수 있음
→ 권한이 없는 사용자로부터 데이터베이스를 보호해야 함

당연함.. 

보안

보안 유형

1. 물리적 보호

자연 재해(화재, 지진 등), 도둑, 컴퓨터 시스템에 대한 우연한 손상, 데이터에 손상을 주는 기타 유형의 위험으로부터 데이터베이스를 "물리적으로" 보호하는 것

2. 권한 보호

"권한을 가진 사용자"만 특정한 접근 모드로 데이터베이스를 접근할 수 있
도록 보호

3. 운영 보호

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


보안 기법

임의 보안 기법

사용자들에게 특정 릴레이션, 투플, 또는 애트리뷰트를 지정된 모드(ex. 읽기, 삽입, 삭제, 수정)로 접근할 수 있는 권한을 허가/취소 (grant/revoke) 하는 기법

  • discretionary security mechanism
  • 대부분의 상용 관계 DBMS에서 사용되는 기법
  • DBMS는 시스템 카탈로그에 누가 권한을 허가받았고 권한을 취소 당했
    는가를 유지함

강제 보안 기법

데이터와 사용자들을 다양한 보안 등급(1급, 2급, 3급 비밀, 일반 정보 등)으로 분류하고
해당 조직에 적합한 보안 정책을 적용하여 다 단계 보안을 시행하기 위해 사용됨

  • mandatory security mechanism
  • 아직 대부분의 상용 관계 DBMS는 이런 보안 기법을 제공하지 않음




권한 관리

서로 다른 객체들에 대해서 다양한 권한들이 존재하는데,
여기서 모든 권한을 가진 사람은 반드시 한 명 있어야함.

누구겠음
객체를 만든 사람 == 객체 생성자가 객체에 대한 모든 권한을 가짐

이 생성자가 다른 사용자나 역할에게 본인이 소유한 객체의 특정 권한
주거나/뺏을 수 있음!

이로 권한을 관리하는 것.


권한 허가

그러면 생성자는 권한을 어떻게 주냐!!
grant문으로 줌

  • GRANT절에 SELECT, INSERT, DELETE, UPDATE, REFERENCES 중 한 개 이상의 권한을 포함 가능
    • UPDATE
      UPDATE문을 사용하여 애트리뷰트를 수정하려면 그 애트리뷰트에 대한
      UPDATE 권한이 필요
    • REFERENCES
      릴레이션을 참조하는 외래 키 제약 조건을 만들려면 해당 릴레이션에 대해
      REFERENCES 권한이 필요

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

‼️ 기본 릴레이션의 소유자가 다른 사용자들이 릴레이션에 직접 접근하지 못하
게 하려는 경우
➡️ 릴레이션 자체에 대한 권한은 허가하지 X
➡️ 릴레이션을 참조하는 를 정의한 후, 이 뷰에 대해 권한을 부여


권한 취소

권한을 줄 수 있으면 당연히 취소도 할 수 있어야겠쥬?
이때는 REVOKE문을 사용함

  • 취소하려는 권한을 허가했던 사람만 그 권한을 취소할 수 있음
  • 권한을 허가했던 사람은 자신이 권한을 허가했던 사용자로부터만 권한을
    취소할 수 있음

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


역할(ROLE)

왜 사용하는데..?

여러 사용자들에 대한 권한 관리를 단순화하기 위해

그게 뭔데

  • 역할은 사용자에게 허가할 수 있는 연관된 권한들의 그룹으로서 이름을 가짐
  • 각 사용자는 여러 역할들에 속할 수 있으며 여러 사용자들이 동일한 역할을
    허가받을 수 있음
  • 동일한 권한들의 집합을 여러 사용자들에게 허가하는 대신에 이 권한들을 역
    할에게 허가하고, 역할을 각 사용자에게 허가함
  • 어떤 역할과 연관된 권한들에 변화가 생기면 그 역할을 허가받은 모든 사용
    자들은 자동적으로 즉시 변경된 권한들을 가지게 됨

어떻게 만드는데

CREATE ROLE문을 사용하여 역할을 생성함

아래는 예시

  • programmer 역할 생성
CREATE ROLE programmer;
  • programmer 역할에게 CREATE VIEW 권한을 부여
GRANT CREATE VIEW ON mydb.*
TO programmer;
  • 사용자 CHOI에게 programmer 역할을 허가
GRANT programmer
TO CHOI;
profile
멋쟁이가 될테야

0개의 댓글