2026/04 15

내부 시스템은 어떻게 보호되는가?: Access Control

누군가 회사 내부 데이터베이스에 접속해 고객의 정보를 조회한다고 가정했을 때, 이 요청이 성공하려면 보이지 않는 여러 조건을 동시에 통과해야합니다. 사용자가 누구인지 확인하고(인증), 해당 작업을 수행할 권한이 있는지 검증되며(인가), 접근 가능한 범위 안에 있는지 판단합니다.이 과정 중 하나라도 만족하지 못하면 요청은 즉시 차단됩니다. 방화벽이나 VPN 같은 기술로 시스템을 보호한다고 생각하지만, 더 본질적으로 보면 핵심은 요청을 허용할지 말지 결정하는 판단의 기준입니다.이번 글에서는 내부 시스템이 어떤 기준으로 접근을 허용하고 차단하는지, Access Control(접근 제어)의 원리와 기준을 중심으로 정리해보겠습니다. Access Control접근 제어는 미리 정의된 보안 정책에 따라 시스템,..

SECURITY 2026.04.30

AAA 보안 모델: Authentication vs Authorization vs Accounting

보안을 공부하다보면 인증과 인가라는 단어를 자연스럽게 접하게 됩니다.두 개념은 항상 함께 등장하고 실제 시스템에서도 거의 동시에 사용되기 때문에 처음에는 하나의 흐름처럼 느껴지기 쉽습니다. 하지만 이 둘은 역할과 목적이 명확히 구분되는 핵심 개념이기 때문에, 이를 제대로 이해하지 못하면 보안 구조를 잘못 설계할 위험이 있습니다. 여기에 더해, 현대 보안에서 절대 빠질 수 없는 요소가 하나 더 있습니다. 바로 "누가 무엇을 했는가"를 기록하는 감사(Accounting)입니다. 이번 포스팅에서는 보안의 3대 요소인 AAA 모델을 중심으로 인증과 인가의 개념을 명확히 대조하고, 실제 시스템 환경에서 이들이 어떻게 유기적으로 동작하며 보안을 완성하는지 정리해 보겠습니다. AAA 보안 모델이란?네트워크 및 시..

SECURITY 2026.04.23

IDS(침입 탐지)와 IPS(침입 차단)의 차이

네트워크 보안의 시작은 흔히 방화벽이라 말하지만, 네트워크에서는 방화벽만으로 모든 공격을 막기엔 한계가 있습니다.방화벽은 정해진 '성문'을 통과하는 IP와 포트만 검사할 뿐, 페이로드에 담긴 악성 코드까지는 읽지 못하기 때문입니다. 이러한 빈틈을 메우기 위해 등장한 것이 바로 패킷의 내부를 정밀하게 들여다보는 IDS와 IPS입니다. 하지만 비슷해 보이는 이 두 장비는 네트워크에 배치되는 방식부터 장애 발생 시 서비스에 미치는 영향까지 완전히 다른 특성을 가집니다.오늘은 왜 방화벽 너머에 이들이 필요한지, 그리고 두 장비의 차이점에 대해 알아보겠습니다. IDS(Intrusion Detection System): 침입 탐지 시스템IDS(침입 탐지 시스템)은 무단 접근이나 정책 위반 징후를 감지하기 위해 ..

SECURITY 2026.04.22

웹 서버와 WAS의 차이: Nginx로 이해하기

우리가 브라우저에서 어떤 웹사이트에 접속하면 내부적으로 여러 단계를 거칩니다.이미지 파일을 요청하거나, 로그인을 요청하는 등 단순히 서버에 요청하는 것 같지만 서버 입장에서는 두 요청을 처리하는 방식이 다릅니다. 이번 포스팅에서는 두 요청을 처리하는 방식이 어떻게 다른 것인지 알아보겠습니다. 웹 서버(Web Server)웹 서버는 클라이언트의 요청 중 정적인 콘텐츠를 처리하는 서버입니다.정적인 콘텐츠는 HTML, CSS, JS 코드와 이미지, 동영상 파일들을 말합니다. 즉, 웹 서버는 이미 만들어져있는 파일을 그대로 전달하는 역할을 수행합니다. 대표적인 웹 서버로는 Nginx, Apache HTTP server가 있습니다. 웹 서버와 WAS가 분리되어 있을 경우 동적인 요청을 WAS의 컨테이너로 보내주..

SERVER 2026.04.20

리눅스 메모리 관리: Swap과 OOM Killer

프로세스가 실행되기 위해선 메모리에 올라가야합니다. (프로세스의 실행 과정에 대한 포스팅이 있으니 참고해주세요.)이처럼 운영체제 환경에서 메모리는 모든 프로세스가 실행되기 위한 핵심 자원이며, 시스템 성능과 안정성에 직접적인 영향을 미칩니다. 하지만 메모리가 부족해진다면 서버는 느려지는 것에서 끝나지 않고 실행 중이던 프로세스가 강제로 종료되는 상황이 발생할 수 있습니다. 리눅스는 이러한 문제를 해결하기 위해 Swap과 같은 보조 메모리 영역을 활용하고, OOM Killer를 통해 시스템을 보호하는 메모리 관리 구조를 제공합니다. 이번 포스팅에서는 리눅스가 메모리를 어떻게 관리하고, 부족한 상황에서 어떤 방식으로 대응하는지 알아보겠습니다. 리눅스 명령어 freefree 명령어를 통해 리눅스에서 전체 ..

LINUX 2026.04.20

프로세스는 어떻게 실행되는가(3/3): CPU 스케줄링과 컨텍스트 스위칭

