seegongsik
내 단어장
보안

안전을 설계하는 원칙

보안이라고 하면 멋진 암호 기술 하나를 떠올리기 쉬워요. 그런데 자물쇠가 아무리 튼튼해도 문을 활짝 열어 두면 소용이 없죠. 정말 안전한 집은 자물쇠 한 개로 만들어지지 않아요. 누구에게 어떤 열쇠를 주는지, 한 겹이 뚫리면 무엇이 막는지, 모르는 손님은 일단 들이는지 막는지, 구조가 단순한지 복잡한지. 이런 설계의 약속들이 모여 안전을 만들어요. 그 약속들은 기술이 바뀌어도 오래 살아남아요.

01

필요한 만큼만, 최소 권한

전에 운영체제 강에서 권한을 거두는 걸 봤죠.
그 생각을 보안 설계로 넓혀봐요.
누군가에게 권한을 줄 때
할 일에 꼭 필요한 만큼만 줘요.
잠깐 보기만 하면 되는 사람에게
고치는 권한까지 줄 이유가 없어요.
그리고 일이 끝나면 그 권한을 거둬요.
권한이 적을수록 무언가 잘못돼도
번질 수 있는 범위가 작아져요.
많이 쥐여줄수록 잃을 것도 많아지거든요.

맡은 일: 잠깐 내용 보기만 하면 돼요
위험 범위
이 사람에게 줄 권한을 골라봐요

한 사람에게 줄 권한을 골라봐요. 필요한 만큼만 주면 위험 범위가 작고, 과하게 주면 잃을 게 커져요.

필요한 만큼만 줬을 때가 가장 깔끔했죠.
과한 권한은 평소엔 편해 보여도
무언가 어긋나는 순간 피해를 키워요.
최소 권한은 사람에게만이 아니에요.
프로그램에도, 기계에도 똑같이 적용해요.
이 부품은 딱 이 일만 하게.
이 프로그램은 딱 이 폴더만 보게.
그렇게 권한의 울타리를 좁게 쳐 둬요.
하지만 권한을 잘 나눠도
그 한 겹이 뚫리는 날이 와요.
그래서 다음 원칙이 필요해요.

02

하나가 뚫려도, 여러 겹 방어

어떤 방어도 절대 안 뚫린다고 장담할 순 없어요.
그래서 한 겹에만 모든 걸 걸지 않아요.
막을 겹을 여러 개 겹쳐 둬요.
바깥 문이 열려도 안쪽 문이 있고
안쪽 문이 열려도 금고가 있는 식이에요.
한 겹이 실패해도
그 뒤의 겹이 받쳐 줘요.
공격하는 쪽은 한 곳만 뚫으면 됐던 게
이제 모든 겹을 다 뚫어야 해요.
겹이 늘수록 끝까지 가기가 어려워져요.
이게 여러 겹 방어의 힘이에요.

1바깥 문막는 중
2안쪽 문
3금고
지키는 것
한 겹이 열려도 다음 겹이 막고 있어요.

겹을 하나씩 뚫어봐요. 한 겹이 열려도 다음 겹이 막아서, 끝까지 가려면 모든 겹을 통과해야 해요.

한 겹을 열어도 끝이 아니었죠.
다음 겹이 또 가로막았어요.
여러 겹을 둘 때 한 가지 요령이 있어요.
겹마다 성격을 다르게 하는 거예요.
모든 겹이 똑같은 자물쇠라면
하나 푸는 법이 곧 전부 푸는 법이 되니까요.
겹은 종류가 다를수록 든든해요.
그런데 겹을 여러 개 두려면
어디까지 들이고 어디부터 막을지
기준을 분명히 정해야 해요.
그 기준의 출발점이 다음 원칙이에요.

03

모르는 건 막기, 기본은 차단

문을 설계할 때 출발점을 두 가지로 둘 수 있어요.
하나는 일단 다 들이고 나쁜 것만 막는 거예요.
다른 하나는 일단 다 막고 허락한 것만 들이는 거예요.
둘 중에는 막고 시작하는 쪽이 더 안전해요.
다 들이고 시작하면
미처 생각 못 한 위험까지 들어와 버려요.
세상의 나쁜 걸 빠짐없이 다 알아야 막을 수 있거든요.
반대로 막고 시작하면
내가 분명히 허락한 것만 통과해요.
모르는 건 자동으로 막혀요.
명단에 없으면 못 들어오는 셈이에요.

기본 방침을 골라봐요
기본 방침을 골라봐요

두 출발점을 견줘봐요. 다 들이고 나쁜 것만 막으면 모르는 위험이 새고, 다 막고 허락만 들이면 모르는 건 자동으로 막혀요.

