database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 7066 게시물 읽기
No. 7066
퍼미션 문제
작성자
조수한(sp88)
작성일
2007-02-28 10:47
조회수
4,345

tb_table에 대해서 select 권한만 갖고 있는 외부유저가 있습니다. (grant select on table tb_table to 외부유저)

이 유저에 대해서 직접 테이블에 insert나 update권한을 주지 않고

function을 통해서 update가 가능하게끔 func_function을 제공하였습니다.


func_function에 대한 execute 권한을 주었는데... (grant execute on function func_function(xxxx) to 외부유저)

문제는 외부유저가 func_function을 실행하면

내부에 update tb_table set ..... 코드 부분에서 퍼미션 에러가 발생합니다. ㅡ0ㅡa


외부유저에 대해서도 tb_table의 update권한을 줘야 하는건가요?

이 글에 대한 댓글이 총 1건 있습니다.

함수의 실행권한과 그 함수 안에서 쓰이는 테이블의 자료수정 권한은 별개입니다.


그럴 때 쓰는 것이 룰(rule)입니다. 


원하는 것이 아마, 테이블의 특정 칼럼만 외부사용자가 삽입하면서 나머지 칼럼은 지정한 값으로 채워넣고, 수정할 때고 그 특정 칼럼만 수정하고, 삭제는 막고, 

select는 그 특정 칼럼만 할 수 있도록 하려면, 


일단 view를 만들고, 그 뷰의 접근 권한을 조정하고, 그 뷰에 룰을 만드는 방식입니다. 


그 대표적인 것이 pg_authid - pg_shadow - pg_user 시스템 카타로그입니다.



-------------


제가 보기에는 이렇게 PostgreSQL 고유 특성을 이용하기 보다,

RDBMS 일반적인 방법론으로 외부사용자가 건드릴 수 있는 테이블과 

내부사용자가 건드려야할 테이블을 분리하고, 

필요하다면, 두 테이블을 join 해서 쓰든지 하면 되겠죠.

자료 설계 쪽에 좀 더 고민해 보세요. 

김상기(ioseph)님이 2007-02-28 16:40에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
7070PostgresSQL 7.3 -> 8.2.3 업그레이드 시 encoding error [1]
무적초보
2007-03-05
7382
7069트리거는 어떻게 해야하는지.. [1]
스치는인연
2007-03-02
4519
7067해당 필드에 유니코드데이타가 들어있는지 아는 방법? [5]
dba
2007-02-28
5593
7066퍼미션 문제 [1]
조수한
2007-02-28
4345
7065어떤게 좋아요?
또질문
2007-02-28
4185
7064view에 관해서도 질문이 있어요 [2]
smalli04
2007-02-27
4579
7063PQgetvalue() 의 값에 관한 질문이요 [1]
김대현
2007-02-27
4304
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다