[SEC-001][입문] 기밀성·무결성·가용성과 위협 모델 이해하기 > IT 기술 공유

본문 바로가기
사이트 내 전체검색

IT 기술 공유

[SEC-001][입문] 기밀성·무결성·가용성과 위협 모델 이해하기

페이지 정보

profile_image
작성자 기술팀장
댓글 0건 조회 242회 작성일 26-08-29 06:32

본문

[이번 수업]

보안은 막연히 ‘해킹을 막는 일’이 아니라 지켜야 할 자산과 예상되는 문제, 필요한 통제를 연결하는 작업입니다. 이번에는 기밀성·무결성·가용성이라는 세 가지 목표를 구분하고 가상의 메모 서비스에 방어용 위협 모델을 작성합니다.

[선수지식]

BACK-001의 서버 구조와 DEVOPS-001의 개발·운영 생명주기를 알면 좋습니다. 외부 시스템이나 공격 도구는 사용하지 않습니다.

[학습목표]

1. 기밀성·무결성·가용성의 차이를 사례로 설명할 수 있습니다.
2. 위협·취약점·위험·보안 통제를 구분할 수 있습니다.
3. 자산과 위협에 맞는 방어책을 기록할 수 있습니다.

[핵심개념]

기밀성(confidentiality)은 정보가 허가된 사람에게만 공개되도록 하는 목표입니다. 비공개 메모를 소유자만 읽게 하는 접근 제어와 전송·저장 암호화가 예입니다. 무결성(integrity)은 정보가 허가 없이 변경되거나 삭제되지 않고 정확함을 유지하도록 하는 목표입니다. 변경 이력, 입력 검증, 백업 검증이 도움이 됩니다. 가용성(availability)은 허가된 사용자가 필요할 때 정보와 서비스를 안정적으로 이용하게 하는 목표입니다. 상태 감시, 장애 대비, 복구 연습이 관련됩니다.

세 목표를 CIA 삼요소라고 부릅니다. 모든 시스템에서 우선순위가 같지는 않습니다. 먼저 자산과 업무 영향을 파악해야 적절한 통제를 선택할 수 있습니다.

위협(threat)은 피해를 일으킬 수 있는 상황이나 사건이고, 취약점(vulnerability)은 위협이 이용할 수 있는 약점입니다. 위험(risk)은 특정 위협이 현실화될 가능성과 그 영향에 관한 판단입니다. 통제(control)는 위험을 줄이는 정책·절차·기술입니다.

위협 모델링은 시스템을 보안 관점에서 구조화하고 적용 가능한 위협과 대응을 찾는 반복 과정입니다. ‘무엇을 만드는가, 무엇이 잘못될 수 있는가, 무엇을 할 것인가, 충분히 검토했는가’ 순서로 시작할 수 있습니다. 자산, 사용자, 데이터 흐름, 저장소, 외부 연결, 신뢰 경계를 그린 뒤 위협을 우선순위화하고 통제를 검증합니다. 설계 초기에 만들고 기능과 구조가 바뀔 때 갱신해야 합니다.

[따라하기]

threat_model.py 파일에 아래 코드를 저장합니다. 공격을 실행하지 않고 가상 서비스의 자산·목표·위협·통제를 연결합니다.

model = [
    {
        "asset": "private notes",
        "goal": "confidentiality",
        "threat": "unauthorized reading",
        "control": "check the owner on every read",
    },
    {
        "asset": "note contents",
        "goal": "integrity",
        "threat": "unintended change or deletion",
        "control": "keep change history and tested backups",
    },
    {
        "asset": "note service",
        "goal": "availability",
        "threat": "service failure",
        "control": "monitor health and rehearse recovery",
    },
]

required = {"asset", "goal", "threat", "control"}
for item in model:
    assert required <= item.keys()
    print(item["goal"], "->", item["control"])

print("controls mapped:", len(model))

Windows는 ‘py threat_model.py’, macOS·Linux는 ‘python3 threat_model.py’를 실행합니다. 세 목표와 통제가 출력되고 마지막에 ‘controls mapped: 3’이 나오면 성공입니다.

[흔한 실수]

위협과 취약점을 같은 말로 쓰지 마세요. 통제 목록부터 복사하면 실제 자산과 맞지 않는 대책이 생깁니다. 발생 가능성만 보거나 영향만 보지 말고 둘을 함께 검토합니다. 위협 모델을 한 번 만든 문서로 방치하지 말고 새 데이터 흐름·권한·외부 연동이 추가될 때 갱신합니다.

[보안 주의]

위협 모델은 방어와 위험 감소를 위한 것입니다. 실습은 가상 사례나 본인 소유의 로컬·격리 환경으로 제한하고, 실제 타 시스템의 약점을 시험하거나 악용 절차를 작성하지 마세요. 모델 문서에는 실제 비밀번호·토큰·개인정보를 넣지 말고 접근 권한을 제한합니다.

[직접 해볼 과제]

모델에 ‘백업 파일’ 자산을 한 개 추가하세요. 기밀성·무결성·가용성 중 가장 중요한 목표를 고르고 방어적으로 표현한 위협과 통제를 기록한 뒤 controls mapped가 4인지 확인합니다.

[확인문제]

1. 기밀성·무결성·가용성은 각각 무엇을 보호하나요?
2. 위협과 취약점은 어떻게 다른가요?
3. 시스템이 변경될 때 위협 모델도 갱신해야 하는 이유는 무엇인가요?

[다음 학습]

다음 게시 과정은 AI-001 ‘AI·머신러닝·딥러닝의 차이’입니다. SEC 트랙의 다음 단계는 SEC-002 ‘비밀번호·해시·MFA’입니다.

[공식 참고 자료]

NIST FIPS 199 — 기밀성·무결성·가용성 기반 보안 분류
https://csrc.nist.gov/pubs/fips/199/final

NIST SP 800-30 Rev. 1 — 위험 평가 지침
https://csrc.nist.gov/pubs/sp/800/30/r1/final

OWASP 공식 치트시트 — 위협 모델링
https://cheatsheetseries.owasp.org/cheatsheets/Threat_Modeling_Cheat_Sheet.html

NIST 용어집 — 위협
https://csrc.nist.gov/glossary/term/threat

댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

사이트 정보

회사명 : 회사명 / 대표 : 대표자명
주소 : OO도 OO시 OO구 OO동 123-45
사업자 등록번호 : 123-45-67890
전화 : 02-123-4567 팩스 : 02-123-4568
통신판매업신고번호 : 제 OO구 - 123호
개인정보관리책임자 : 정보책임자명

접속자집계

오늘
4,348
어제
6,862
최대
16,772
전체
770,299
Copyright © 소유하신 도메인. All rights reserved.