본문 바로가기
AI/정보처리기사_스터디

Day12)정처기 5과목 소프트웨어 개발 보안 구축 정리 | p.5-76~p.5-141

by 거대웅 TitanBear 2026. 7. 28.

정처기 공부 기록 · 7월 28일 · 실기 5과목

소프트웨어 개발 보안 구축
p.5-76~p.5-141

오늘의 한 줄 목표

보안을 ‘마지막에 붙이는 기능’이 아니라, 요구사항부터 설계·코딩·테스트·운영까지 이어지는 개발 기준으로 이해하기.

1. 오늘 공부한 내용

이번 범위는 5과목 03. 소프트웨어 개발 보안 구축과 이어지는 시스템 보안 설계입니다. 핵심은 “해킹 사고가 난 뒤 막는 것”이 아니라, 만들기 전부터 위험을 찾고 안전한 구조·코드·운영 환경을 설계하는 것입니다.

1소프트웨어 개발 보안 설계
보안 요구사항, 자산·위협 분석, 보안 원칙, 접근 통제와 암호화 설계
2소프트웨어 개발 보안 구현
입력값 검증, 인증·세션, 인가, 오류 처리, 로그, 시큐어 코딩
3시스템 보안 설계
접근제어 모델, 암호화, 방화벽·IDS/IPS·VPN·DMZ·Secure OS
4운영까지의 보안
배포 설정, 권한 관리, 로그·모니터링, 백업과 장애 대응

개발 보안은 언제 시작할까?

보안은 구현 단계에서만 하는 검사가 아닙니다. 개발 생명주기 전체에서 반복해야 합니다. 처음 설계가 안전하지 않으면, 나중에 코드를 고쳐도 근본 위험이 남을 수 있습니다.

요구사항 — 어떤 정보가 민감한지, 누가 어떤 기능을 써야 하는지, 법·규정·보안 요구가 무엇인지 정의합니다.

설계 — 자산·위협·취약점을 분석하고, 인증·권한·암호화·로그·네트워크 구간을 설계합니다.

구현 — 입력값 검증, 안전한 API 사용, 비밀번호·세션 처리, 예외 처리와 로그 기준을 코드에 반영합니다.

테스트 — 기능 시험뿐 아니라 권한 우회, 입력값 공격, 설정 오류, 취약점 여부를 점검합니다.

배포·운영 — 기본 계정 제거, 최소 권한, 패치, 백업, 모니터링과 사고 대응 절차를 관리합니다.

보안의 기본 목표: CIA와 추가 속성

목표의미예시
기밀성
Confidentiality
허가된 사람만 정보를 볼 수 있음접근 권한, 암호화, 마스킹
무결성
Integrity
정보가 허가 없이 바뀌거나 훼손되지 않음해시, 전자서명, 변경 이력
가용성
Availability
필요할 때 서비스를 사용할 수 있음이중화, 백업, 장애 복구
인증
Authentication
접속자가 주장하는 본인이 맞는지 확인비밀번호, OTP, 생체 인증
인가
Authorization
인증된 사람이 무엇을 할 수 있는지 결정관리자·일반 사용자 권한 분리
부인 방지
Non-repudiation
행위를 한 사람이 나중에 부인하지 못하게 함전자서명, 감사 로그

보안 설계의 원칙

최소 권한 — 사용자·프로그램에는 업무에 꼭 필요한 권한만 줍니다. “일단 모두 허용”이 아니라 필요한 경우에만 허용합니다.

안전한 기본값 — 설정하지 않은 기능·접근은 기본적으로 차단하고, 허용이 필요할 때만 명시합니다.

직무 분리 — 한 사람이 요청·승인·실행·검증을 모두 하지 않도록 역할을 나누어 실수와 악용을 줄입니다.

완전한 검증 — 화면에서 버튼을 숨기는 것으로 끝내지 않고, 서버와 API에서도 매 요청마다 인증·권한을 확인합니다.

장애도 안전하게 — 오류가 나더라도 민감 정보가 노출되거나 권한이 열리지 않게 하고, 사용자에게는 필요한 범위의 안내만 보여 줍니다.

시큐어 코딩: 자주 나오는 취약점과 예방 방향

시큐어 코딩은 공격을 막는 코드를 처음부터 작성하는 것입니다. 아래는 시험에서 자주 비교하는 공격 유형과 방어 방향입니다. 실제 서비스에서는 프레임워크·언어별 보안 가이드를 함께 적용해야 합니다.

취약점무엇이 문제인가?예방 방향
SQL 삽입입력값이 SQL 문장의 일부로 해석되어 의도하지 않은 조회·변경이 일어남준비된 쿼리·파라미터 바인딩, 입력값 검증, DB 최소 권한
XSS공격자가 넣은 스크립트가 다른 사용자의 브라우저에서 실행됨출력 인코딩, 입력 검증, 안전한 콘텐츠 정책 적용
명령어 삽입외부 입력이 운영체제 명령처럼 실행됨셸 호출 최소화, 허용 목록 검증, 안전한 API 사용
경로 조작파일 경로를 바꿔 허용되지 않은 파일에 접근경로 정규화, 상위 경로 이동 차단, 허용된 저장소만 사용
버퍼 오류허용 범위를 넘는 데이터 처리로 메모리 훼손·오작동 발생길이 검사, 안전한 함수·자료형, 경계값 시험
권한 우회URL·ID·API 요청을 바꿔 다른 사람의 정보·기능에 접근서버 측 인가 검사, 기본 거부, 객체별 소유권 확인

암기 연결

