177
6
장
이해 가능성을 위한 설계
있는 많은 실수를 보호하지만 잘못된 암호화
API
를 사용하는 (또는 아예 암호화를 사용하지 않
는) 실수까지 방지하지는 못한다. 마찬가지로 생성 시 안전한 웹 프레임워크는
XSS
취약점을
보호하지만 애플리케이션의 비즈니스 로직이 가진 보안 버그까지 보호하지는 못한다.
6.5
마치며
신뢰성과 보안의 장점은 이해할 수 있는 시스템과 깊고 밀접한 관련이 있다.
간혹 ‘신뢰성’과 ‘가용성’을 동의어로 취급하기도 하지만 신뢰성은 가용성, 내구성, 보안 불변성
등 시스템의 주요 설계 보장을 모두 준수하는 것을 의미한다.
이해하기 쉬운 시스템을 구축하기 위해 제시하는 핵심 가이드는 명확하고 제한적인 목적을 가
진 컴포넌트로 시스템을 구축하라는 것이다. 이런 컴포넌트의 일부는 자체적으로 신뢰 컴퓨팅
기반을 이루어 보안 위험을 다루는 책임에 전념한다.
또한 이런 컴포넌트에 보안 불변성, 아키텍처적 회복성, 데이터 내구성 같은 필요한 속성을 갖
추기 위한 전략에 대해서도 설명했다. 이번 장에서 설명했던 전략은 다음과 같다.
●
범위가 좁고 일관적이며 타입을 가진 인터페이스
●
일관적이고 신중하게 구현한 인증, 승인 그리고 계정 전략
●
소프트웨어나 관리자 역할을 수행하는 직원 등 구분없이 활성 엔티티에 신원을 명확하게 할당하기
●
보안 불변성을 캡슐화하는 애플리케이션 프레임워크 라이브러리와 데이터 타입의 활용으로 컴포넌트가
권장 사례를 일관되게 준수하는 것을 보장
시스템의 이해 가능성은 시스템에서 가장 중요한 기능이 제대로 ...