책 - "마이크로서비스 아키텍처 구축" - 9장 '보안'

“마이크로서비스 아키텍처 구축” 9장 - ‘보안’의 내용 요약

사용자 - 서비스간 인증

  • Principal (권한주체) : 인증되는 사람 또는 사물에 대한 추상적 표현
  • Authorization : Principal을 허용된 행위와 매핑하는 메커니즘
  • Single Identity : “우리는 각각의 시스템에 각기 다른 ID&PW로 로그인하기를 원치 않는다”
    • 한 번의 인증으로 모든 시스템을 이용하자
  • 신원 제공자 Identity Provider : 인증 담당
  • 서비스 제공자 Service Provider : 자원 접근 허용 여부
  • SSO Gateway
    • 탄생배경 : 각 서비스가 신원제공자를 경유하고 핸드셰이킹을 결정할 수 있지만 중복이 많을 거임
  • 세분화된 권한 부여 (게이트웨이)
    • 특정 자원 또는 엔드포인트에 대한 접근의 허용 여부는 마이크로서비스 자체에 맞겨야 함
      • ex. 콜센터 직원과 콜센터 리더는 둘 다 환불 서비스 접근 가능. 액션도 가능 but 한도 다름
    • 끔찍한 경우 : 너무 세분화
      • ex. 콜센터_50달러_환불가능_권한

서비스 - 서비스간 인증

  • 경계 안의 모든 것 허용하기 : 중간자 공격 유의
  • 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 데이터의 최소화