ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [DB] Msql 권한
    데이터베이스 2020. 12. 8. 04:50
    728x90

    권한 (Authorization)

    데이터베이스 관리자(DBA) 가 다른 사용자에게 권한을 부여, 회수 할 수 있음

    데이터 권한

    • Read 권한 : 읽기는 가능하지만 데이터 수정은 불가능

    • Insert 권한 : 새로운 데이터의 생성은 가능하지만 데이터 수정은 불가능

    • Update 권한 : 수정은 가능하지만 데이터 삭제는 불가능

    • Delete 권한 : 데이터 삭제 가능

    스키마 수정 권한

    • 인덱스 권한 : 인덱스를 만들고, 제거할 수 있는 권한

    • 리소스 권한 : 테이블 생성 권한

    • Alteration 권한 : 테이블 속성 추가, 삭제 권한

    • 드랍 권한 : 테이블 삭제 권한

    권리(Privilege)

    • select

    • insert

    • update

    • delete

    • references : 권한을 부여받은 사용자만 FK 를 만들 수 있도록 함

    • usage : 특정 domain 만 사용할 수 있도록 제한

    • all privileges : 모든 권한을 부여

    권한 부여(Grant)

    GRANT <privilege list> ON <Relation name> TO <User list> [with grant option]

    <User list>

    • user-id

    • role

    • public (모든 사용자)

    with grant option

    이 권한을 받은 사용자가 또 다른 사용자에게 권하을 줄 수 있게 허용할 것인지에 대한 여부

    GRANT select ON professor to U1, U2, U3 WITH GRANT OPTION;  -- U1, U2, U3에게 professor 테이블 읽기 권한을 줌
    GRANT reference(deptName) ON department to Mario; -- Mario 에게 department.deptName 를 참조할 수 있는 권한을 줌

    권한 회수 (Revoke)

    REVOKE <Privilege list> ON <Relation name> FROM <User list> [restricted | cascade];

    REVOKE select ON professor FROM U1, U2, U3;

     

    Cascade(Default) : 이 사용자가 다른 사용자에게 준 권한도 연쇄적으로 회수

    Restricted : 이 사용자가 다른 사용자에게 권한을 준 것이 있다면 권한 회수 실패 처리

    Authorization grant graph

    V1 → V2 는 V1 이 V2 에게 권한을 부여했음을 의미함. 따라서 cascade 로 revoke 를 수행한다면 grant graph 의 역방향으로 회수

     

    뷰에 대한 권한

    • 베이스 테이블의 select 권한이 있어야 뷰를 생성할 수 있음

      • 리소스 권한은 필요하지 않음 ( 테이블 생성을 하려면 리소스 권한이 필요함 )

    • 뷰를 만들었다는 것이 뷰에 대한 모든 권한을 지녔다는 의미는 아님 → 베이스 테이블의 권한만큼만 가짐

      • 즉 뷰에 insert 를 하고싶다면 베이스 테이블에 insert 권한을 갖고 있어야함

    • 뷰 자체가 권한 설정으로 이용됨 ( 특정 컬럼만 공개하고 싶을 때 주로 사용 )

    CREATE VIEW myTeach AS
    SELECT name, title
    FROM professor, teaches, course
    WHERE teaches.pID = professor.pID AND course.cID = teaches.cID AND semester = ‘Fall’ AND year = 2014;

     

    위와 같이 View 를 만들어두고, 다른 사용자들에게는 professor 의 select 권한을 주는 것이 아닌 myTeach 의 권한을 부여함

     

    주의해야 할 점은 사용자 A 가 myTeach 의 select 권한을 부여 받았을 때 A가 professor, teaches, course 테이블의 select 권한을 갖지 않아도 select 를 수행할 수 있다는 것임

    뷰를 만든 이의 기본 권한과 권한을 부여 받은 이의 권한 정책을 헷갈리면 안됨

    • 만든이 : 베이스 테이블의 select 권한이 있어야하며, 만들어진 뷰에 대한 권한 또한 베이스 테이블의 권한에 한함

    • 권한을 부여 받은 이 : 만든이와는 달리 뷰 자체의 권한만을 바라봄

    Role

    집단 공통 권한을 부여할 때 사용하는 기능임

    회사에서 팀이나 부서 별로 권한을 달리 부여할 때, 직급별로 권한을 달리 부여할 때 유용한 기능임 (집단 단위의 권한)

    CREATE ROLE teller;
    CREATE ROLE manager;
    GRANT select ON professor TO teller;
    GRANT update(balance) ON account To teller;
    GRANT ALL PRIVILEGES ON account To manager;
    
    GRANT teller TO kim, park;
    GRANT manager TO Lee;
    GRANT teller to manager;  -- role 에게 role 부여

     

    '데이터베이스' 카테고리의 다른 글

    [DB] DB 와 응용프로그램  (0) 2020.12.09
    [DB] 순환질의 (Recursive query)  (0) 2020.12.08
    [DB] Mysql 트리거  (0) 2020.12.08
    [DB] On Delete, On Update, Check, Assertion  (0) 2020.12.06
    [DB] Mysql View  (0) 2020.12.06

    댓글

Designed by Tistory.