-
[DB] Msql 권한데이터베이스 2020. 12. 8. 04:50728x90
권한 (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 -