마이크로서비스 보안을 위한 13가지 모범 사례

마이크로서비스 아키텍처는 애플리케이션의 다른 부분에 영향을 주지 않고 소프트웨어 구성 요소를 수정, 추가 또는 제거할 수 있는 유연성, 확장성 및 기능을 제공합니다.

더 짧은 소프트웨어 개발 주기, 더 작은 팀, 유연한 프로그래밍 언어 옵션 외에도 다른 구성 요소를 방해하지 않고 특정 기능이나 서비스를 확장하거나 문제를 해결할 수 있습니다.

일반적으로 마이크로서비스를 사용하면 대규모 일부일처 애플리케이션을 독립적으로 배포할 수 있는 개별 서비스로 나눌 수 있습니다. 그러나 이러한 소규모 독립 서비스는 구성 요소의 수를 증가시키므로 보안이 복잡하고 어렵습니다.

모놀리식 vs 마이크로서비스 아키텍처 이미지 빨간 모자

일반적으로 일반적인 마이크로서비스 배포에는 하드웨어, 서비스 또는 애플리케이션, 통신, 클라우드, 가상화 및 오케스트레이션 계층이 있습니다. 이들 각각에는 특정 보안 요구 사항, 제어 및 문제가 있습니다.

마이크로서비스와 관련된 보안 과제

마이크로서비스는 일반적으로 복잡한 액세스 규칙, 모니터링할 더 많은 트래픽, 더 큰 공격 표면이 있는 광범위하게 분산된 시스템입니다. 또한 대부분의 마이크로서비스 클라우드는 다양한 보안 구성 및 제어 기능이 있는 클라우드 환경에서 실행됩니다.

많은 수의 API, 포트 및 노출된 구성 요소로 인해 기존 방화벽은 적절한 보안을 제공하지 못할 수 있습니다. 이러한 문제로 인해 마이크로서비스 배포는 중간자 공격, 삽입 공격, 교차 사이트 스크립팅, DDoS 등과 같은 다양한 사이버 위협에 더욱 취약해집니다.

네트워크 보안은 마이크로서비스의 또 다른 과제입니다. 특히 ID 및 액세스 제어는 새로운 수준의 복잡성을 가정합니다. 다른 취약성에는 안전하지 않은 코드와 서비스 검색 시스템의 결함이 포함됩니다.

마이크로서비스 보안은 모놀리식 애플리케이션보다 어렵지만 좋은 전략을 수립하고 모범 사례를 따르면 마이크로서비스를 효과적으로 보호할 수 있습니다.

이상적으로 아키텍처에는 다양한 구성 요소를 모두 포괄하는 분산 접근 방식이 필요합니다.

해결해야 할 일반적인 영역은 다음과 같습니다.

  • 애플리케이션, 마이크로서비스 및 사용자 보호
  • 보안 ID 및 액세스 관리
  • 데이터 보호
  • 서비스 간 통신 보안 강화
  • 마이크로서비스 및 보안 시스템 모니터링

마이크로서비스 보안 모범 사례

최고의 전략 중 하나는 모범 사례, 도구 및 컨트롤을 조합하여 사용하여 전체 생태계를 보호하는 것입니다. 실제 접근 방식은 서비스 유형, 애플리케이션, 사용자, 환경 및 기타 요인에 따라 다를 수 있습니다.

마이크로서비스를 사용하기로 결정한 경우 서비스, 연결 및 데이터에 대한 모든 보안 요구를 충족하는지 확인해야 합니다.

이제 몇 가지 효과적인 마이크로서비스 보안 사례를 살펴보겠습니다.

  전화 번호로 누군가의 IP 주소를 찾는 방법

#1. 처음부터 보안 구축 👮

보안을 개발 주기의 일부로 만드십시오. 이상적으로는 처음부터 마이크로서비스 개발 및 배포에 보안을 통합하는 것이 좋습니다. 이러한 방식으로 보안 문제를 해결하는 것은 소프트웨어 개발이 거의 완료될 때 보안을 추가하기 위해 기다리는 것보다 쉽고 효과적이며 저렴한 접근 방식입니다.

#2. 심층 방어 메커니즘 사용

DiP(Defense in Depth)는 서비스와 데이터에 여러 보안 계층을 적용하는 기술입니다. 이 관행은 공격자가 여러 계층에 침투하는 것을 어렵게 만들어 서비스와 데이터에 대한 강력한 보안을 제공합니다.

