postgresql 그림자 사용자 실천 장면 분석

8370 단어 postgresql그림자
실제 생산 환경에서 우리는 이런 상황에 자주 부딪힌다. 업무 장면의 수요로 인해 본 부서의 일부 중요한 업무 데이터 테이블은 다른 부서에 조회 권한을 주어야 한다. 업무의 확장과 조정으로 인해 후기에 더 많은 테이블 조회 권한을 놓아야 할 수도 있다.이러한 업무 수요를 해결하기 위해 우리는 보기를 만드는 방식으로 해결할 수 있다. 이미 그림자 사용자를 만드는 방식으로 수요를 만족시킬 수 있다. 본고는 주로 그림자 사용자의 창설과 권한 수여 방법을 소개한다.

장면 1: usage on schema 권한만 부여


session 1:
- readonly 사용자를 만들고 테스트 모드를 readonly 사용자에게 부여합니다.

postgres=# create user readonly with password 'postgres';
CREATE ROLE
postgres=# grant usage on schema test to readonly;
​GRANT
postgres=# \dn
List of schemas
 Name | Owner 
-------+-------
 test | postgres
session 2:
--readonly에 로그인하면 테스트 모드에 존재하는 모든 테이블을 조회할 수 있습니다.

postgres=# \c postgres readonly 
You are now connected to database "postgres" as user "readonly".
postgres=> select * from test.emp ;
 empno | ename |  job  | mgr | hiredate |  sal  | comm  | deptno 
-------+--------+-----------+------+------------+---------+---------+--------
 7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 | 1600.00 | 300.00 |   30
 7521 | WARD  | SALESMAN | 7698 | 1981-02-22 | 1250.00 | 500.00 |   30
 7566 | JONES | MANAGER  | 7839 | 1981-04-02 | 2975.00 |     |   20
 7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 | 1250.00 | 1400.00 |   30
 7698 | BLAKE | MANAGER  | 7839 | 1981-05-01 | 2850.00 |     |   30
 7782 | CLARK | MANAGER  | 7839 | 1981-06-09 | 2450.00 |     |   10
 7839 | KING  | PRESIDENT |   | 1981-11-17 | 5000.00 |     |   10
 7844 | TURNER | SALESMAN | 7698 | 1981-09-08 | 1500.00 |  0.00 |   30
 7900 | JAMES | CLERK   | 7698 | 1981-12-03 | 950.00 |     |   30
 7902 | FORD  | ANALYST  | 7566 | 1981-12-03 | 3000.00 |     |   20
 7934 | MILLER | CLERK   | 7782 | 1982-01-23 | 1300.00 |     |   10
 7788 | test  | ANALYST  | 7566 | 1982-12-09 | 3000.00 |     |   20
 7876 | ADAMS | CLERK   | 7788 | 1983-01-12 | 1100.00 |     |   20
 1111 | SMITH | CLERK   | 7902 | 1980-12-17 | 800.00 |     |   20
(14 rows)
세션 1로 바꾸어 새 테이블 만들기 t1

postgres=# create table test.t1 as select * from test.emp;
​CREATE TABLE
세션2readonly 사용자로 전환하면 t1표를 조회할 수 없습니다

postgres=> select * from test.t1 ;
2021-03-02 15:25:33.290 CST [21059] ERROR: permission denied for table t1
2021-03-02 15:25:33.290 CST [21059] STATEMENT: select * from test.t1 ;
**ERROR: permission denied for table t1
결론:usage on schema 권한만 부여하면,readonly는test 모드에 이미 존재하는 테이블과 대상만 볼 수 있습니다.usage on schema 권한을 부여한 후에 만든 새 테이블을 볼 수 없습니다.

장면2: usage on schema 권한을 부여한 후 select on alltables in schema 권한을 부여합니다


이전 장면에 대한 session 2 * * ERROR: permission denied for table t1 오류 처리

postgres=> select * from test.t1 ;
**ERROR: permission denied for table t1
session 1:postgres 사용자에게readonly 사용자에게 모든 테이블에서 선택 권한을 부여합니다

postgres=# grant select on all tables in schema test TO readonly ;
session2:readonly 사용자 조회 t1표

postgres=> select * from test.t1;
 empno | ename |  job  | mgr | hiredate |  sal  | comm  | deptno 
-------+--------+-----------+------+------------+---------+---------+--------
 7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 | 1600.00 | 300.00 |   30
 7521 | WARD  | SALESMAN | 7698 | 1981-02-22 | 1250.00 | 500.00 |   30
 7566 | JONES | MANAGER  | 7839 | 1981-04-02 | 2975.00 |     |   20
 7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 | 1250.00 | 1400.00 |   30
 7698 | BLAKE | MANAGER  | 7839 | 1981-05-01 | 2850.00 |     |   30
 7782 | CLARK | MANAGER  | 7839 | 1981-06-09 | 2450.00 |     |   10
 7839 | KING  | PRESIDENT |   | 1981-11-17 | 5000.00 |     |   10
 7844 | TURNER | SALESMAN | 7698 | 1981-09-08 | 1500.00 |  0.00 |   30
 7900 | JAMES | CLERK   | 7698 | 1981-12-03 | 950.00 |     |   30
 7902 | FORD  | ANALYST  | 7566 | 1981-12-03 | 3000.00 |     |   20
 7934 | MILLER | CLERK   | 7782 | 1982-01-23 | 1300.00 |     |   10
 7788 | test  | ANALYST  | 7566 | 1982-12-09 | 3000.00 |     |   20
 7876 | ADAMS | CLERK   | 7788 | 1983-01-12 | 1100.00 |     |   20
 1111 | SMITH | CLERK   | 7902 | 1980-12-17 | 800.00 |     |   20
