코딩공작소
MSA(9) - 마이크로서비스 보안 본문
보안이란 매우 중요한 작업이다
- 애플리케이션 계층 : 적잘하게 사용자를 통제하여 사용자 본인 여부와 수행하려는 작업의 수행 권한 확인
- 인프라스트럭처 : 취약점의 위험도를 최소화하도록 서비스를 항상 실행하고 패치하고 최신화
- 네트워크 계층 : 서비스가 명확히 정의된 포트를 통해 인가된 소수의 서버에만 접근 할 수 있도록 네트워크 접근 통제 구현
OAuth2
사용자가 요청을 수행하기 위해 여러 서비스를 호출할 때, 각 서비스에 사용자를 인증하는 것
그랜트라는 인증 체계를 통해 REST 기반의 서비스를 보호할 수 있다.
- 패스워드(password)
- 클라이언트 증명(client credential)
- 인가 코드(authorization code)
- 암시적(implicit)
키 클록
서비스와 애플리케이션을 위한 ID 및 액세스 관리용 오픈 소스 솔루션이다.
- 인증을 중앙 집중화하고 SSO 인증을 가능하게 한다.
- 개발자는 비즈니스 기능에 집중할 수 있게 해준다.
- 2단계 인증 가능
- 보호 자원 : 마이크로 서비스
- 자원 소유자 : 애플리케이션 이름과 시크릿 키 조합은 액세스 토큰을 인증할 때 전달되는 자격 증명의 정보 일부다.
- 애플리케이션 : 사용자를 대신하여 서비스를 호출하는 애플리케이션
- 인증 및 인가 서버 : 인증서버를 사용하면 자격 증명을 모든 서비스에 전달하지 않고도 자신을 인증할 수 있다.
마이크로서비스 보안에 대해
- 모든 서비스 통신에 HTTPS/SSL(Secure Sockets Layer)을 사용
- 모든 서비스 호출에는 API 게이트웨이를 사용
- 서비스에 대한 영역을 지정 (공개 API / 비공개 API )
- 불필요한 네트워크를 차단하여 마이크로서비스에 대한 공격 표면을 제한
마이크로서비스는 HTTPS/SSL로 제공되는 암호화된 채널로만 통신해야 한다.
서비스 게이트웨이를 사용하여 모든 서비스에 시행될 수 있는 정책 시행 지점을 정해라
보안은 접근 계층을 구축하고 최소 권한 개념을 적용하고 최소한의 네트워크 접근과 권한만 가져야 한다.
-> 공개 영역에는 클라이언트로 소비되는 모든 공개 API가 포함된다. 자체 서비스 게이트웨이 뒤에 있어야 하고 인증과 권한 부여를 수행하는 자체 인증 서비스를 가져야 한다. 보호되는 단일 경로를 거쳐야한다.
-> 비공개 영역은 핵심 애플리케이션의 기능 및 데이터를 보호하는 장벽 역할을 한다. 단일 포트로만 접근할 수 있어야 한다.
- OAuth2 웹 서비스 호출을 보호하기 위해 다양한 메커니즘을 제공하는 토큰 기반의 인가 프레임워크이며, 이 메커니즘을 그랜트라 한다.
- OpenID Connect(OIDC)는 OAuth2 프레임워크에 기반을 둔 상위 계층으로, 애플리케이션에 로그인한 사용자에 대한 인증 및 프로파일 정보를 제공
- 키클록은 마이크로서비스와 애플리케이션을 위한 오픈 소스 ID 및 액세스 관리 솔루션이며, 주된 목표는 코딩 없이 서비스와 애플리케이션을 쉽게 보호하는 것이다.
- 애플리케이션마다 키클록 애플리케이션의 고유 이름과 시크릿 키가 있다.
- 각 서비스는 역할에 따라 수행될 행위를 정의해야 한다.
- 스프링 클라우드 시큐리티는 JSON 웹 토큰 명세를 지원한다. JWT를 사용하면 사용자가 정의한 필드에 명세에 삽입할 수 있다.
- 마이크로서비스를 보호하려면 인증 및 권한 부여 이상이 필요하다
- 운영 환경에서는 HTTPS를 사용하여 서비스 간 모든 호출을 암호화해야 한다.
- 서비스 게이트웨이를 사용하여 서비스에 도달할 수 있는 접근 지점을 줄여야 한다.
- 서비스가 실행되는 운영 체제의 인바인드 및 아웃바운드 포트 수를 제한하여 서비스에 대한 공격 표면을 제한해야 한다.
'어플리케이션개발 > MSA' 카테고리의 다른 글
MSA(11) - 스프링 클라우드 슬루와 집킨을 이용한 분산 추적 (0) | 2024.07.28 |
---|---|
MSA(10) - 스트림을 사용한 이벤트 기반 아키텍처 (0) | 2024.07.25 |
MSA(8) - 게이트웨이를 이용한 서비스 라우팅 (0) | 2024.07.16 |
MSA(7) - Resilience4j를 사용한 회복성 패턴 (1) | 2024.07.14 |
MSA(6) - 서비스 디스커버리 (0) | 2024.07.08 |