방화벽과 같은 경계 보안 솔루션과 달리 심층 방어 개념은 다릅니다. 바이러스 백신, 방화벽, 패치 관리, 스팸 방지 소프트웨어 등과 같은 도구 조합에 의존하여 시스템 전체에 분산된 여러 보안 계층을 제공합니다.

심층 방어 다계층 보안 이미지: 임페르바

이 접근 방식을 사용하면 먼저 민감한 서비스를 식별한 다음 주변에 적절한 보안 계층을 적용해야 합니다.

#삼. 컨테이너 📦 수준에서 보안 배포

대부분의 경우 마이크로서비스는 컨테이너 기술에 의존합니다. 따라서 내부 및 외부 모두에서 컨테이너를 보호하는 것은 공격 표면과 위험을 줄이는 한 가지 방법입니다. 이상적으로는 최소 권한 보안 원칙을 목표로 하는 것이 좋은 방법이며 다음을 포함하되 이에 국한되지 않는 전략의 조합이 필요합니다.

  • 필요한 최소한의 권한으로 제한
  • sudo 또는 권한 있는 계정을 사용하여 서비스 및 기타 항목을 실행하지 마십시오.
  • 사용 가능한 리소스의 액세스 및 소비를 제한하거나 제어합니다. 예를 들어 컨테이너에서 운영 체제 리소스에 대한 액세스를 제한하면 데이터 도난이나 손상을 방지하는 데 도움이 됩니다.
  • 컨테이너 디스크에 비밀을 저장하지 마십시오.
  • 적절한 규칙을 사용하여 리소스에 대한 액세스를 격리하십시오.

컨테이너 이미지에 취약점이나 보안 문제가 없는지 확인하는 것도 중요합니다. 컨테이너의 정기적인 보안 및 취약성 검사는 위험을 식별하는 데 도움이 됩니다.

일반적인 이미지 스캐닝 도구에는 다음이 포함됩니다. 클레어, 앵커그리고 더.

#4. 다단계 인증 배포 🔒

다단계 인증을 활성화하면 프런트 엔드의 보안이 강화됩니다.

액세스하는 사용자는 휴대폰으로 전송된 코드 또는 지정된 이메일 주소와 같은 다른 확인 형식과 함께 사용자 이름과 암호 세부 정보를 제공해야 합니다. 이 기술은 두 번째 인증을 제공할 방법이 없기 때문에 도난당하거나 해킹된 자격 증명을 사용할 수 있는 공격자가 마이크로 서비스에 액세스하는 것을 더 어렵게 만듭니다.

#5. 사용자 ID 및 액세스 토큰 사용

마이크로서비스 배포에서는 많은 애플리케이션과 서비스에 보안 인증 및 액세스 제어가 필요합니다. OAuth 2.0 및 OpenID와 같은 인증 프레임워크를 사용하면 토큰을 안전하게 처리할 수 있으므로 마이크로서비스를 보호할 수 있습니다. 따라서 타사 응용 프로그램이 사용자의 다른 서비스나 데이터에 액세스할 수 있습니다.

일반적인 배포에서 기본 애플리케이션은 사용자에게 타사 서비스를 인증하라는 메시지를 표시합니다. 이를 수락하면 애플리케이션은 세션에 대한 액세스 토큰을 생성합니다.

특히 OAuth는 사용자 ID 및 액세스 제어를 위한 가장 효과적인 전략 중 하나입니다. 다른 여러 인증 프로토콜이 있고 직접 구축할 수도 있지만 다음을 사용하는 것이 가장 좋습니다. OAuth 보다 표준적이고 안정적이며 널리 수용되기 때문입니다.

  강화 학습이란 무엇입니까?

#6. API 게이트웨이 생성

일반적으로 마이크로서비스는 서로 다른 네트워크에 분산되어 있고 다양한 시스템과 클라이언트에서 액세스할 수 있는 여러 구성 요소로 구성됩니다. 마이크로서비스를 노출하면 취약성과 보안 위험이 증가합니다. 이를 보호하는 한 가지 방법은 외부 시스템 및 클라이언트의 모든 액세스를 중앙 집중화하는 데 도움이 되는 단일 보안 진입점을 만드는 것입니다.

이를 달성하려면 적절한 마이크로 서비스로 라우팅하기 전에 보안 문제에 대한 모든 수신 요청을 검사하는 API 게이트웨이를 배포하십시오. API 게이트웨이는 클라이언트 애플리케이션과 마이크로서비스 사이에 위치합니다. 그런 다음 인증, SSL 종료, 프로토콜 변환, 모니터링, 요청 라우팅, 캐싱 등과 같은 추가 요청 관리 기능을 제공하면서 마이크로 서비스 노출을 제한합니다.

