본문 바로가기

DB/Tibero

[Tibero] 사용자 관리와 데이터베이스 보안

어떤 사용자가 고의나 실수로 데이터베이스에 저장된 데이터를 손상시키거나 데이터베이스를 파손시키는 일을 방지하려는 목적

 

[사용자 관리]

티베로 내에 접근하기 위한 사용자 계정 / 패스워드를 생성하며, 패스워드는 데이터사전에 암호화된 형태로 저장된다.

스키마는 테이블, 뷰, 인덱스 등의 스키마 객체의 묶음이다.

SELECT * FROM SYS.STSTEM_PRIVILEGES;

[사용자 생성, 변경, 제거]

DBA 권한을 가진 사용자로 Tibero에 접속한다.

 

[생성]

CREATE USER STEVE IDENTIFIED BY STEVE DEFAULT TABLESPACE USR;

CREATE USER PETER IDENTIFIED BY PETER;
#테이블 스페이스를 지정하지 않으면 시스템 테이블 스페이스를 사용하게 된다.

참고로 접속하기 위해서는 권한을 주어야 한다.

GRANT CONNECT, RESOURCE TO [사용자];

보통 실습으로 새 유저를 만들었을 때 해당 권한을 주지 않아 로그인이 되지 않는다. SYS계정 또는 DBA권한이 있는 유저로 접속해 새 유저에게 해당 권한을 주어야 한다. 해당 권한을 주면 사용할 수 있는 공간(메모리)을 새 유저에게 주는 것과 같다.

 

[변경]

ALTER USER [유저명] IDENTIFIED BY [비밀번호] DEFAULT TABLESPACE [테이블 스페이스명]
EX)
ALTER USER PETER IDENTIFIED BY ABCDEFG DEFAULT TABLESPACE MY_SPACE;

ALTER USER PETER IDENTIFIED BY ABCDEFG;

[제거]

DROP USER [사용자] CASCADE;
EX)
DROP USER PETER CASCADE;

[조회]

ALL_USERS : 데이터베이스의 모든 사용자의 기본적인 정보를 조회

DVA_USERS : 데이터베이스의 모든 사용자의 자세한 정보를 조회

USER_USERS : 현재 사용자의 정보를 조회

 

[잠금 및 해제]

데이터베이스 사용자가 계정에 접속할 수 없도록 계정을 잠금 상태로 설정 또는 해제

ALTER USER PETER ACCOUNT LOCK; --계정을 잠근다.

ALTER USER PETER ACCOUNT UNLOCK; --계정의 잠금을 해제한다.

보통 Oracle에서 Sample Schema를 이용하여 데이터베이스를 생성하면 여러 계정들이 생성되는데, 기본으로 계정이 잠겨있다. 그렇다면, DBA권한이 있는 계정으로 접속후 명령어를 쳐 주어야한다.

ALTER USER [계정 이름] ACCOUNT UNLOCK;
EX)
ALTER USER SCOTT ACCOUNT UNLOCK;

 

[OS 인증을 사용한 사용자 생성]

사용자 생성은 보안 정책에 따라 데이터베이스 보안 정책을 따르는 사용자 생성과 운영체제 인증 정책을 따르는 사용자 생성으로 구분된다.

 

OS 인증을 사용하는 사용자 계정 생성

CREATE USER OSA$steve

OS사용자인 steve라는 사용자를 생성하는데 OS 인증 정책 사용자를 알리는 OSA$prefix를 붙여 생성

해당 값은 OS_AUTH_PREFIX에서 변경할 수 있으며, 기본 값은 OSA$이다.

IDENTIFIED EXTERNALLY: OS 인증을 사용하는 사용자의 패스워드는 데이터베이스에서 별도로 관리하지 않는다. OS의 사용자 steve가 존재하는 경우 host에서 인증을 완료한 것으로 가정하여 데이터베이스에서 별도로 확인하지 않는다.(OS보안이 취약한 경우 권하지 않음)

 

OS인증 사용자 생성 이후 로컬에서 접속하는 방법

tbsql /

# 원격에서 OS인증 사용자 접속은 보안상 문제로 지원하지 않는다.

 

[권한]

사용자가 데이터베이스의 특정 스키마 객체에 접근하려면 특권(Privilege)을 부여 받아야 한다.

conn Peter/abcdef

CREATE TABLE EMPLOYEE(ID NUMBER, EMPLOYEE_NAME VARCHAR(20), ADDRESS VARCHAR(50));

GRANT SELECT ON EMPLOYEE TO SMITH;

CONN SMITH/SMITH

SELECT * FROM PETER.EMPLOYEE;

티베로에서 제공하는 특권은 크게 두가지이다.

1. 스키마 객체 특권(Schema Object Privilege) : 특정 객체에 대한 질의 및 갱신 특권이다.

2. 시스템 특권(System Privilege) : 데이터베이스에서 특정 작업을 수행할 수 있는 특권이다.

 

[스키마 객체 권한]

EX)

SELECT, INSERT, UPDATE, DELETE, ALTER, INDEX, REFERENCES, TRUNCATE

 

[WITH GRANT OPTION]

권한을 부여 받았을 경우 권한을 부여 받은 사용자가 부여받은 권한을 다른 사용자에게 부여할 수 있다.

SYS -> PETER -> SCOTT

 

[스키마 객체 권한 회수]

다른 사용자로부터 스키마 객체 권한을 회수하기 위해서는 REVOKE 명령을 사용해야 한다.

이 명령은 사용자의 스키마 객체 특권의 일부 또는 전체를 회수할 수 있다. DBA는 자신이 직접 부여하지 않는 특권에 대해서도 다른 사용자로부터 회수할 수 있다.

REVOKE DELETE ON EMPLOYEE FROM PETER;
-- PETER로부터 EMPLOYEE테이블에 대한 DELETE 권한을 회수한다.

REVOKE ALL ON EMPLOYEE FROM JOHN;
-- JOHN으로부터 EMPLOYEE 테이블에 대한 모든 권한을 회수한다.

[WITH GRANT OPTION]과 함께 부여된 권한을 회수할 때에는 연속적으로 권한이 회수된다.

 

[시스템 특권]

데이터베이스를 관리하는데 필요한 시스템 명령어를 사용하기 위해서는 시스템 특권을 부여 받아야 한다.

시스템 특권은 기본적으로 SYS 사용자가 소유하고 있으며 다른 사용자에게 부여할 수 있다.

 

EX)

ALTER SYSTEM, CREATE SESSION, CREATE TABLE

 

[WITH ADMIN OPTION]

시스템 특권도 ADMIN OPTION을 이용하여 다른 사용자에게 권한을 부여할 수 있다.

GRANT SELECT ANY TABLE TO SUSAN WITH ADMIN OPTION

 

[시스템 권한 회수]

WITH ADMIN OPTION과 함께 부여된 특권은 WITH GRANT OPTION과는 달리 연속적으로 회수되지 않는다.

 

[권한정보 조회]

DBA_SYS_PRIVS, USER_SYS_PRIVS

 

[프로파일]

데이터베이스 사용자의 패스워드 관ㄹ니 정책을 지정할 수 있다.