checktable
지정한 날짜 범위의 테이블 데이터 무결성을 검사합니다. 대상 테이블이 다이제스트 알고리즘이 설정된 암호화 프로파일을 사용하는 경우에만 무결성 검사를 수행하며, HMAC 시그니처를 포함하지 않는 테이블은 검사에서 자동으로 제외됩니다.
명령어 속성
| 항목 | 설명 |
|---|---|
| 명령어 유형 | 드라이버 쿼리 |
| 필요 권한 | 관리자 |
| 라이선스 사용량 | 해당 없음 |
| 병렬 실행 | 미지원 |
| 분산 실행 | 수집 노드에서 실행 (mapper) |
문법
checktable [from=STR] [to=STR] [trace=BOOL] [TABLE, ...]
옵션
from=STR- 무결성 검사 대상 시작 날짜를
yyyyMMdd포맷으로 지정합니다. to=STR- 무결성 검사 대상 끝 날짜를
yyyyMMdd포맷으로 지정합니다. trace=BOOLt로 설정하면 무결성 검증에 성공한 블록도 함께 출력합니다. 미지정 시 무결성 검증에 실패하거나 손상된 블록만 출력합니다.TABLE, ...- 무결성 검사 대상 테이블 이름을 쉼표로 구분하여 지정합니다. 와일드카드(
*)를 지원합니다. 미지정 시 전체 로컬 테이블을 대상으로 검사합니다.
출력 필드
| 필드 | 타입 | 설명 |
|---|---|---|
| table | 문자열 | 테이블 이름 |
| day | 날짜 | 데이터 파티션 날짜 |
| sk | 문자열 | 파티션 서브 키 (16진수) |
| era | 문자열 | 파티션 에라 |
| block_id | 32비트 정수 | 블록 식별자. 정상적으로 블록을 읽은 경우에 할당합니다. |
| last_block_id | 32비트 정수 | 마지막으로 정상 읽기에 성공한 블록 식별자. 파일 읽기 오류 시에 할당합니다. |
| signature | 바이너리 | 블록에 저장된 HMAC 시그니처 |
| hash | 바이너리 | 블록 데이터로 계산한 HMAC 해시값 |
| msg | 문자열 | 무결성 검사 결과. valid (정상), modified (변조됨), corrupted (손상됨) |
오류 코드
파싱 오류
| 오류 코드 | 메시지 | 설명 |
|---|---|---|
| 11100 | 권한이 없습니다. | 관리자 권한이 없는 경우 |
| 11101 | 시작 날짜 포맷([from])이 형식(yyyyMMdd)에 맞지 않습니다. | from 옵션의 값이 yyyyMMdd 형식이 아닌 경우 |
| 11102 | 끝 날짜 포맷([to])이 형식(yyyyMMdd)에 맞지 않습니다. | to 옵션의 값이 yyyyMMdd 형식이 아닌 경우 |
런타임 오류
해당 사항 없음
설명
checktable 명령어는 각 테이블의 데이터 파일을 블록 단위로 읽어 HMAC 시그니처를 검증합니다. 암호화 프로파일에 다이제스트 알고리즘이 설정되어 있고 .key 파일이 존재하는 파티션만 검사 대상이 됩니다.
각 블록의 데이터를 다이제스트 키로 HMAC 해시를 계산하고, 저장된 시그니처와 비교하여 valid, modified, corrupted 중 하나를 msg 필드에 할당합니다. trace 옵션을 지정하지 않으면 modified 또는 corrupted 상태의 블록만 출력합니다.
파일 읽기 도중 I/O 오류나 암호화 오류가 발생하면 해당 파티션의 msg 필드에 corrupted를 할당하고, 마지막으로 정상 처리한 블록 번호를 last_block_id 필드에 할당합니다.
사용 예
-
전체 테이블의 무결성 검사
checktable from=20260101 to=20260317 -
특정 테이블의 무결성 검사 (상세 모드)
checktable from=20260301 to=20260317 trace=t firewall_logs -
와일드카드를 사용한 테이블 지정
checktable from=20260101 to=20260131 web_*,app_*
호환성
checktable 명령어는 소나 4.0 이전 버전부터 제공되었습니다.