이 접근 방식을 통해 API 게이트웨이는 모든 외부 서비스를 마이크로 서비스로 라우팅하는 동시에 심층 방어 보안 원칙도 지원합니다.

마이크로서비스 API 게이트웨이 이미지 라이브북

일반적인 API 게이트웨이에는 다음이 포함됩니다. NGINX, , 타이크, 대사, AWS API 게이트웨이그리고 더.

API 보안에 대해 자세히 알아보려면 API 엔드포인트를 보호하는 이유와 방법에 대한 가이드를 확인하세요.

#7. 배포 영역을 기반으로 하는 프로필 API

사용자가 필요한 API 및 서비스에만 액세스할 수 있도록 하여 역할 기반 제한을 구현합니다. 대부분의 악성 소프트웨어는 더 많은 사람에게 서비스를 노출하는 경우가 많기 때문에 인증된 사용자로만 액세스를 제한하면 위험이 줄어듭니다. 노출을 줄이는 한 가지 기술은 API에 액세스해야 하는 사용자를 기준으로 API에 레이블을 지정하는 것입니다. 일반적으로 API는 다음과 같을 수 있습니다.

  • 이더넷 API – 데이터 센터 외부의 외부 세계에 노출되는 서비스용.
  • Corporate Zone API – 내부 개인 트래픽용입니다.
  • DMZ API – 인터넷에서 발생하는 트래픽을 처리하기 위해
  • 하이브리드 영역 API – 데이터 센터 배포용

#8. 서비스 간 통신 보안

효과적인 관행에는 두 마이크로 서비스가 통신할 때 요청을 인증하고 권한을 부여하는 것이 포함됩니다.

일반적으로 서비스 간 통신을 보호하는 데 사용할 수 있는 세 가지 주요 기술이 있습니다. 이들은 네트워크 신뢰, JWT(JSON Web Token) 및 mTLS 또는 상호 TLS(Mutual Transport Layer Security)입니다.

JWT 이미지로 서비스 간 통신 보안 라이브북

세 가지 중에서 가장 인기 있는 것은 mTLS입니다. 이 접근 방식에서 각 마이크로 서비스는 퍼블릭/프라이빗 키 쌍을 가지고 있어야 합니다. 그런 다음 클라이언트 마이크로서비스는 키 쌍을 사용하여 mTLS를 통해 수신 마이크로서비스에 자신을 인증합니다.

인증하는 동안 각 마이크로 서비스는 인증서를 생성합니다. 그 후 각 마이크로 서비스는 다른 마이크로 서비스의 인증서를 사용하여 자신을 인증합니다.

TLS는 전송 중인 데이터에 대한 무결성과 기밀성을 제공하는 동시에 클라이언트가 마이크로서비스를 식별할 수 있도록 합니다. 클라이언트 마이크로서비스는 일반적으로 다른 마이크로서비스를 알고 있습니다. 그러나 TLS는 단방향이므로 수신 마이크로서비스는 클라이언트 마이크로서비스를 확인할 수 없으며 공격자는 이 결함을 악용할 수 있습니다. 반면에 mTLS는 각 마이크로서비스가 서로를 식별할 수 있는 수단을 제공합니다.

#9. 속도 제한 🚏 클라이언트 트래픽

외부 트래픽을 제한하면 서비스 거부(DoS) 공격과 같은 문제와 일부 클라이언트가 대부분의 애플리케이션 대역폭을 소비하는 인스턴스를 방지할 수 있습니다. 한 가지 접근 방식은 IP, 시간 등을 기반으로 클라이언트에서 보내거나 받는 트래픽의 비율을 모니터링하고 제어할 수 있는 다양한 규칙을 적용하는 것입니다.

  Linux에서 IP 주소를 찾는 방법

API에 대한 로그인 시도 실패 또는 기타 의심스러운 활동이 여러 번 감지되면 속도가 느려지도록 서비스를 구성하십시오.

느린 시스템은 공격자를 낙담시키고 아마도 서비스에 대한 액세스 시도를 포기할 것입니다. 코드 또는 기타 기술을 통해 API 게이트웨이를 사용하여 속도를 제한할 수 있습니다. 일반적으로 대부분의 SaaS 환경에는 공격뿐만 아니라 사용자의 남용을 최소화하기 위해 API 속도 제한이 있습니다.

#10. 오케스트레이션 관리자 사용

