😈 오타발견 : 인덱스 p203 그림 7-14
- 검색 및 정렬(sort) 조건 등에 이용되는 컬럼에 인텍스(
인덱스
)를 이용한다.
프로그램이나 네트워크를 통해 이루어지는 공격
부정한 접속 : 접근할 권한이 없는 사람이 네트워크를 통해 부정하게 서버나 시스템에 침입하는 행위
컴퓨터 바이러스
DoS 공격
도청
네트워크에 흘러 다니는 정보를 부정하게 훔쳐낼 수 있는 도청은 정보 누설로 연결될 우려가 있다.
시스템에 악영향을 끼치는 문제 ③
인적 위협 : 인간에 의한 실수나 부정행위로 인하여 손실을 일으키는 요인
1) 오조작
2) 분실, 두고 내리기
3) 소셜 엔지니어링
소셜 엔지니어링: 사람의 심리나 행동의 틈을 타서 중요한 정보를 입수하는 수단
-ex) 전화로 관계자인척 위장하여 패스워드를 물어보기 등
발생한 에러의 이력
에러로그 : 에러 문장이 기록된 파일로,
데이터베이스에서 에러가 일어날 때마다 하나씩 새롭게 추가됨
DB를 운용하면서 발생한 중요한 경고, 이상 상황 등을 전달하는 메시지가 기록
에러가 발생한 날짜, 에러 코드, 에러 메시지, 에러 레벨 등
에러의 종류와 대책
SQL 문법 에러 : 데이터베이스에서 실행되는 SQL에 오타가 있으면 에러
자원(resource) 부족: 메모리나 디스크 용량 부족
데이터베이스와 접속할 수 없는 데드락(dead lock) 발생, 타임아웃 등
에러 로그 또는 감시하고 있는 정보 등을 살펴보면서 대응할 필요 있음
영어로 쓰인 에러 메시지는 번역을 한다.
ex) 디스크 용량 부족인 경우, 디스크에 빈 공간이 만들어지도록 필요없는 파일을 삭제하거나 디스크 용량을 늘리거나 한다.
공식 자료 조사 및 팀 내 과거에 같은 사례 발견 시 그 때의 대응 방법 참고
ex) 책의 색인
- 원하는 내용이 적힌 페이지를 찾고 싶을 때 색인을 참조하면, 원하는 페이지를 빨리 찾을 수 잇다.
데이터 양이 많은데 그 안에서 한정된 데이터를 추출하거나 컬럼에 저장되어 있는 값의 종류가 많을수록
인덱스가 효과적으로 기능한다.
👎: 인덱스를 적용하게 되면 데이터를 편집할 때 인덱스에 대한 갱신 처리도 이루어져, 데이터 편집 시 속도가 떨어진다는 단점
많은 양의 데이터를 자주 등록하는 테이블에 인덱스를 적용할 경우 주의가 필요하다.
👎: 데이터와는 별도로 인덱스 영역이 필요하므로, 디스크 용량을 필요로 한다.
- 검색 및 정렬(sort) 조건 등에 이용되는 컬럼에 인덱스를 설정한다
- 데이터가 많을수록 효과적
- 값이 많은 컬럼 good
- 값의 종류가 적은 컬럼은 그다지 효과가 없음
스케일 업
- 대상 컴퓨터의 메모리나 디스크, CPU를 증설하거나, 보다 고성능 제품으로 대체함으로써 성능 향상을 도모하는 접근 방법
ex) 하나의 DB 안에서 높은 빈도로 갱신 처리가 발생하는 경우 등 특정 컴퓨터 내에서 처리가 빈번히 일어나는 경우 유효하다.
👎: 가동 중인 시스템을 한 번 멈출 필요가 있다는 점, 기기의 성능에는 물리적인 한계(무한한 스케일 업x)
스케일 아웃
- 컴퓨터의 개수를 늘려 처리를 분산함으로써 처리 성능을 올리는 접근법
- ex) 단순한 처리를 여러 대로 분산할 경우 유효
- ex) 웹 시스템과 같은 대량의 접속에 대해 데이터의 리턴 처리를 여러 대로 분산하는 것은 비교적 쉽게 실현
여러 대가 있기 때문에 1대가 고장 나도 시스템을 멈추지 않고, 수행할 수 있다는 장점도 있다.
단, 여러 대를 어떻게 구성해서 접속할 것인지, 시스템 안으로 들어오는 처리들을 어떻게 분산시킬 것인지 등에 대한 고려가 필요하다.
데이터베이스에서 스케일 아웃을 실현하는 기능으로서 리플리케이션
리플리케이션에 의해 원천 데이터베이스로부터 동일한 내용의 데이터베이스를 복제하고 데이터를 동기화해서 사용할 수 있다.
복제의 원천 데이터베이스 내용이 갱신되었을 경우, 그 내용을 복제한 데이터베이스에도 반영시킬 수 있다.
ex) 어느 한 쪽 데이터베이스에 장애가 발생한 경우에도 다른 쪽 정상적인 데이터베이스에 처리를 맡김으로써 시스템을 지속적으로 운용 가능
원천 데이터베이스(마스터) 복제하여 리드 리플리카라고 불리는 데이터베이스를 생성
리드 리플리카
: 읽기전용 데이터베이스로, 데이터 갱신은 마스터 데이터베이스에서 실시하고 마스터 데이터베이스의 변경 내용이 리드 리플리카에 반영되는 흐름이다.
데이터 읽기가 주가 되는 데이터베이스에서는 이렇게 구성함으로써 읽을 때의 부하를 분산시킬 수 있어 성능을 향상할 수 있다.
SQL 인젝션 : 폼(form) 등 사용자가 임의로 입력할 수 있는 항목에 공격자가 부정한 SQL 문장을 입력함으로써 본래 열람할 수 없는 정보를 빼내거나 정보를 변경할 수 있는 취약점
회원의 연락처나 신용카드 정보가 유출되는 사례 다수 발생
SELECT * FROM users WEHRE id = 123;
SELECT * FROM users WEHRE id = 1 or 1 = 1; 실행됨
- 모든 사용자의 정보를 얻게 되는 SQL