다 들이고 시작한 쪽으로는
생각 못 한 손님이 슬그머니 새어 들어왔죠.
막고 시작한 쪽은 모르는 건 다 멈췄고요.
기본을 차단으로 두면
내가 허락 목록을 빠뜨려도
위험한 쪽이 아니라 안전한 쪽으로 기울어요.
실수했을 때 손해가 작은 쪽으로 설계하는 거예요.
여기까지 세 원칙을 봤어요.
그런데 원칙을 다 지키려다 보면
설계가 자꾸 복잡해지기 쉬워요.
그게 또 다른 위험이 돼요.
마지막 원칙이 그 균형을 잡아줘요.

04

복잡하면 빈틈이 늘어요, 단순할수록 안전

원칙을 잘 지킨다고
장치를 끝없이 덧붙이면 어떻게 될까요?
구조가 복잡해질수록
그 안에 숨은 틈도 같이 늘어나요.
부품이 많고 연결이 얽힐수록
어디가 약한지 한눈에 보이지 않거든요.
사람이 다 살피지 못하는 구조는
살피지 못한 그 자리가 빈틈이 돼요.
그래서 좋은 설계는 단순함을 지켜요.
꼭 필요한 만큼만 두고
없어도 되는 건 덜어내요.
단순하면 무엇이 어떻게 막는지
한눈에 살필 수 있어서 더 안전해요.

1
부품 수: 1살피지 못한 빈틈: 0
단순해요. 무엇이 어떻게 막는지 한눈에 살필 수 있어요.

구조에 부품을 더하거나 덜어봐요. 복잡할수록 살피지 못한 빈틈이 늘고, 단순할수록 한눈에 살필 수 있어요.

부품을 덜어내니 살필 곳이 줄었죠.
덧붙일수록 빈틈은 슬며시 늘었고요.
단순함은 게으름이 아니에요.
오히려 무엇이 정말 필요한지
끝까지 따져본 결과예요.
네 원칙은 따로 노는 게 아니라
서로 맞물려 돌아가요.
최소 권한으로 줄이고
여러 겹으로 받치고
기본은 차단으로 두되
그 전체를 단순하게 유지하는 거예요.
이제 네 원칙을 한자리에 모아봐요.

05

정리해볼까요

한자리에 모으면 이래요.
좋은 보안은 기술 하나가 아니라 설계 원칙에서 나와요.
최소 권한, 필요한 만큼만 주고 끝나면 거둬요.
여러 겹 방어, 하나 뚫려도 다음 겹이 받쳐요.
기본은 차단, 허락한 것 빼곤 일단 막아요.
단순할수록 안전, 복잡하면 빈틈이 늘어요.
네 원칙은 서로 맞물려 함께 돌아가요.
그리고 이 원칙들은 개별 기술보다 오래 가요.
그래서 새 기술을 만나도
원칙으로 먼저 따져보면 흔들리지 않아요.

1최소 권한
2여러 겹 방어
3기본은 차단
4단순할수록 안전

네 원칙을 차례로 눌러 되짚어봐요. (최소 권한 -> 여러 겹 방어 -> 기본은 차단 -> 단순할수록 안전)

이제 안전을 설계하는 네 원칙을 손에 쥐었어요.
앞으로 다른 보안 이야기를 만나면
이 원칙들이 길잡이가 돼 줄 거예요.
이건 누구에게 필요한 만큼만 준 걸까,
이건 한 겹뿐일까 여러 겹일까,
이건 모르는 걸 들이는 쪽일까 막는 쪽일까,
이건 단순한가 괜히 복잡한가.
기술의 이름은 자꾸 바뀌어도
이 질문들은 늘 통해요.
원칙으로 따지는 눈, 그게 보안을 보는 힘이에요.

한 줄 정리좋은 보안은 기술 하나가 아니라 설계 원칙에서 나와요. 첫째, 최소 권한이에요. 누구에게나 필요한 만큼만 권한을 주고, 일이 끝나면 거둬요. 권한이 적을수록 잃을 것도 적어요. 둘째, 여러 겹 방어예요. 한 겹만 믿지 않고 막을 겹을 여러 개 둬요. 한 겹이 뚫려도 다음 겹이 받쳐요. 셋째, 기본은 차단이에요. 명시적으로 허용한 것 빼고는 일단 막아요. 모르는 건 들이지 않는 게 안전해요. 넷째, 단순할수록 안전해요. 구조가 복잡할수록 미처 못 본 빈틈이 늘어나요. 단순하면 살피기 쉬워요. 이 원칙들은 개별 기술이 바뀌어도 오래 가요. 그래서 새 기술을 배울 때도 원칙으로 먼저 따져보면 길을 잃지 않아요.
보안
이 페이지가 도움 됐다면 후원하기