오케스트레이션 관리자를 사용하면 보안을 강화하는 것 외에도 구성, 조정 및 기타 마이크로 서비스 관리 작업을 자동화할 수 있습니다. 일반적으로 도구를 사용하면 여러 컨테이너를 관리하고, 메타데이터 액세스를 제한하고, 워크로드를 분리하고, 로그를 수집하는 등의 작업을 수행할 수 있습니다.

일부 오케스트레이션 도구에는 개발자가 SSL 인증서, 암호화 키, 암호 및 ID 토큰과 같은 중요한 정보를 저장하고 공유할 수 있는 추가 기능이 있습니다.

효과적인 마이크로서비스 오케스트레이션을 위해 일반적으로 사용되는 두 가지 방법은 다음과 같습니다.

  • 오케스트레이션을 마이크로서비스로 코딩
  • API 게이트웨이를 사용하여 오케스트레이션 계층 제공

API 게이트웨이를 통한 오케스트레이션은 서비스를 확장해야 하는 경우 문제로 인해 권장되지 않습니다.

마이크로서비스 오케스트레이션 계층 – 이미지 글로벌로직

일반적인 오케스트레이션 관리 도구에는 다음이 포함됩니다. 쿠버네티스, 이스티오, AKS(Azure Kubernetes 서비스)등.

자세한 내용은 DeOps용 컨테이너 오케스트레이션을 살펴보십시오.

#11. 모든 시스템 및 서비스 모니터링

마이크로서비스는 분산 시스템에 의존하므로 모든 개별 구성 요소에 대한 안정적이고 효과적인 모니터링 전략이 필요합니다.

지속적인 모니터링을 배포하면 적시에 보안 위험을 감지하고 해결할 수 있습니다. 이를 위해 다음을 포함하는 광범위한 마이크로서비스 모니터링 솔루션이 있습니다. 프로메테우스, 통계, 인플럭스DB, 로그스태시등.

마이크로서비스 아키텍처 내부 모니터링

적절한 도구를 사용하여 내부 시스템 및 서비스를 모니터링합니다. 몇 가지 모범 사례는 다음과 같습니다.

  • 애플리케이션 계층에서 로깅을 활성화합니다. 당신은 할 수 있습니다 스플렁크, 그래파나, ELK 스택애플리케이션, 컨테이너, 네트워크 및 인프라 수준에서 로그를 수집하는 기타 도구.
  • 사용량 메트릭 모니터링
  • CPU, 메모리, 응답 시간, 오류, 알림 등과 같은 메트릭의 추세를 사용하여 기존 또는 잠재적 공격을 나타내는 비정상적인 활동을 탐지합니다.
  • 들어오는 클라이언트 요청, 데이터베이스 레코드, 컨테이너 및 기타 항목과 같은 영역의 로그를 감사하여 불일치 또는 비정상적인 활동을 식별합니다.

#12. 보안 활동 자동화

업데이트 배포, 취약성 검색, 모니터링, 정책 시행 및 기타 활동과 같은 보안 프로세스를 자동화합니다. 또한 업데이트가 안전하고 새로운 취약점이 도입되지 않았는지 확인하십시오.

업데이트 후 보안 소프트웨어는 이상적으로 모든 컨테이너 및 마이크로 서비스에 대한 테스트를 수행하여 이전에 발생한 취약점이나 보안 문제가 있는지 확인해야 합니다.

#13. 🛡️ 데이터를 항상 보호

전송 중인 데이터와 저장된 데이터를 보호합니다. 이상적으로는 모든 통신에 HTTPS를 사용하여 전송 중인 데이터를 보호하고 저장된 모든 민감한 데이터에 대한 암호화를 적용합니다. 코드 외부에 있는 일반 텍스트 암호, 키, 자격 증명 및 민감한 데이터를 전송하고 저장하지 마십시오.

가장 좋은 전략은 표준 기술을 사용하여 모든 민감한 데이터를 가능한 한 빨리 암호화하는 것입니다. 또한 가능한 한 늦게 데이터를 해독하여 노출을 줄이십시오.

결론

마이크로서비스는 분산 구성 요소에 의존하여 더 많은 유연성 및 배포 옵션과 같은 이점을 제공합니다. 그러나 마이크로서비스를 사용할 때 조직은 내부 보안 정책과 전략을 클라우드 네이티브 및 분산 접근 방식으로 조정해야 합니다.

이상적으로는 공격 표면을 줄이고 마이크로서비스 환경, API, 애플리케이션 및 데이터를 보호하는 것을 목표로 합니다.