DB
구축 환경
- 프로젝트명 : insa
- User
* insa_ma : 프로젝트
관련 table 소유 스키마
: Segment 생성
시에만 사용됨.
* insa_al : insa_ma segment에 대한
ALTER 작업만 수행함
: Segment에
대한 수정 작업 이외에 사용되지 않음
* insa_in : data 입력과 검색만 수행함
* insa_up : data 수정과 검색 수행함
- Tablespace
* insa T/S : segment 저장용 tablespace
* indx T/S : index 용 tablespace
- Role
* r_basic : 접속관련
권한
* r_master : segment에 대한 생성 권한 (default
role로 지정 하지 않는다.)
* r_alter : insa_ma segment에 대한
ALTER 권한
* r_insert : insa_ma segment에 대한
INSERT 권한
* r_update : insa_ma segment에 대한
UPDATE, DELETE 권한
- Table
* insa_ma 스키마의 table목록
in01, in02, in30 : table의 구조는 임의로 결정한다.
access
matrix
구현
과정
step 1. Tablespace 생성
step 2. User 생성
step 3. Role 생성
step 4. Role에 권한 할당
step 5. 사용자에 role 할당
step 1. Tablespace 생성
CREATE
TABLESPACE insa
DATAFILE
'/app/ora12c/oradata/disk1/insa01.dbf'
SIZE 2M AUTOEXTEND ON,
'/app/ora12c/oradata/disk2/insa02.dbf'
SIZE 2M AUTOEXTEND ON;
CREATE
TABLESPACE indx
DATAFILE
'/app/ora12c/oradata/disk2/indx01.dbf'
SIZE 1M AUTOEXTEND ON,
'/app/ora12c/oradata/disk1/indx02.dbf'
SIZE 1M AUTOEXTEND ON;
SELECT
tablespace_name, bytes, file_name FROM dba_data_files;
step 2. User 생성
CREATE
USER insa_ma
IDENTIFIED
BY insa_ma
DEFAULT
TABLESPACE insa
QUOTA
UNLIMITED ON insa
QUOTA
UNLIMITED ON indx;
CREATE
USER insa_al
IDENTIFIED
BY insa_al;
CREATE
USER insa_in
IDENTIFIED
BY insa_in;
CREATE
USER insa_up
IDENTIFIED
BY insa_up;
SELECT
username, default_tablespace, temporary_tablespace, account_status, profile
FROM
dba_users
ORDER BY
1;
CREATE
TABLE insa_ma.&tn (no NUMBER);
치환 변수를 이용 insa_ma
user에 table을
생성한다.
/
SELECT
owner, table_name FROM dba_tables
WHERE
owner = 'INSA_MA';
// 소유 스키마 작업 끝난것.
step
3. Role 생성
CREATE ROLE
r_basic;
CREATE ROLE
r_master
IDENTIFIED
BY r_master;
in_master role은 암호가 정의된다.
CREATE
ROLE r_alter;
CREATE
ROLE r_insert;
CREATE
ROLE r_update;
SELECT *
FROM dba_roles
WHERE role
LIKE 'R#_%' ESCAPE '#';
step
4. Role에 권한 할당
GRANT create
session TO r_basic
GRANT
select ON insa_ma.in01 TO r_basic;
GRANT
select ON insa_ma.in02 TO r_basic;
GRANT
alter ON insa_ma.in01 TO r_alter;
GRANT
alter ON insa_ma.in02 TO r_alter;
GRANT
insert ON insa_ma.in01 TO r_insert;
GRANT
insert ON insa_ma.in02 TO r_insert;
GRANT
update ON insa_ma.in01 TO r_update;
GRANT
update ON insa_ma.in02 TO r_update;
GRANT
delete ON insa_ma.in01 TO r_update;
GRANT
delete ON insa_ma.in02 TO r_update;
GRANT create
table, create sequence, create trigger,
create procedure, create view
TO r_master;
SELECT role,
privilege FROM role_sys_privs
WHERE role
LIKE 'R#_%' ESCAPE '#';
SELECT role,
privilege, owner, table_name FROM role_tab_privs
WHERE role
LIKE 'R#_%' ESCAPE '#'
ORDER BY 1;
step
5. 사용자에 role 할당
GRANT
r_basic, r_master TO insa_ma;
ALTER USER
insa_ma
DEFAULT ROLE
r_basic;
insa_ma는 in_basic과
in_master role을 할당 받았지만 in_master role은 암호를 통해 인증을 받은 경우만 사용 가능하다.
GRANT
r_basic, r_alter TO insa_al;
GRANT
r_basic, r_update TO insa_up;
GRANT
r_basic, r_insert TO insa_in;
SELECT
grantee, granted_role, default_role FROM dba_role_privs
WHERE
grantee LIKE 'IN%' AND granted_role = 'R_MASTER';
댓글 없음:
댓글 쓰기