(14 rows)
session1:postgres 사용자의test 모드에서 새 테이블 만들기 t2

postgres=# create table test.t2 as select * from test.emp;
SELECT 14
session2:readonly 사용자 조회 t2표 권한 부족

postgres=> select * from test.t2 ;
ERROR: permission denied for table t2
session 1: 모든 테이블에 grant select 다시 부여

postgres=# grant select on all tables in schema test TO readonly ;
session2:readonly 사용자는 T2 테이블을 볼 수 있습니다

postgres=> select * from test.t2 ;
 empno | ename |  job  | mgr | hiredate |  sal  | comm  | deptno 
-------+--------+-----------+------+------------+---------+---------+--------
 7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 | 1600.00 | 300.00 |   30
 7521 | WARD  | SALESMAN | 7698 | 1981-02-22 | 1250.00 | 500.00 |   30
 7566 | JONES | MANAGER  | 7839 | 1981-04-02 | 2975.00 |     |   20
 7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 | 1250.00 | 1400.00 |   30
 7698 | BLAKE | MANAGER  | 7839 | 1981-05-01 | 2850.00 |     |   30
 7782 | CLARK | MANAGER  | 7839 | 1981-06-09 | 2450.00 |     |   10
 7839 | KING  | PRESIDENT |   | 1981-11-17 | 5000.00 |     |   10
 7844 | TURNER | SALESMAN | 7698 | 1981-09-08 | 1500.00 |  0.00 |   30
 7900 | JAMES | CLERK   | 7698 | 1981-12-03 | 950.00 |     |   30
 7902 | FORD  | ANALYST  | 7566 | 1981-12-03 | 3000.00 |     |   20
 7934 | MILLER | CLERK   | 7782 | 1982-01-23 | 1300.00 |     |   10
 7788 | test  | ANALYST  | 7566 | 1982-12-09 | 3000.00 |     |   20
 7876 | ADAMS | CLERK   | 7788 | 1983-01-12 | 1100.00 |     |   20
 1111 | SMITH | CLERK   | 7902 | 1980-12-17 | 800.00 |     |   20
(14 rows)

그림자 사용자 만들기


readonly 읽기 전용 사용자가 테스트 모드에서 새 테이블을 만들 때마다postgres 사용자에게 수동으로 grant select on all tables in schema test to readonly 권한을 부여하지 않으려면.테스트에 대한 기본 접근 권한을 부여해야 하며, 테스트 모드에서 새로 만든 것도 적용됩니다.
session1: 앞으로 테스트 모드에서 새로 만든 모든 테이블에 권한을 부여하고 t5 테이블을 만듭니다.

postgres=# alter default privileges in schema test grant select on tables to readonly ;
ALTER DEFAULT PRIVILEGES
postgres=# create table test.t5 as select * from test.emp;
CREATE TABLE
session2:readonly 사용자 조회

postgres=> select * from test.t5;
 empno | ename |  job  | mgr | hiredate |  sal  | comm  | deptno 
-------+--------+-----------+------+------------+---------+---------+--------
 7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 | 1600.00 | 300.00 |   30
 7521 | WARD  | SALESMAN | 7698 | 1981-02-22 | 1250.00 | 500.00 |   30
 7566 | JONES | MANAGER  | 7839 | 1981-04-02 | 2975.00 |     |   20
 7654 | MARTIN | SALESMAN | 7698 | 1981-09-28 | 1250.00 | 1400.00 |   30
 7698 | BLAKE | MANAGER  | 7839 | 1981-05-01 | 2850.00 |     |   30
 7782 | CLARK | MANAGER  | 7839 | 1981-06-09 | 2450.00 |     |   10
 7839 | KING  | PRESIDENT |   | 1981-11-17 | 5000.00 |     |   10
 7844 | TURNER | SALESMAN | 7698 | 1981-09-08 | 1500.00 |  0.00 |   30
 7900 | JAMES | CLERK   | 7698 | 1981-12-03 | 950.00 |     |   30
 7902 | FORD  | ANALYST  | 7566 | 1981-12-03 | 3000.00 |     |   20
 7934 | MILLER | CLERK   | 7782 | 1982-01-23 | 1300.00 |     |   10
 7788 | test  | ANALYST  | 7566 | 1982-12-09 | 3000.00 |     |   20
 7876 | ADAMS | CLERK   | 7788 | 1983-01-12 | 1100.00 |     |   20
 1111 | SMITH | CLERK   | 7902 | 1980-12-17 | 800.00 |     |   20
(14 rows)

요약: 그림자 사용자가 만드는 절차


-- 
create user readonly with password 'postgres';
-- schema usage readonly , 
grant usage on schema test to readonly;
grant select on all tables in schema test to readonly;
-- test 
alter default privileges in schema test grant select on tables to readonly ;
이 글은postgresql 그림자 사용자 실천에 관한 글을 소개합니다. 더 많은 postgresql 그림자 사용자 내용은 저희 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!

좋은 웹페이지 즐겨찾기