[ORACLE] 데이터베이스 유저 보안 관리
by garimoo
데이터베이스 유저 계정
- 고유 username
- 인증 방식
- 기본 테이블스페이스
- 임시 테이블스페이스
- 유저 프로파일: 유저에게 할당되는 리소스 및 암호 제한 집합
- 초기 Consumer Group: 리소스 관리자가 사용
- 계정 상태: “open”상태의 계정에만 액세스 할 수 있다.
스키마
- 데이터베이스 유저가 소유하는 데이터베이스 객체의 모음
- 데이터베이스의 데이터를 직접 참조하는 논리적 구조
- 테이블, 뷰, 시퀀스, 내장 프로시저, 동의어, 인덱스, 클러스터 및 데이터베이스 링크가 있다.
- 어플리케이션이 데이터베이스에 생성하는 모든것이 포함됨.
(미리 정의된) 관리 계정
SYS
- DBA 롤이 부여
- ADMIN OPTION에 대한 모든 권한 포함.
- 데이터 딕셔너리 소유.
- 연결하려면 데이터베이스 Instance에 대해
AS SYSDBA
절을 사용, ASM Instance에 대해AS SYSASM
을 사용해야 함. - 권한 있는 유저만이 Instance를 시작 및 종료할 수 있다.
SYSTEM
- DBA 권한이 없다.
- AQ_ADMINISTRATOR_ROLE 및 MGMT_USER 롤이 부여.
DBSNMP
- Enterprise Manager의 관리 에이전트가 데이터베이스를 모니터 및 관리하는 데 사용
SYSMAN
- Oracle Enterprise Manager의 관리 작업을 수행하는 데 사용
관리자 인증
운영 체제 보안
- DBA는 파일을 생성하고 삭제하기 위한 OS 권한을 가져야 함.
- 일반 유저는 데이터베이스 파일을 생성, 삭제 할 수 있는 OS 권한을 가질 수 없음.
관리자 보안
- SYSDBA, SYSOPER, SYSASM 유저에 대한 연결은 Password File을 사용한 검증을 수행한 이후에만 인증.
- OS 인증이 사용되는 경우 Username과 암호를 사용하지 않는다.
권한
특정 유형의 SQL문을 실행하거나 다른 유저의 객체에 액세스 할 수 있는 권한.
시스템 권한
특정 데이터베이스에 대한 작업을 수행 가능
- RESTRICTED SESSION: 데이터베이스가 제한 모드로 열려 있어도 로그인 가능
- SYSDBA / SYSOPER: 데이터베이스에서 종료, 시작, recovery 등 관리 작업 수행 가능
- STARTUP / SHUTDOWN
- CREATE SPFILE
- ALTER DATABASE OPEN/MOUNT/BACKUP
- ALTER DATABASE ARCHIVELOG
- ALTER DATABASE RECOVER
- RESTRICTED SESSION
- SYSASM: ASM Instance를 시작, 종료 및 관리 가능
- DROP ANY object: 다른 스키마 유저가 소유한 객체를 삭제 가능
- CREATE, MANAGE, DROP 및 ALTER TABLESPACE: 테이블스페이스 속성 생성, 삭제 등 테이블스페이스 관리
- CREATE LIBRARY: C 라이브러리와 같은 외부 코드 생성 및 호출 가능. PL/SQL에서 실행할 수 있는 임의 코드 라이브러리 생성 가능
- CREATE ANY DIRECTORY: 유저가 해당 디렉토리의 외부 프로시저에 액세스 가능(비보안 코드 객체 호출 가능). redo 로그와 같은 데이터베이스 파일에 대해 직접 읽기/쓰기 시도 가능.
- GRANT ANY OBJECT PRIVILEGE: 자신이 소유하지 않은 객체에 대해 사용 권한 부여 가능
- ALTER DATABSE / ALTER SYSTEM: (강력) 데이터 파일 이름 변경, 버퍼 캐시 비우기 등 Oracle Instance 수정 작업 수행 가능.
ADMIN OPTION을 사용한 시스템 권한 취소
GRANT 명령으로 직접 부여된 시스템 권한은 REVOKE
SQL문을 이용해 취소 가능.
연쇄적으로 취소되지 않음.
REVOKE <system_privilege> FROM <grantee clause>
객체 권한
객체 권한: 테이블, 뷰, 시퀀스, 프로시저 등의 특정 객체에 대한 작업을 수행 가능
SQL> GRANT <object_privilege> ON <object> TO <grantee clause> [WITH GRANT OPTION]
GRANT OPTION을 사용한 객체 권한 취소
DML 작업과 관련된 시스템 권한을 취소할 때 연쇄적 결과를 관찰 가능.
롤 사용 시의 이점
- 권한 관리 용이
- 유저에게 권한을 부여하는 것이 아닌, 롤을 부여한 후 롤에 권한을 부여
- 동적 권한 관리
- 롤에 관한 권한을 수정하면 그 롤을 부여받은 유저는 즉시 수정된 권한 얻는다.
- 권한의 선택적 가용성
- 롤을 활성화/비활성화 하여 권한을 일시적으로 설정/해제 가능
롤 특성
- 롤에도 권한 부여/취소 가능
- 롤을 유저나 다른 롤에 부여/취소 가능
- 시스템 및 객체 권한으로 구성
- 롤을 활성화 하려면 암호가 필요할 수 있음.
- 롤은 유저가 소유하지 않으며 스키마에 존재하지 않음.
프로파일 및 유저
- 프로파일은 데이터베이스 사용 및 instance 리소스에 명령된 리소스 제한 집합을 적용.
- 계정 상태를 관리, 유저의 암호 길이, 만료 시간 등의 제한 지정
- 모든 유저에게 프로파일 할당, 언제나 하나의 프로파일에만 속할 수 있음.
- 프로파일을 변경하면 다음 로그인부터 적용.
- 제어 가능 리소스
- CPU: CPU 리소스를 세션 또는 호출 단위로 제한 가능
- 네트워크/메모리: 각 데이터베이스 세션은 시스템 메모리 리소스 및 네트워크 리소스를 소모
- Connect Time: 허용되는 연결 시간
- Idle Time: idle 상태를 유지할 수 있는 시간.
- Concurrent Sessions: 동시 세션 수
- Private SGA: SGA 내의 공간 양 제한
- 디스크 I/O: 세션 단위 레벨 또는 호출 단위 레벨에서 읽을 수 있는 데이터 양 제한.
암호 보안 기능
- 유저가 지정한 횟수 내에 로그인 못하면 일정 시간 동안 계정을 LOCK
- FAILED_LOGIN_ATTEMPTS: 만료되기 전 까지의 로그인 시도 실패 횟수
- PASSWORD_LOCK_TIME: Lock이 유지되는 기간
- PASSWORD_LIFE_TIME: 암호가 만료되기 전에 사용할 수 있는 실행 시간
- PASSWORD_GRACE_TIME: 암호 변경을 위한 유예 기간
- 암호 변경 횟수 동안 암호를 재사용하지 않았는지 확인하기 위한 새 암호 검사
- PASSWORD_REUSE_TIME: 주어진 일 수동안 암호를 재사용 할 수 없도록 지정
- PASSWORD_REUSE_MAX: 현재 암호를 재사용할 수 있기 전에 필요한 암호 변경 횟수
- 암호의 복잡성을 검사하여 특정 규칙 확인
VERIFY_FUNCTION_11G
- 8자 이상
- Username과 관련된 형태가 아님
- 데이터베이스 이름과 관련된 형태가 아님
- 최소 하나의 영문자와 하나의 숫자를 포함하는 문자열
- 이전 암호와 3자리 이상이 다름
최소 권한의 원칙
유저가 작업을 효율적으로 완료하는 데 필요한 권한만 유저에게 부여
- 데이터 딕셔너리 보호
- 07_DICTIONARY_ACCESSIBILITY = FALSE
- PUBLIC에서 불필요한 권한 취소
- ACL을 사용하여 네트워크 단에서 제어
- 유저가 액세스할 수 있는 디렉토리 제한
- 관리 권한을 갖는 유저 제한
- 원격 데이터베이스 인증 제한
- REMOTE_OS_AUTHENT = FALSE
Subscribe via RSS