입력값을 믿어 발생하는 문제는 삽입·경로 조작·버퍼 오류로, 로그인 뒤 권한 검사를 빼서 생기는 문제는 권한 우회로 구분합니다. 현재 OWASP도 접근제어 실패, 설정 오류, 암호화 실패, 삽입 등을 주요 웹 애플리케이션 위험으로 제시합니다.

인증·세션·로그에서 놓치기 쉬운 부분

비밀번호 — 평문으로 저장하지 않고, 검증된 비밀번호 해싱 방식을 사용합니다. 소스 코드·설정 파일에 비밀값을 하드코딩하지 않습니다.

세션 — 로그인 전후로 세션을 적절히 관리하고, 세션 식별자를 안전하게 전송·보관하며 로그아웃·만료 처리를 명확히 합니다.

오류 처리 — 사용자 화면에는 DB 구조·파일 경로·내부 오류 정보가 그대로 보이지 않게 하고, 분석에 필요한 상세 정보는 접근 통제된 로그로 남깁니다.

로그·모니터링 — 로그인 실패, 권한 변경, 중요 데이터 접근, 오류와 배포 이력을 남기고 이상 징후를 확인합니다. 단, 로그에 비밀번호·주민번호 등 민감값을 그대로 기록하면 안 됩니다.

시스템 보안 설계: 접근제어와 암호화

구분권한을 정하는 기준핵심 단서
DAC
임의적 접근제어
자원 소유자가 권한을 부여·변경소유자 재량, 유연하지만 통제 약화 가능
MAC
강제적 접근제어
시스템이 보안 등급·규칙에 따라 강제등급, 중앙 통제, 군사·고보안 환경
RBAC
역할 기반 접근제어
개인에게 직접 주기보다 역할에 권한을 부여관리자·인사·일반 사용자 같은 역할

대칭키 암호화 — 암호화와 복호화에 같은 비밀키를 사용합니다. 빠르지만 키를 안전하게 전달·관리해야 합니다.

비대칭키 암호화 — 공개키와 개인키 한 쌍을 사용합니다. 키 분배·전자서명에 유용하지만 대칭키보다 연산 부담이 큽니다.

해시 — 원문을 일정한 길이의 값으로 변환해 무결성 확인에 씁니다. 일반적으로 원문을 되돌리는 복호화를 목적으로 하지 않습니다.

전자서명 — 개인키로 서명하고 공개키로 검증해, 무결성과 송신자 확인·부인 방지에 활용합니다.

시스템·네트워크 보안 장비 한 번에 구분하기

방화벽(Firewall) — 정책에 따라 네트워크 통신을 허용·차단합니다. ‘문 앞에서 출입 규칙을 적용하는 장치’로 기억합니다.

IDS — 침입 징후를 탐지하고 알려 줍니다. 직접 차단보다 ‘발견·경보’가 핵심입니다.

IPS — 침입 징후를 탐지한 뒤 차단까지 수행합니다. IDS와 달리 ‘차단’이 핵심입니다.

VPN — 공용 네트워크에서도 암호화된 가상 사설 통신 경로를 만듭니다.

DMZ — 외부에 공개해야 하는 웹·메일 서버 등을 내부망과 분리해 두는 중간 구역입니다.

Secure OS — 기존 운영체제에 보안 기능을 강화해 사용자·프로세스·파일·장치에 대한 접근 통제를 지원하는 운영체제입니다.

2. 공부하면서 개인적으로 중요하다고 생각하는 용어

① 최소 권한 원칙
권한을 많이 줄수록 편해 보여도 사고 범위가 커진다. ‘필요한 것만 허용’이 접근제어 문제의 출발점이다.

② 입력값 검증
SQL 삽입, 명령어 삽입, 경로 조작처럼 외부 입력을 믿어서 생기는 취약점의 공통 방어선이다.

③ 인증과 인가
인증은 ‘너 누구야?’, 인가는 ‘너는 무엇을 해도 돼?’라는 질문으로 구분하면 가장 명확하다.

④ RBAC
사람 한 명씩 권한을 부여하는 대신 역할에 권한을 묶어 관리하므로, 실제 조직에서 권한 변경을 관리하기 쉽다.

3. 공부하면서 이해하지 못한 용어

① 해시와 암호화의 차이
암호화는 키로 원문을 다시 복호화할 수 있지만, 해시는 원문 복원을 목적으로 하지 않고 값이 바뀌었는지 확인하는 데 쓴다.

② IDS와 IPS의 차이
IDS는 침입을 찾아 알려 주는 탐지 중심, IPS는 탐지 뒤 실제 통신을 차단하는 방어 중심이다.

③ DAC·MAC·RBAC의 차이
DAC는 소유자 재량, MAC는 보안 등급을 시스템이 강제, RBAC는 역할에 따라 권한을 주는 방식이다.

4. 오늘 공부한것 소회

보안은 어려운 암호 알고리즘만 외우는 과목이라고 생각했는데, 실제로는 개발 과정의 기본 습관에 가까웠다. 입력값을 의심하고, 권한을 최소화하고, 오류가 나도 정보를 덜 보여 주는 작은 원칙들이 모여 시스템을 지킨다는 점이 인상적이었다. 다음 복습에서는 SQL 삽입·XSS·권한 우회를 각각 어떤 방어 방식과 연결해야 하는지 다시 확인해야겠다.

범위 확인·추가 복습 자료

학습 일정의 p.5-76~p.5-141, 소프트웨어 개발 보안 설계·구현과 시스템 보안 설계 범위를 기준으로 정리했습니다. 판본에 따라 세부 페이지·용어 배열은 달라질 수 있습니다.

OWASP Top 10:2025 · OWASP 접근제어 실패 예방 자료