DB정의
1. 통합된 데이터
- DB의 중복은 일반적으로 여러 부작용을 초래할 수 있다.
- 그래서 원칙적으로는 DB의 데이터 중복은 허용하지 않는다.
- 하지만 효율성 때문에 일부 데이터의 중복을 허용하기도 한다.
2. 저장된 데이터
- DB의 데이터는 컴퓨터가 접근할 수 있는 저장매체에 저장되어있는 data이다.
3. 운영 data
- 운영 data : 조직이 고유의 기능을 수행하기 위해 반드시 유지해야 할 데이터
- 단순한 입출력 data, 임시 data는 운영 data로 취급하지 않는다
4. 공용 data
- 한 조직에서 여러 응용프로그램이 공동으로 소유, 유지 가능한 data이다.
DB 용어
1. 릴레이션 : 하나의 개체에 관한 data를 2차원 테이블의 구조로 저장한 것
2. 속성과 튜플 : 릴레이션의 행(튜플)과 열(속성,attribute)
3. 널 : 아직 모르거나 해당되는 사항이 없음을 표현하는 특별한 값
4. 차수 : 하나의 릴레이션에서 속성의 전체 개수
5. 카디널리티 : 하나의 릴레이션에서 튜플의 전체 개수
6. 도메인 : 한 릴레이션에서 특정 속성이 가질 수 있는 데이터 형식을 지닌 모든 가능한 값의 집합
7. extent : 테이블을 구성하는 물리적으로 연속적인 디스크 공간
DB의 키 정의
1. 후보키(Candidate Key) : 키의 특성인 유일성, 최소성을 만족하는 키를 지칭
2. 슈퍼키(Super Key) : 유일성을 만족하는 키를 지칭
3. 기본키(Primary Key) : 여러개의 후보키 중 하나를 선정하여 사용하는 키를 지칭
4. 대체키(Alternative Key) : 여러개의 후보키 중 기본키로 선정되고 남은 나머지 키를 지칭
5. 외래키(Foreign Key) : 한 릴레이션 속성의 집합이 다른 릴레이션에서 기본키로 이용되는 키를 지칭
DB 무결성의 종류
1. 키 무결성 : 한 릴레이션에 같은 키 값을 가진 튜플이 있어서는 안된다.
2. 개체 무결성 : 기본키에 속해있는 전체 또는 일부 속성이 Null 값을 가져서는 안된다.
3. 참조 무결성 : 릴레이션은 참조할 수 없는 외래키(널이 아니면서 참조 릴레이션의 기본키 값으로 존재하지 않는 값)을 가질 수 없다.
트랜잭션
- 하나의 논리적 기능을 수행하기 위한 작업의 단위이다.
- 한꺼번에 모두 수행해야 할 일련의 DB 연산이다.
- 병행 제어 및 회복 작업의 논리적 단위이다.
트랜잭션의 성질(ACID)
1. 원자성(Atomictiy) : 트랜잭션 내 모든 연산은 반드시 한꺼번에 완료되어야 하며, 그렇지 않을 경우 한꺼번에 취소되어야한다.(all or nothing)
2. 일관성(Consistently) : 트랜잭션이 성공적으로 완료되면 일관성 있는 DB 상태로 변환(단 프로그램 실행 중 일관성 위반은 상관없음)
3. 격리성(Isolation) : 트랜잭션이 실행중에 있는 연산의 중간결과에 다른 연산이 접근하지 못한다.
4. 영속성(Durability) : 트랜잭션이 일단 그 실행을 성공적으로 완료하면 그 결과는 영속적이어야 한다. 따라서 시스템은 어떤 경우라도 완료된 결과의 영속성을 보장해야한다.
DB보안
- DB에 저장되어 있는 data에 대한 인가되지 않은 접근, data의 의도적, 비의도적 변경, 파괴 등의 일관성 저해하는 사고 등으로부터 DB를 보호하는 것이다.
- DB시스템 보안 요구사항은 일반 컴퓨터 시스템 보안 요구사항과 비슷하며 사용자 인증, 접근통제, DB 무결성 보장, 감사, 비밀 데이터 보호 및 관리 등이 포함된다.
- DBMS보안 메커니즘 vs OS 보안 매커니즘
1. OS 보안 매커니즘은 전체 파일에 대한 읽기와 쓰기 접근을 제어
2. OS 보안 매커니즘은 파일 내의 특정 레코드나 필드의 접근에 대한 제한은 불가능하다.
3. DMBS는 이러한 상세한 접근제어가 가능하다.
4. DBMS는 OS 보안 매커니즘보다 넓은 범위의 명령어에 대한 접근제어가 가능하다.
- DBMS 접근제어 방법
1. 프락시 방법
- 프락시 게이트웨이는 별도의 서버를 설치한 후 독립적인 IP 및 포트를 부여하고 DB 로그인시 해당 IP 또는 포트로 로그인하도록 하는방식
2. 인라인 방식
- 모든 패킷이 게이트웨이를 거치도록 설정하게해 애플리케이션에서 서버로 오는 패킷도 게이트웨이를 거쳐 속도 저하, 장애발생 시 업무 시스템에 대한 영향을 끼칠 수 있음
3. 스니핑 방식
- 스니핑 DB 사용자와 DBMS 서버간 주고받는 패킷을 복사하여 DB 접근제어 서버에 전달하는 방식
- 스니핑 방식은 서버 패킷 흐름에 영향을 전혀 주지않아 성능저하 등의 문제를 일으키지 않음
4. 에이전트 방식
- DB 서버에 접근제어를 설치하는 방식
- 솔루션에 따라 에이전트만으로 접근이 제어가 가능
DB보안 위협
- 사용자가 우연히 또는 일부러 data에 접근함으로써 발생될 수 있는 정보의 부적절한 유출, 부적절한 처리, 수정으로부터 무결성의 손상이 일어날 수 있다.
- 또한 사용자가 data에 접근을 못하게 하거나, 사용하지 못하도록 하는 DoS 공격(가용성 손상)이 있다.
- DB 보안의 주요 위협
1. 집성(Aggregation)
- 개별적인 여러 소스로부터 민감하지 않은 정보를 수집ㆍ조합하여 민감한 정보를 얻어내는 방법
- 낮은 보안등급의 정보조각을 조합하여 높은 등급의 정보를 알아내는 행위
- 추론에 대한 일부 접근방식은 일부 유효하다가 증명되었지만, 집성에 관한 대응책은 제안된 것이 없음
2. 추론
- 일반적인 data로부터 비밀정보를 획득할 수 있는 가능성을 의미
- 사용자가 통계적인 data 값으로부터 개별적인 data 항목에 대한 정보를 추적하지 못하도록 해야 함(통제하기 가장 어려운 위협)
3. DB 보안 요구사항
보안 요구사항 |
내용 |
부적절한 접근 방지 |
승인된 사용자에게만 접근 권한 부여 및 사용자, 응용 시스템의 접근 요청에 대한 정당성 여부 검사 |
추론방지 |
사용자가 통계적인 data 값으로 개별적인 데이터 항목에 대한 정보를 추적할 수 없도록 해야 함 |
무결성 보장 |
인가되지 않은 접근, 저장 data를 손상시킬수 있는 시스템 오류 등으로 DB를 보호해야 한다. |
운영적 무결성 보장 |
트랜잭션의 병행 처리 동안에 data에 대한 논리적 일관성을 보장해야한다. |
의미적 무결성 보장 |
data에 대한 허용값을 통제함으로써 data의 논리적 일관성을 보장해야 한다. |
감사기능 |
DB에 대한 모든 접근이 감사기록을 생성해야함 |
사용자 인증 |
OS서 수행하는 사용자 인증보다 엄격한 인증 필요 |
기밀성 보장 |
중요 data에 대한 기밀성 보호, 인가된 사용자에게만 접근을 허용해야 함 |
DB보안제어
- DB의 보호는 흐름제어, 추론제어, 접근제어로 이루어질 수 있다.
- 여기에 저장 data의 암호기법을 추가하면 권한 사용자만이 data를 볼 수 있게하여 정보의 비밀성 보장이 가능하다.
1. 흐름제어
- 높은 수준의 보안이 낮은 수준의 객체로 이동하는 것을 검사하여 접근 가능한 객체 간 정보흐름을 조정한다.
2. 추론제어
- 간접적인 data를 통해 다른 data 추론을 막는 것이다.
- 추론제어 방법
1. 비밀정보 은폐
2. 사용자가 가지고 있는 data를 고려하여 질의 허용여부를 결정하는 DB 지식 추적
3. DB 사용자에게 일관성 없는 질의결과 제공해 통계적 추론을 방지하는 데이터 위장
3. 접근제어
- 허가된 범위 내 시스템 정보에 대한 접근을 권한에 따라 인가된 사용자에게만 제공
- 모드와 규칙에 따라 상호배타적으로 수행
추론
- DB서 인가된 쿼리 수행과 합법적 응답을 통해 비인가된 정보를 추론하는 것이다.
- 추론 방지 방법
1. DB 설계시 추론 탐지
- DB 구조변경, 접근 제어 방식 변경으로 추론체널을 제거해 추론을 방지
2. 쿼리 타임 시 추론탐지 : 쿼리처리 중 추론 채널 위반을 제거하려는 시도, 추론 채널이 탐지되면 쿼리를 거부하거나 변경
DBMS 보안 통제
1. SQL 기반의 접근통제
- 통상 DB관리자(DBA)가 권한을 가지므로 DBA권한이라고 함
- GRANT(권한 부여), REVOKE(권한 회수) 명령어를 사용
1. GRANT - 권한 부여
GRANT privilege_name | role To user_name [WITH ADMIN OPTION]; 만약 user_name 대신 PUBLIC을 기술하면 모든 사용자에게 해당 시스템 권한 부여 |
2. REVOKE - 권한 회수
REVOKE privilege_name | ALL on table FROM user_name | role_name | PUBLIC; PUBLIC을 사용하면 모든 사용자의 권한 제거 |
뷰 기반 접근통제
- 하나 이상의 기본 테이블로부터 유도되어 만들어지는 가상테이블을 view라고 한다.
- 뷰의 내용은 실제로 존재하는 것이 아니라 조작 요구 기마다 기본 테이블 내용을 이용하여 view를 만든다.
- 뷰에대한 권한 설정은 테이블에 대한 권한 설정과 같다
- 뷰는 데이터의 논리적 독립성을 보장하며 접근제어를 통해 보안을 제공한다
- 뷰는 관계형 DB의 제한적 접근을 제공하여 사용자가 특정 행과 열에 대한 접근이 가능하도록 한다.
DBMS의 기본 보안 취약점 점검
구분 |
내용 |
디폴트 계정 패스워드 변경 |
DBMS가 적용된 디폴트 계정은 해커의 손쉬운 공격수단으로 악용되기에 반드시 비밀번호를 변경하거나 삭제해야함 |
DB 패스워드 규칙 강화 |
디폴트 계정이나 일반 계정을 생성할 때 패스워드 규칙을 강화해 손쉽게 크래킹 되지 않도록 해야한다. |
DBA 권한의 제한 |
일반 계정이 DBA 권한을 부여받지 않도록 해야한다. |
보안 패치 적용 |
제품별로 발표된 패치 적용해 취약점 제거 |
추가적인 보안 취약점 점검
구분 |
내용 |
사용하지 않는 계정 삭제 |
생성한 계정 중 불필요한 계정은 삭제하여 관리의 허점이 없도록 해야함 |
개발자 IP 접근 제한 |
필요에 의해 서버로 접근하는 개발자는 접근 IP 제한해 접근제어 강화 |
제품별 취약점 제거 |
이미 알려진 보안 취약점에 대해 피치나 제 2의 해결책(workaround)을 통해 취약점을 제거 |
데이터 암호화 |
ㆍ사용자 계정의 패스워드가 일방향 암호화 되어있는지 확인 ㆍ기밀 구분에 따라 암호화 적용을 통해 DB 보안 |
DB 보안과 다중수준 보안
- DB에 다중 수준 보안 추가하면 접근제어 기능 및 DB 자체의 설계 복잡도가 증가한다.
- 그 중 분류의 세분화 정도에 따라 추론을 더 잘 방지할 수 있다.
- 세분화 정도 관점
1. 전체 DB
2. 개별 테이블
3. 개별 열
4. 개별 행
5. 개별 요소
→ 밑으로 갈수록 좀 더 세분화 되어 있어 추론을 더 잘 방지할 수 있다.
DB 암호화 방식
1. Plug-In 방식
- 암ㆍ복호화 모듈을 DB 서버 내에 설치하고 DB 서버에서 암ㆍ복호화를 수행하는 방식
- 적용성은 뛰어나지만 CPU의 부하가 일어난다.
- 성능에 대한 민감성이 낮은 시스템의 경우 저렴한 비용으로 구축이 가능하다.
- Plug-In 방식
2. API 방식
- 암ㆍ복호화 모듈을 애플리케이션 서버 내에 설치하고 이 곳에서 암ㆍ복호화 수행
- 애플리케이션 수정을 동반 → 기존 애플리케이션 전면 수정 가능한 경우 적용하면 효과적
- API 방식
3. Hybird 방식
- Plug-In 방식의 단점인 배치 업무의 성능 저하를 보완하기 위해 API 방식을 이용하는 구성
- SQL은 API 방식을 이용하여 최적의 성능을 보장, 나머지 대부분을 DB내 Plug-In 방식을 이용하여 애플리케이션 수정을 최소화 하도록 암ㆍ복호화 모듈을 DB 서버와 애플리케이션 사이에 설치
- Hybrid 방식
4. TDE(Transparent Data Encryption) 방식
- DBMS에 추가기능으로 제공되는 암호화 기능을 이용하여 DB 내부에서 데이터 파일 저장시 암호화, 저장된 내용을 메모리 영역으로 가져올 때 DBMS에 의해 자동 복호화하는 방식
- DBMS 커널 레벨에서 처리되므로 애플리케이션 수정이 없고 인덱스는 DBMS 자체 인덱스 기능과 연동 가능
- TDE 방식
5. 파일 암호화 방식
- OS상에서 확인이 가능한 개체인 파일을 암호화하는 방식
- OS대한 의존도 높으나 파일에 대한 직접적 암호화가 가능하므로 비정형 데이터(음악, 비디오, 이미지, 로그파일)에 대한 암호화 적용이 가능
- 파일 암호화 방식
클라우드 컴퓨팅
- 인터넷 상 서버를 통하여 데이터 저장, N/W, 콘텐츠 사용 등 IT 관련 서비스를 한번에 사용할 수 있는 컴퓨팅 환경
- 클라우드 모델은 가용성을 증대시켜 준다.
- 5가지 핵심적 특징, 3가지 서비스 모델, 4가지 배치 모델로 구성된다.
- 클라우드 컴퓨팅 구성 요소
- 클라우드 컴퓨팅 3가지 서비스 모델
1. SaaS(Software as a Service)
- S/W 여러기능 중 사용자가 필요한 서비스만 이용(S/W를 빌려씀)
- 기업에서는 서버용 라이센스 획득 대신 클라우드 서비스에서 제공하ᅟᅳᆫ 기능을 동일하게 사용 가능
2. PaaS(Platform as a Service)
- 표준화된 플랫폼을 서비스로 제공하는 형태
- 사용자가 따라 플랫폼을 구현할 필요가 없다.
3. Infrastructure as a Service(IaaS)
- 서버, 스토리지를 사용자에게 제공해 사용자가 직접 서버에 서비스를 구축하는 방식
- IaaS는 사용자가 기초적 컴퓨팅 서비스를 묶어서 고도의 최적화된 컴퓨터 시스템을 구성할 수 있도록 한다.
SecaaS(Security as a Service)
- 서비스 제공자에게 제시하는 보안 서비스 패키지
- SecaaS는 CP(클라우드 관리자)가 제공하는 Saas이다.
- standalone 기반
- SecaaS 서비스 종류
1. 신원 및 접근관리
2. 웹보안
3. 이메일 보안
MS-SQL
- 응용 프로그램을 통해 운영체제의 파일이나 명령을 실행 시킬 수 있는 응용프로그램
- xp_cmdshell은 DB를 통해 OS 명령 실행하고 파일 등에 접근할수 있도록 MS-SQL에서 지원하는 확장 프로시저이다.
- xp-cmdshell은 MS-SQL 관리자 계정(sa)에 의해 실행됨
인증
1. Windows인증모드
- SQL server 인증모드
- DB 인증절차를 Windows 사용자 인증 방법으로 사용
- Windows 사용자 또는 그룹에 따라 SQL Server에 대한 액세스 부여
- 트러스트 연결
- DB 관리자가 사용자에게 접근권한 부여 가능
- 윈도우 인증 로그인 추적시 SID 값 사용
2. 혼합모드
- Windows 인증이나 SQL 인증 사용
- SQL 서버로 인증된 사용자의 사용자 이름과 암호쌍은 SQL 서버 내 유지
- 표준 Windows 로그인을 사용할 수 없는 경우에 이용
- 트러스트되지 않은 연결(SQL 연결)
고정 DB의 역할
1. db_owner : DB에서 모든 유지 관리 및 구성 작업 수행
2. db_accessadmin : 사용자 로그인에 대한 액세스 권한 추가, 제거
3. db_datareader : 모든 사용자 테이블의 모든 데이터 읽기 가능
4. db_datawriter : 모든 사용자 테이블에서 데이터 추가, 삭제, 변경 가능
5. db_ddladmin : DB서 모든 데이터 정의 언어(DLL) 명령 실행
6. db_securityadmin : 역할 구성원 자격 수정하고 사용권한 관리
7. db_backupdatareader : DB 백업 수행
8. db_denydatareader : DB에 있는 사용자 테이블의 모든 데이터 읽기 거부
9. db_denydatawriter : 모든 테이블이나 뷰의 데이터 추가, 수정, 삭제 불가
'보안기사 > 필기' 카테고리의 다른 글
기사 자격증(알기사, 디지털 포렌식) (0) | 2019.02.25 |
---|---|
기사자격증(알기사, 전자상거래 보안) (0) | 2019.02.24 |
기사 자격증(알기사, DHCP,DNS 보안) (0) | 2019.02.22 |
기사자격증(알기사, 웹 보안-OWASP) (0) | 2019.02.22 |
기사 자격증(알기사, 웹 보안 - HTTP) (0) | 2019.02.22 |