문제는 정상적인 사용자만 들어오는 것이 아니라는 점이다.
서비스를 만든 순간부터 우리는 기능뿐 아니라 보호까지 생각해야 한다.
보안의 세 가지 기본 목표
예약 정보가 외부에 노출되면 기밀성 문제, 예약 시간이 몰래 바뀌면 무결성 문제, 서버가 마비되어 예약을 할 수 없다면 가용성 문제다.
ILLUST B | ILL-19 | CIA 삼각형과 예약 서비스 예시 | 보안 3요소 기억 보조CIA의 세 목표는 서로 독립적으로만 존재하지 않는다. 암호화는 기밀성을 높이고, 무결성 검증은 변조 여부를 확인하며, 백업과 이중화는 가용성을 지키는 데 도움을 준다. 보안 대책을 볼 때 어느 목표를 지키기 위한 것인지 연결해 보자.
세 목표는 우선순위가 상황마다 달라질 수 있다. 개인정보 시스템은 기밀성이 중요하고, 금융 거래는 무결성이 특히 중요하며, 응급 서비스는 가용성이 매우 중요할 수 있다. 보안 설계는 무엇을 가장 우선해 지켜야 하는지부터 정한다.
위험은 한 가지 모습으로 오지 않는다
비밀번호를 훔칠 수도 있고, 프로그램의 약점을 이용할 수도 있으며, 서버를 과부하 상태로 만들 수도 있다.
보안은 제품 하나를 설치한다고 완성되지 않는다. 무엇이 위험한지 찾고, 줄이고, 계속 확인하는 과정 전체가 필요하다.
보안 위험을 줄이려면 먼저 자산과 위협, 취약점을 구분해야 한다. 중요한 데이터가 자산이라면 그것을 훔치려는 행위가 위협이고, 약한 비밀번호나 검증되지 않은 입력은 공격에 이용될 수 있는 취약점이 된다.
위험 관리는 한 번의 점검으로 끝나지 않는다. 시스템이 바뀌면 자산과 취약점도 달라지므로 새로운 기능을 추가하거나 운영 환경을 바꿀 때마다 다시 위험을 확인해야 한다.
같은 취약점이라도 보호해야 할 자산의 중요도와 실제 공격 가능성에 따라 위험의 크기는 달라질 수 있다. 그래서 보안 대책은 무조건 많이 적용하는 것이 아니라, 어떤 위험을 먼저 줄여야 하는지 우선순위를 정하는 과정과 함께 이루어진다.