지난 포스팅에서 프로그램이 프로세스로 탄생하고 관리되는 전반적인 생명주기를 다뤘다면, 이번 글에서는 그 프로세스들이 한정된 자원을 어떻게 나누어 쓰는지 알아보겠습니다. 우리가 컴퓨터로 음악을 들으면서 웹서핑을 하고, 동시에 수십 개의 브라우저 탭을 띄워둘 수 있는 이유는 사실 운영체제가 보이지 않는 곳에서 미친 듯이 바쁘게 움직이고 있기 때문입니다. 이번 포스팅에서는 한정된 CPU 자원, 실행하려는 프로세스는 넘쳐나는 상황에서 순서를 정하는 CPU 스케줄링과 작업을 교체하는 순간에 발생하는 컨텍스트 스위칭의 동작 원리를 자세히 살펴보겠습니다. CPU 스케줄링CPU는 단일 코어 기준으로 하나의 프로세스만 처리할 수 있습니다. 우리가 수백 개의 프로그램을 동시에 실행하는 것처럼 느끼는 것은 스케줄러가 ..

LINUX 2026.04.15

프로세스는 어떻게 실행되는가(2/3): 메모리, PCB, 스레드 이해하기

프로그램을 실행하는 것은 단순히 작성된 코드를 한 번 읽고 끝나는 과정이 아닙니다.실행되는 순간, 운영체제는 해당 프로그램은 하나의 프로세스를 만들고 이를 메모리 위에 올려 체계적으로 관리합니다. 이 과정에서 프로세스는 구조화된 메모리, 실행 흐름을 포함한 하나의 독립적인 실행 환경으로 동작합니다. 또한 효율적인 처리를 위해 하나의 프로세스 내에서도 여러 작업이 동시에 이루어지며, 이때 각 실행 흐름은 자원을 공유합니다. 따라서 이번 포스팅에서는 프로세스의 단순한 메모리 구조를 넘어 운영체제가 이를 어떻게 관리하는지 그리고 실행 흐름이 어떻게 구성되는지 살펴보겠습니다. 프로세스 메모리 구조프로그램이 동작하는 동안에는 코드 실행, 함수 호출, 객체 생성 등 여러 작업들이 동시에 이루어집니다.이들을 하..

LINUX 2026.04.15

프로세스는 어떻게 실행되는가(1/3): 프로세스 생성 과정

우리가 터미널에서 프로그램을 실행하거나 버튼을 클릭해 애플리케이션을 실행할 때, 단순히 “프로그램이 켜졌다”라고 생각하기 쉽습니다.하지만 그 이면에서는 운영체제가 프로그램을 메모리에 올리고, 실행 단위를 생성하며, CPU가 작업을 처리할 수 있도록 여러 과정을 거치게 됩니다. 이때 중요한 개념이 바로 프로세스입니다.리눅스에서는 이 프로세스가 fork와 exec이라는 과정을 통해 생성되고 실행됩니다. 이번 글에서는 프로그램이 실행될 때 내부에서 어떤 일이 일어나는지 흐름 중심으로 살펴보겠습니다. 프로그램프로그램은 프로세스를 실행하는 데 사용하는 설계도라고 생각하면 됩니다.기본적으로 프로그래밍 언어로 작성된 명령어의 집합이며, 이 명령어는 CPU가 실행할 수 있도록 기계어로 변환됩니다. 하지만 프로그..

LINUX 2026.04.13

Spring Framework가 등장한 이유

이전 글에서 살펴본 것처럼 서블릿은 클라이언트의 요청을 처리하고 동적인 응답을 생성할 수 있는 자바 기반의 핵심 기술입니다. 이를 통해 웹 애플리케이션을 직접 구현하는 것도 충분히 가능합니다.하지만 실제 개발 환경에서 서블릿을 기반으로 기능을 하나씩 구현해보면 점점 한계를 느끼게 됩니다. 요청을 처리하기 위해 매번 HttpServlet을 상속받고, doGet(), doPost() 메서드를 구분하여 작성해야 하며, 요청과 응답 객체를 직접 다루면서 HTTP에 대한 세부적인 처리까지 신경 써야 합니다.기능이 늘어날수록 비슷한 코드가 반복되고, 결국 코드의 가독성은 떨어지고, 유지보수는 점점 어려워지게 됩니다. 서블릿으로 웹 개발을 진행하게 된다면 규모가 커질수록 아래와 같은 서블릿 코드가 반복되며 개발자의 ..

JAVA/Spring 2026.04.10

서블릿(Servlet)이란?

웹 애플리케이션에서 사용자의 요청이 서버에 전달되면, 단순히 정적인 파일이 반환되는 것이 아니라 요청을 해석하고 그에 맞는 처리를 수행하는 과정이 이루어집니다.이때 서버 측에서 요청과 응답의 흐름을 직접 제어하며 비즈니스 로직을 수행하는 것이 바로 서블릿(Servlet)입니다.서블릿은 클라이언트로부터 전달된 요청을 기반으로 필요한 작업을 처리하고, 그 요청에 대한 결과를 생성하여 다시 클라이언트에게 응답하는 역할을 담당합니다. 이번 글에서는 이러한 서블릿이 무엇인지, 어떤 방식으로 동작하는지 살펴보겠습니다. 서블릿(Serlvet) 서블릿은 자바 기반의 웹 서버 또는 애플리케이션 서버에서 실행되는 Java 프로그램으로, 클라이언트의 요청을 처리하고 그에 대한 응답을 동적으로 생성하는 역할을 합니다. ..

JAVA 2026.04.09