• Datadog에서 개발한 Go 애플리케이션을 위한 안전하고 신뢰할 수 있는 자동 계측 도구
  • 컴파일 타임에 계측을 삽입하여 런타임 오버헤드를 최소화
  • RASP 기능을 통해 애플리케이션을 보호
  • 컴파일 과정에서 소스 코드를 수정하여 Datadog APM 추적을 위한 계측을 자동으로 삽입
  • Datadog Application Security Management Exploit Prevention 기능을 통해 일반적인 취약점으로부터 애플리케이션을 보호

작동 방식

  • Go 툴체인과 연동하여 컴파일 과정 중에 소스 코드를 분석하고 수정합니다.
  • Abstract Syntax Tree(AST) 레벨에서 코드를 조작하여 Go 컴파일러가 모든 변경 사항을 검증하고 타입 검사를 수행하도록 합니다.
  • 애플리케이션의 모든 동작에 대한 무제한적인 접근을 허용하면서 컴파일된 바이너리를 직접 수정하여 발생할 수 있는 오류를 방지합니다.
  • Go 컴파일러의 최적화 과정을 거쳐 수정된 코드가 최적화되어 런타임 오버헤드를 줄입니다.
  • 수정된 소스 코드에 Go //line pragma 지시문을 삽입하여 수정으로 인해 라인 번호가 영향을 받지 않도록 하고 계측된 애플리케이션에서 생성된 스택 추적이 원본 소스 코드의 올바른 위치를 가리키도록 합니다.

컴파일 타임 계측을 사용하는 이유

  • 안전성, 신뢰성, 데이터 품질: 컴파일 타임 계측은 바이너리 패칭이나 eBPF보다 안전하고 신뢰할 수 있는 데이터를 생성합니다.
  • 자동화: 바이너리 패칭 및 eBPF는 높은 수준의 자동화를 제공하지만 Orchestrion은 빌드 프로세스 변경 및 애플리케이션 재배포가 필요합니다.
  • 성능 오버헤드: eBPF는 커널과 사용자 공간 간의 컨텍스트 전환으로 인해 성능 오버헤드가 발생할 수 있습니다. Orchestrion은 컴파일 타임에 계측을 삽입하여 런타임 오버헤드를 최소화합니다.
  • 지원 환경: eBPF는 Linux 환경으로 제한되지만 Orchestrion은 다양한 환경을 지원합니다.
  • 전반적인 기능: eBPF는 기능이 제한적이지만 Orchestrion은 코드 레벨에서 작동하여 더 많은 기능을 제공합니다.

보안을 위한 Orchestrion

  • 코드 레벨 작업을 통해 프로그램의 제어 흐름을 변경할 수 있는 계측을 삽입하여 RASP 기능을 구현합니다.
  • SQL 주입 또는 로컬 파일 포함과 같은 일반적인 취약점으로부터 애플리케이션을 자체적으로 보호할 수 있습니다.
  • 특정 API를 다른 API로 완전히 대체할 수 있어 개발자가 추적 컨텍스트 체이닝을 위해 모든 비즈니스 로직 계층에 컨텍스트 값을 전달하는 것에 대해 생각할 필요가 없습니다.