이 제품은 선택한 Datadog 사이트에서 지원되지 않습니다. ().

App and API Protection은 정부 기관용 Datadog 사이트 US1-FED에서 미리 보기로 제공되고 있습니다.

전제 조건

시작하기

  1. Orchestrion 설치:

    $ go install github.com/DataDog/orchestrion@latest
    
  2. 프로젝트 디렉터리에서 Orchestrion을 Go 모듈로 등록합니다.

    $ orchestrion pin
    
  3. Datadog에는 일련의 플러그형 패키지가 있어서 일련의 라이브러리 및 프레임워크를 계측하기 위한 즉시 사용 가능한 지원을 제공합니다. 이러한 패키지 목록은 호환성 요구 사항에서 확인할 수 있습니다. 이러한 패키지를 애플리케이션에 가져온 다음 각 통합과 함께 목록으로 나열된 구성 지침을 따르세요.

  4. appsec 빌드를 사용하여 Orchestrion으로 프로그램을 다시 컴파일합니다.

    $ orchestrion go build -tags=appsec my-program
    

    Orchestrion 사용 방법에 대한 자세한 옵션은 Orchestrion 사용법을 참조하세요.

참고: Linux에서 CGO 없이 빌드하는 경우, CGO를 비활성화하여 Go 애플리케이션 빌드하기를 참조하세요.

  1. Go 서비스를 재배포하고 DD_APPSEC_ENABLED 환경 변수를 true로 설정하여 App and API Protection를 활성화합니다:
$ env DD_APPSEC_ENABLED=true ./my-program

Docker 명령줄에 다음 환경 변수 값을 추가합니다.

$ docker run -e DD_APPSEC_ENABLED=true [...]

적합한 Docker 이미지를 생성하는 방법에 관한 자세한 내용은 Go용 App and API Protection를 위한 Dockerfile 생성을 참조하세요.

애플리케이션 컨테이너의 Dockerfile에 다음 환경 변수 값을 추가합니다.

ENV DD_APPSEC_ENABLED=true

적합한 Docker 이미지를 생성하는 방법에 관한 자세한 내용은 Go용 App and API Protection를 위한 Dockerfile 생성을 참조하세요.

APM을 위해 애플리케이션의 배포 구성 파일을 업데이트하고 다음 환경 변수를 추가합니다.

spec:
  template:
    spec:
      containers:
        - name: <CONTAINER_NAME>
          image: <CONTAINER_IMAGE>/<TAG>
          env:
            - name: DD_APPSEC_ENABLED
              value: "true"

적합한 Docker 이미지를 생성하는 방법에 관한 자세한 내용은 Go용 App and API Protection를 위한 Dockerfile 생성을 참조하세요.

이 환경 섹션을 활용하여 ECS 작업 정의 JSON 파일을 업데이트합니다.

"environment": [
  ...,
  {
    "name": "DD_APPSEC_ENABLED",
    "value": "true"
  }
]

적합한 Docker 이미지를 생성하는 방법에 관한 자세한 내용은 Go용 App and API Protection를 위한 Dockerfile 생성을 참조하세요.

설정을 확인하세요

App and API Protection가 올바르게 작동하는지 확인하세요.

App and API Protection 위협 탐지가 실제로 작동하는 모습을 확인하려면 애플리케이션에 알려진 공격 패턴을 전송합니다. 예를 들어, 다음 Curl 스크립트가 포함된 파일을 실행하여 감지된 Security 스캐너 규칙을 트리거합니다.

for ((i=1;i<=250;i++));
do
  # Target existing service’s routes
  curl https://your-application-url/existing-route -A Arachni/v1.0;
  # Target non existing service’s routes
  curl https://your-application-url/non-existing-route -A Arachni/v1.0;
done

애플리케이션을 활성화하고 실행한 몇 분 후 위협 정보가 Datadog의 애플리케이션 트레이스 및 신호 탐색기에 표시됩니다.

CGO 없이 빌드하기

CGO 없이 Go 애플리케이션을 빌드하는 경우에도 다음 단계에 따라 App and API Protection을 활성화할 수 있습니다.

  1. 애플리케이션을 컴파일할 때 appsec 빌드 태그를 추가합니다.
    $ CGO_ENABLED=0 orchestrion go build -tags appsec my-program
    
CGO를 비활성화하면 일반적으로 정적으로 링크된 바이너리가 보장됩니다. 이 케이스에는 그렇지 않습니다.
  1. Datadog WAF에 필요한 라이브러리이므로 시스템에 libc.so.6, libpthread.so.0libdl.so.2를 설치합니다. 이 설치는 패키지 관리자를 사용하여 시스템에 glibc 패키지를 설치함으로써 수행할 수 있습니다. Go용 App and API Protection Dockerfile 생성을 참조하세요.

  2. 위에서 설명한 대로 DD_APPSEC_ENABLED=true 환경 변수를 설정하여 Go 서비스를 재배포합니다.

Bazel로 빌드하기

Bazel 및 rules_go를 사용하여 Go 애플리케이션을 빌드하는 경우 Orchestrion은 Bazel과 호환되지 않습니다. 대신 Datadog Go SDK를 사용하여 애플리케이션을 수동으로 계측할 수 있습니다.

App and API Protection은 Datadog의 WAF에 대한 C++ 바인딩을 지원하기 위해 purego에 의존하며, 이는 Gazelle이 생성한 repositories.bzl 내에서 특별한 주의가 필요합니다. go_repository 규칙에 따라, com_github_ebitengine_purego에 대해, build_directives 속성과 함께gazelle:build_tags cgo 지시문을 추가해야 합니다. 예를 들면 다음과 같습니다.

    go_repository(
        name = "com_github_ebitengine_purego",
        build_directives = [
            "gazelle:build_tags cgo",
        ]
        build_file_proto_mode = "disable",
        importpath = "github.com/ebitengine/purego",
        sum = "<your-checksum>",
        version = "v0.8.3",
    )

APM 추적 없이 App and API Protection 사용

APM 추적 기능 없이 App and API Protection을 사용하려면 추적을 비활성화한 상태로 배포할 수 있습니다.

  1. SDK를 구성할 때 DD_APM_TRACING_ENABLED=false 환경 변수와 함께 추가로 DD_APPSEC_ENABLED=true 환경 변수를 지정하세요. 이 구성은 Datadog으로 전송되는 APM 데이터 양을 App and API Protection 제품에 필요한 양 중 최소로 줄입니다.

자세한 내용은 독립형 App and API Protection을 참조하세요.

추가 자료