데이터베이스 보안
키의 유형
후보키 : 유일성과 최소성을 만족하는 키
슈퍼키 : 유일성을 만족하는 키
기본키 : 여러 후보키 중에 하나 선정
대체키 : 기본키로 선정되고 남은 나머지 키 지칭
외래키 : 다른 릴레이션에서 기본키로 이용되는 키
무결성의 종류
키 무결성 : 한 릴레이션에 같은 키값을 가진 튜플이 있어서는 안됨
참조 무결성 : 외래키는 널이거나 참조 릴레이션에 있는 기본키와 같아야 한다
트랜잭션 ACID 성질
원자성 : 트랜잭션 내의 모든 연산은 반드시 한번에 완료되어야 함
일관성 : 트랜잭션이 완료되면 일관성 있는 DB 상태로 변환
격리성 : 트랜잭션 실행 중에 있는 연산의 중간결과는 다른 트랜잭션이 접근 못한다
영속성 : 트랜잭션 실행을 성공적으로 완료하면 그 결과는 영속적이다
데이터베이스 보안 요구사항
데이터베이스 보안 위협
에그레게이션(집성)
- 개별적인 여러 소스로부터 민감하지 않은 정보를 수집/조합하여 민감한 정보를 생성
- 데이터마이닝에 관한 관심이 집성에 대한 관심을 불러일으킴
- 일부 접근방식이 유효하다고 증명되었으나, 대응책으로 제안된 것은 없음
추론 (통제하기 가장 어려운 위협)
- 일반적인 데이터로부터 비밀정보를 획득할 수 있는 가능성
- 통계적인 데이터 값으로부터 개별적인 데이터 항목에 대한 정보를 추적하지 못하도록 해야 함
- 추론 대응책 : Polyinstantiation, Partition, Call suppression, Noise, Perturbation
📍다중사례화 Polyinstantiation
두 가지 버전의 동일 객체를 생성함으로써 낮은 수준의 주체가 실제 정보를 알지 못하게 함
보안 수준을 갖지 않은 엔티티에게 거짓 정보를 제공하는 방법
데이터베이스 보안 요구사항
- 부적절한 접근 방지 : 사용자나 응용시스템의 접근 요청에 대해 정당성 여부 검사
- 추론 방지 : 개별적인 데이터 항목에 대한 정보를 추적할 수 없어야 함
- 무결성 보장 : 인가되지 않은 접근, 저장 데이터를 손상시킬 수 있는 시스템 오류, 고장, 파업 등으로부터 보호
- 운영적 무결성 보장 : 트랜잭션의 병행 처리 동안에 데이터에 대한 논리적 일관성을 보장해야 함
- 의미적 무결성 보장 : 데이터에 대한 허용 값을 통제함으로써 변경 데이터의 논리적 일관성을 보장해야 함
- 감사 기능 : 데이터베이스에 대한 모든 접근이 감사 기록을 생성해야 함
- 사용자 인증 : 운영체제에서 수행하는 사용자 인증보다 엄격한 인증 필요
- 기밀성 보장 : 중요 데이터에 대한 기밀성을 보호하고 인가된 사용자에 대해서만 접근을 허용해야 함
데이터베이스 보안 통제
데이터베이스 보안제어
흐름제어
임의의 객체에 포함된 정보가 명시적으로나 암시적으로 낮은 보호수준의 객체로 이동하는 것을 검사
접근가능한 객체 간의 정보흐름 조정
추론제어
간접적인 데이터 노출로부터 데이터를 보호하기 위함
추론 채널 : y=f(x)인 y를 유도하기 위해 x를 찾는 채널, 간접접근/상관데이터/미싱데이터가 있음
추론제어 방법 : 비밀정보 은폐, 질의 허용여부를 결정하는 사용자의 데이터 지식 추적, 부정확하거나 일관성 없는 질의결과 제공, 허용 가능한 질의의 제한, 질의의 응답으로 제공되는 데이터 한정
접근제어
보호정책에서 세운 모드와 규칙에 따라 상호 배타적이게 하는 것
📍데이터베이스 접근제어 솔루션
조직의 보안정책 구성에 따라 사용허가 및 로깅여부를 결정
독립된 서버로 구축되기 때문에 이중화 구성을 필요로 함
네트워크를 우회하여 접근하는 경우 보안 취약점이 발생
독립된 서버로 다중 인스턴스에 대한 통제가 가능
추론
인가된 쿼리 수행과 합법적 응답을 통해 비인가된 정보를 추론하는 것
많은 데이터 아이템의 조합이 개별 아이템보다 민감하거나
데이터 아이템들의 조합이 민감한 데이터를 추론하는데 사용될 수 있을 때 발생
DBMS 보안 통제
SQL 기반 접근 통제(GRANT, REVOKE) : 접근 권한 관리 명령어
뷰 기반의 접근 통제 : 데이터의 논리적 독립성을 제공하며, 자료에 대한 접근제어로 보안 제공
계단식 권한 부여 : 권한이 한 사용자에서 다른 사용자에게로 계단식으로 주어지는 것
DBMS 보안 점검 사항
- 디폴트 계정 패스워드 변경 : 디폴트 계정은 해커의 손쉬운 공격 수단
- DB 패스워드 규칙 강화 : 디폴트나 일반 계정 생성 시 PW 규칙을 강화하여 손쉽게 크래킹되지 않도록 함
- DBA 권한의 제한 : 일반 계정이 DBA 권한을 부여받지 않도록 주의해야 함
- 보안패치 적용 : 제품별로 발표된 보안 패치를 적용하여 취약점을 제거해야 함
- 사용하지 않는 계정 삭제 : 생성한 계정 중 사용이 불필요한 계정은 삭제하여 관리의 허점이 없도록 함
- 개발자 IP 접근 제한 : 필요에 의해 서버로 접근하는 개발자는 접근 IP를 제한하여 접근제어를 강화
- 제품별 취약점 제거 : 이미 알려진 제품별 보안 취약점에 대해 패치나 workaround 적용
- 데이터의 암호화 : 사용자 계정의 패스워드가 일방향 암호화되어 있는지 확인
데이터베이스 보안
데이터베이스 보안과 다중 수준 보안
세분화 정도 : 전체 데이터베이스, 개별 테이블, 개별 속성, 개별 튜플, 개별 요소
DB 암호화 방법
- Plug-In 방식 : 암복호화 모듈이 DB 서버에 설치 (배치 업무의 성능 저하)
- API 방식 : 라이브러리 형태로 서버에 설치되고 응용프로그램에서 암복호화 모듈을 호출(애플리케이션 전체 수정 필요)
- Hybrid 방식 : SQL은 API 방식으로 최적 성능 보장, Plug-in 방식으로 애플리케이션 수정 최소화하도록 모듈 설치
- TDE 방식 : DBMS에 내장된 암호화 기능 이용, DBMS 커널 수준에서 처리하여 DB 스키마의 변경이 거의 필요하지 않음
- 파일 암호화 방식 : OS 상에서 확인이 가능한 개체인 파일을 암호화하는 방식
DBMS 보안 관리
MS-SQL 인증
윈도우 인증 모드
- SQL server 기본 인증모드
- DB 인증 절차를 윈도우 사용자 인증 방법 사용
- 위도우 인증 로그인 추적 시 SID 값 사용
- 윈도우 사용자 또는 그룹에 따라 SQL 서버에 대한 액세스 부여
- 데이터베이스 관리자가 사용자에게 접근권한 부여 가능
혼합 인증 모드
- 윈도우 인증과 SQL 서버 인증을 혼용하여 사용
- SQL 서버로 인증된 사용자의 사용자 이름과 암호쌍은 SQL 서버 내에 유지
- 표준 윈도우 로그인을 사용할 수 없는 경우에 이용
📍SECaaS
보안서비스를 ASP 형태로 공급한다는 측면에서 넓은 의미의 PaaS로 볼 수 있음