Sre를 위한 시스템 설계와 구축 - 1장


신뢰성과 보안
신뢰성
내부 시스템을 얼마나 믿을 수 있는가?
에러시 대처 : “실패 시 개방”하여 팀과 협력해 빠르게 해결
보안
외부의 적으로 부터 안전한가?
공격시 대처 : “실패 시 보안”으로 일부만 알고 안전하고 은밀하게 해결
절충안 -> 실패 시 보안 하되, 다른 방법으로 열 수 있게 허용하기
안전한 시스템의 CIA 3대 조건
기밀성
- 사용자의 권한에 맞게 보여져야 하는 정보만 보여야 한다.
무결성
- 시스템에서 다뤄지는 데이터들은 무결해야한다.
가용성
- 서비스는 그 어떤 상황에서든 이용할 수 있어야 한다.
신뢰성과 보안을 사전 예방 - 리스크 요인
불가시적인 특징
신뢰성과 보안은 긴급 상황이 아니라면 알아채기 어렵다…
하지만 문제가 터지면 지불해야 하는 비용은 상당하다.
시스템이 발전할 수록 복잡도가 증가한다.
- 복잡도는 대부분 의도치 않게 축적된다.
신뢰성과 보안을 사전 예방 - 액션 플랜
사전 보안성 평가
- 리스크 기반 접근 법으로 사고시의 기회 비용을 예측하여, 모두의 동의하에 사전에 대응할 수 있는 공감대 형성
간결성
- 간결한 시스템은 “이해 가능성"을 높여 평균 복구 시간을 줄일 수 있다.
심층 방어
- 여러 겹의 방어로 민감한 데이터의 방어를 더 견고히할 수 있다. ex) 독립적 암호화 계층
개별적 장애 도메인
- 일부가 뚫렸어도 다른 곳은 뚫리지 않도록 해야한다. ex) 구글의 지역기반 자격증명
악의적인 내부자에 대한 방어
- 최소 권한 원칙, 멀티파티 승인
테스트
신뢰성과 보안에 영향을 미치는 예외 상황을 사전에 파악할 수 있는 가장 좋은 방법
서비스 레벨에서의 e2e 테스트 - 카나리 테스트
안정적인 무중단 배포 전략
- rolling 배포 전략 & blue/green 배포 전략
사후 대응
-> 완벽한 예방과 방어는 절대 불가능, 따라서 장애를 탐지하고 복구하기 위한 대책을 세워야 한다.
시스템 조사와 로깅
올바른 로깅은 장애 탐지와 대처를 위한 기본
통상 로그에는 인증 자격 증명이나 사용자 식별 정보 같은 민감한 정보를 담으면 안됨 (로그 자체가 공격자의 목표가 되기 때문)
위기 대응을 위한 사전 계획
사고의 조짐은 사전에 있다.
상황이 발생하기 전에 미리 계획을 세워두고 명령 체계를 명확히 하고 견고한 체크리스트와 지침서, 프로토콜을 갖추는 것이 기본
Subscribe to my newsletter
Read articles from KyungJun Woo directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
