책 - "마이크로서비스 아키텍처 구축" - 9장 '보안'
“마이크로서비스 아키텍처 구축” 9장 - ‘보안’의 내용 요약
사용자 - 서비스간 인증
- Principal (권한주체) : 인증되는 사람 또는 사물에 대한 추상적 표현
- Authorization : Principal을 허용된 행위와 매핑하는 메커니즘
- Single Identity : “우리는 각각의 시스템에 각기 다른 ID&PW로 로그인하기를 원치 않는다”
- 한 번의 인증으로 모든 시스템을 이용하자
- 신원 제공자 Identity Provider : 인증 담당
- 서비스 제공자 Service Provider : 자원 접근 허용 여부
- SSO Gateway
- 탄생배경 : 각 서비스가 신원제공자를 경유하고 핸드셰이킹을 결정할 수 있지만 중복이 많을 거임
- 세분화된 권한 부여 (게이트웨이)
- 특정 자원 또는 엔드포인트에 대한 접근의 허용 여부는 마이크로서비스 자체에 맞겨야 함
- ex. 콜센터 직원과 콜센터 리더는 둘 다 환불 서비스 접근 가능. 액션도 가능 but 한도 다름
- 끔찍한 경우 : 너무 세분화
- ex.
콜센터_50달러_환불가능_권한
- ex.
- 특정 자원 또는 엔드포인트에 대한 접근의 허용 여부는 마이크로서비스 자체에 맞겨야 함
서비스 - 서비스간 인증
- 경계 안의 모든 것 허용하기 : 중간자 공격 유의
- HTTP(S) 기본 인증 HTTP Basic Authentication
- SAML or OpenID Connect
- 서비스 계정 필요
- 신원제공자에게 인증받고 진행
- ID&PW를 갖고 있어야하나..?
- 클라이언트 인증서
- HTTP 기반의 HMAC
- API 키
- 대리인 문제 신경써라! (confused deputy problem)
- 일부 인증 체계는 원본 권한 주체의 자격증명을 하부 시스템으로 전달하지만 너무 어려움. (중첩)
보관중인 데이터 보호
- 제발 잘 알려진걸 사용해라
- 키 저장소 : 중요하다 / 마찬가지로 제발 독자적 구현 하지마라
- 암호화 대상 잘 정해라
심층 방어
- 방화벽
- 로깅 : 로그에 저장할 정보에 대해 주의하라
- IDS & IPS
- 망분리 (네트워크 분리)
- 운영체제
- 계정이 누출되더라도 피해를 최소화할 수 있도록 가능한 한 적은 권한을 가진 OS사용자로 동작하는 서비스로 시작하라
- 정기적 패치
시범예제
- 개별 서비스(&데이터)를 분석해서 특징에 맞게 프로토콜, 암호화여부 등 등을 결정함
절약하라
- 개인정보 등 굳이 저장 안해도 되는 건 저장하지 말자
- “훔쳐갈 것도 없고” “달라고 할 것도 없도록”
- 데이터의 최소화 (Datensparsamkeit)
인적요소
- 조직 내의 인적 요소를 말하는 것!
- 인적 요소를 다루기위한 프로세스와 정책
- ex. 퇴사 시 어떻게 폐기할 것인가
- ex. 자신을 사회공학으로 부터 어떻게 보호할 것인가
- 악의가 있는 사람의 입장에서 생각해보기
마치며
- 자체 암호화를 작성하지마라
- 자체 보안 프로토콜을 고안하지마라
- 보통 “바퀴의 재발명”이 시간낭비라고 하지만 보안에 있어서는 “위험”이다
- OWASP top 10
- 보안을 잘 다룬다는 것 : 사람을 잘 이해ㅏ고, 사람이 시스템과 일하는 방식을 잘 이해하는 것
→ 인간적 요소 얘기를 하면서 자연스럽게 콘웨이로 넘어간다.
찾아봐야겠다 싶은 단어들
- source of truth
- defense in depth
- HTTPS termination
- LDAP or Active Directory
- middle man attack
- HTTP 기반의 HMAC
- data in transit vs data in rest
- salted password hashing
- SQL Server가 제공하는 Transparent Data Encryption
- IDS Instrusion detection system 침입 탐지 시스템
- Datensparsamkeit 데이터의 최소화