2010-01-08 1 views
7

PostgreSQL을 사용하면 데이터베이스의 소유자처럼 행동하는 2 명의 사용자가있는 데이터베이스를 만들 수 있습니까?동일한 PostgreSQL 데이터베이스를 소유 한 두 명의 소유자

그룹 역할을 만들고 두 사용자를 모두 해당 그룹에 추가 한 다음 그룹을 데이터베이스의 소유자로 만들 수 있지만이 경우 두 사용자가 모든 연결에 수동으로 역할을 설정해야 모든 테이블을 만들 수 있습니다 다른 사용자가 액세스 할 수 있도록 만들었습니다. 그룹을 로그인 할 때마다 또는 동일한 방식으로 달성하기 위해 다른 방법으로 사용자를위한 기본 역할로 만드는 방법이 있습니까?

답변

10

아니요, 각 데이터베이스에는 하나의 소유자 만있을 수 있습니다. 앞에서 설명한 것처럼 둘 이상의 수퍼 유저를 가질 수도 있고 상속 된 그룹 역할에 대한 권한을 부여 할 수도 있습니다.

http://blog.hagander.net/archives/70-Faking-the-dbo-role.html을보고 싶어하는 것과 유사한 것을 위장 할 수 있습니다. 그것은 완벽하지는 않지만 당신에게 충분할 것입니다. 적어도 객체 소유권 문제를 해결할 수 있어야합니다.

+0

네, 그게 내가 원하는대로하는 것 같습니다. 당신이 생각할 수있는 이런 식으로 일하는 보안상의 의미? –

+0

아니요, 괜찮을 겁니다. 관리자로 만들면 고의적으로 일을 깰 수 없다고 생각합니다. 마찬가지로 사용자가 악의적 인 의도가있는 경우 원래 역할로 되돌릴 수 있습니다. –

4

아, 그것을 발견 ". 상속 속성이 자동으로이의 구성원 역할의 권한의 사용을 가지고있는 구성원 역할"PostgreSQL Docs: Chapter 20. Database Roles and Privileges

CREATE ROLE joe LOGIN INHERIT; 
CREATE ROLE admin NOINHERIT; 
GRANT admin TO joe; 
는 "즉시 역할 조로 연결 한 후, 데이터베이스 세션이 관리자에게 부여 된 조에게 직접 부여 된 권한을 더한 권한의 사용을해야합니다 조는 때문에", "관리자의 권한을."상속

+0

참이지만 joe가 만든 테이블은 joe가 소유하고 admin이 아니기 때문에 그룹의 다른 사용자는 액세스 할 수 없습니다. –

+0

하지만 그룹의 다른 사용자가 만든 테이블을 포함하는 모든 테이블에서 모든 작업을 수행 할 권한이있는 '관리자'를 가질 수 있습니다. – Timothy

+0

하지만 사용자와의 연결마다 관리 역할을 수동으로 설정해야합니다. –