2. DBMS이야기/01. PostgreSQL

PostgreSQL Privileges Part.2

OSSW(Open Source System SoftWare 2014. 6. 30. 00:37

PostgreSQL  Privileges Part.2

 

 

4) Privilege 해제 : REVOKE

Privilege를 해제하려면 revoke 명령어를 사용하여 권한을 해제할 수 있습니다.

revoke 문의 문법은 다음과 같습니다.

 

REVOKE [ GRANT OPTION FOR ]
    { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
    [, ...] | ALL [ PRIVILEGES ] }
    ON { [ TABLE ] table_name [, ...]
         | ALL TABLES IN SCHEMA schema_name [, ...] }
    FROM { [ GROUP ] role_name | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ]

 

특정 테이블이나 특정 스카마의 전체 테이블에 대해 특정 role 이나 public 에 대해

SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER 권한
혹은 
모든 권한을 한꺼번에 해제할 수 있는 all 권한이 있습니다.

 

아래 revoke 예제를 보시기 바랍니다.

 EXAMPLES
1) REVOKE ALL PRIVILEGES ON kinds FROM manuel;
2) REVOKE INSERT ON films FROM PUBLIC;

 

 

첫 문장은 manual 이란 rolekinds 라는 테이블에 모든 권한을 해제한다는 의미이고

두번째 문장은 public role에게 films 라는 테이블에 insert 권한을 해제한다는 의미입니다.

 

 

 5) DEFAULT PRIVILEGES

default privilege란 특정 role 이나 shema 에 대하여 몇몇 타입의 오브젝트에 대해 디폴트 접근 권한을 부여하는 것입니다.

 

아래는 DEFAULT PRIVILEGES 를 적용하는 구문입니다.

 

ALTER DEFAULT PRIVILEGES
  [ FOR { ROLE | USER } target_role [, ...] ]
      [ IN SCHEMA schema_name [, ...] ]
      abbreviated_grant_or_revoke

 

OPTION ( GRANT / REVOKE )  

 

ALTER DEFAULT PRIVILEGES 문을 이용하여 table sequence function type 4개의 오브젝트에 대해서Grant 혹은 Revoke 변경 가능합니다.

 

TABLE ( SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER )
SEQUENCE ( USAGE | SELECT | UPDATE )
lFUNCTION ( EXECUTE )
lTYPE ( USAGE )

 

 

4개의 오브젝트에 대해서 각각 다른 범위의 privilege를 적용할 수 있는데,

tableSELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER 7가지의 권한 부여가 가능하고, sequenceusage select update 3개, function execute, typeusage 설정이 가능합니다.

이러한 오브젝트 설정은 ALTER DEFAULT PRIVILEGES command를 보시면 abbreviated_grant_or_revoke 조건절을 이용하여 설정이 가능합니다.

 

DEFAULT PRIVILEGES 적용하는 구문으로는 아래와 같이 ALTER DEFAULT PRIVILEGES command 가 있습니다.

 

ALTER DEFAULT PRIVILEGES
    [ FOR { ROLE | USER } target_role [, ...] ]
    [ IN SCHEMA schema_name [, ...] ]
    abbreviated_grant_or_revoke

 

 

특정 Object 를 적용하려면 abbreviated_grant_or_revoke 조건절이 있습니다.

GRANT{ EXECUTE | ALL [ PRIVILEGES ] }
   ON FUNCTIONS
       TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]

 

EXAMPLES

 

ALTER DEFAULT PRIVILEGES FOR ROLE admin GRANT EXECUTE ON FUNCTIONS TO PUBLIC;

 

위 function에 관한 예문은 admin 이라는 role 에서 생성한 모든 functionexecute할 수 있는 권한을 default public에 부여하라는 의미입니다.

 

이렇게 적용을 했을 때 이미 생성된 object에는 execute 할 권한이 없고 앞으로의 생성되는 오브젝트에 한해서만 적용이 가능합니다.

 

Post by. 김지선 (2014.06.28)