- 필수 기능
- 시작하기
- Glossary
- 표준 속성
- Guides
- Agent
- 통합
- 개방형텔레메트리
- 개발자
- Administrator's Guide
- API
- Datadog Mobile App
- CoScreen
- Cloudcraft
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- APM
- Continuous Profiler
- 스팬 시각화
- 데이터 스트림 모니터링
- 데이터 작업 모니터링
- 디지털 경험
- 소프트웨어 제공
- 보안
- AI Observability
- 로그 관리
- 관리
Datadog 애플리케이션 보안 관리(ASM)에서 예기치 않은 동작이 발생하는 경우, 하단에 언급된 것처럼 조사할 수 있는 일반적인 문제가 있습니다. 문제가 계속되면 Datadog 지원 팀에 문의하여 추가 지원을 받으세요.
ASM 트레이스는 전송 속도가 초당 100 트레이스로 제한됩니다. 한도 초과 후 전송된 트레이스는 보고되지 않습니다. 한도를 변경해야 하는 경우 Datadog 지원 팀에 문의하세요.
위협 정보가 ASM 트레이스 및 신호 탐색기에 표시되려면 일련의 단계를 성공적으로 실행해야 합니다. 본 문제를 조사할 때는 각 단계를 점검하는 것이 중요합니다. 특정 언어에 대한 추가 트러블슈팅 단계는 마지막의 언어 탭에서 확인할 수 있습니다.
ASM이 실행 중인 경우 메트릭 datadog.apm.appsec_host
점검을 사용합니다.
datadog.apm.appsec_host
을 검색합니다. 메트릭이 없으면 ASM을 실행 중인 서비스가 없는 것입니다. 메트릭이 있는 경우 서비스는 메트릭 태그 host
및 service
와 함께 보고됩니다.service
를 검색하여 어떤 서비스가 ASM을 실행 중인지 확인합니다.datadog.apm.appsec_host
가 표시되지 않는 경우 앱 내 지침을 확인하여 초기 설정의 모든 단계가 완료되었는지 확인합니다.
ASM 데이터는 애플리케이션 성능 모니터링(APM) 트레이스로 전송됩니다. 애플리케이션 성능 모니터링(APM) 트러블슈팅를 참조하여 애플리케이션 성능 모니터링 설치를 확인하고 연결 오류를 점검하세요.
ASM 설정을 테스트하려면 다음 Curl 스크립트가 포함된 파일을 실행하여 감지된 보안 스캐너 규칙을 트리거합니다.
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
애플리케이션을 활성화 및 실행하고 몇 분 후 위협 정보가 트레이스 및 신호 탐색기에 표시됩니다.
ASM은 특정 트레이서 통합에 의존합니다. 해당 통합이 비활성화되어 있으면 ASM이 작동하지 않습니다. 해당 통합이 비활성화되어 있는지 확인하려면 시작 로그에서 disabled_integrations
을 검색합니다.
필요한 통합은 언어에 따라 다릅니다.
루비(Ruby)의 경우 Rack 통합이 필요합니다. 루비(Ruby) 트레이서 버전 1.0.0
이상도 필요합니다. 0.x에서 1.x로 마이그레이션 지침을 참조하세요.
참고: Rack은 수동으로 추가하거나 Rails 또는 Sinatra 통합으로 자동으로 추가할 수 있습니다. 수동으로 추가하는 경우, 트레이서 미들웨어는 Rack 스택에서 보안 미들웨어보다 먼저 표시되어야 합니다.
프로세스의 해당 단계 문제를 해결하려면 다음 작업을 수행합니다.
http://<agent-machine-name>:<agent-port>/info
에서 실행 중인 에이전트의 세부 정보를 확인합니다(보통 http://localhost:8126/info
).DD_AGENT_HOST
를 확인하고, 옵션으로 DD_TRACE_AGENT_PORT
가 설정되거나 DD_TRACE_AGENT_URL
가 애플리케이션 추적 라이브러리용으로 설정되었는지 확인합니다.ASM 데이터는 스팬(span)을 통해 전송됩니다. 스팬(span)이 Datadog으로 성공적으로 전송되었는지 확인하려면 트레이서 로그에 다음과 유사한 로그가 포함되어 있는지 확인합니다.
2021-11-29 21:19:58 CET | TRACE | INFO | (pkg/trace/info/stats.go:111 in LogStats) | [lang:.NET lang_version:5.0.10 interpreter:.NET tracer_version:1.30.1.0 endpoint_version:v0.4] -> traces received: 2, traces filtered: 0, traces amount: 1230 bytes, events extracted: 0, events sampled: 0
스팬(span)이 전송되지 않는 경우 트레이서 로그에는 다음과 유사한 로그가 포함됩니다.
2021-11-29 21:18:48 CET | TRACE | INFO | (pkg/trace/info/stats.go:104 in LogStats) | No data received
다음은 특정 언어별 추가 트러블슈팅 단계입니다.
루비(Ruby)의 경우 몇 분이 지난 후에도 트레이스 및 신호 탐색기에 ASM 위협 정보가 표시되지 않으면 디버그 로그 트레이서 진단을 사용 설정합니다. 예:
Datadog.configure do |c|
c.diagnostics.debug = true # increase general log level to debug
c.appsec.waf_debug = true # also enable WAF-specific log verbosity to highest level
end
디버그 로그는 상세하지만 유용합니다. Datadog 지원으로 티켓을 여는 경우 요청과 함께 해당 로그를 전달해 주세요.
다음과 같이 로그가 표시되면 ASM이 올바르게 활성화된 것입니다.
D, [2021-12-14T11:03:32.167125 #73127] DEBUG -- ddtrace: [ddtrace] (libddwaf/lib/datadog/appsec/waf.rb:296:in `block in logger=') {:level=>:ddwaf_log_info, :func=> "ddwaf_set_log_cb", :file=>"PowerWAFInterface.cpp", :message=>"Sending log messages to binding, min level trace"}
D, [2021-12-14T11:03:32.200491 #73127] DEBUG -- ddtrace: [ddtrace] (libddwaf/lib/datadog/appsec/waf.rb:296:in `block in logger=') {:level=>:ddwaf_log_debug, :func= >"parse", :file=>"parser_v2.cpp", :message=>"Loaded 124 rules out of 124 available in the ruleset"}
로그가 표시되지 않는 경우 다음을 점검하세요.
각 HTTP 요청에 대해 ASM이 호출되는지 확인하려면 테스트 공격을 트리거하고 다음 로그를 찾아봅니다.
D, [2022-01-19T21:25:50.579745 #341792] DEBUG -- ddtrace: [ddtrace] (/home/lloeki/src/github.com/DataDog/dd-trace-rb/lib/datadog/appsec/reactive/operation.rb:14:in `initialize') operation: rack.request initialize
D, [2022-01-19T21:25:50.580300 #341792] DEBUG -- ddtrace: [ddtrace] (/home/lloeki/src/github.com/DataDog/dd-trace-rb/lib/datadog/appsec/contrib/rack/gateway/watcher.rb:25:in `block (2 levels) in watch') root span: 964736568335365930
D, [2022-01-19T21:25:50.580371 #341792] DEBUG -- ddtrace: [ddtrace] (/home/lloeki/src/github.com/DataDog/dd-trace-rb/lib/datadog/appsec/contrib/rack/gateway/watcher.rb:26:in `block (2 levels) in watch') active span: 964736568335365930
D, [2022-01-19T21:25:50.581061 #341792] DEBUG -- ddtrace: [ddtrace] (/home/lloeki/src/github.com/DataDog/dd-trace-rb/lib/datadog/appsec/contrib/rack/reactive/request.rb:34:in `block in subscribe') reacted to ["request.headers", "request.uri.raw", "request.query", "request.cookies", "request.body.raw"]: [{"version"=>"HTTP/1.1", "host"=>"127.0.0.1:9292", "accept"=>"*/*", "user-agent"=>"Nessus SOAP"}, "http://127.0.0.1:9292/", [], {}, ""]
로그가 표시되지 않는 경우 다음 작업을 시도해 보세요.
Rack 통합을 수동으로 설정한 경우, 알려진 문제로 인해 ASM이 작동하지 않는 경우가 종종 있습니다. 예시:
Datadog.configure do |c|
c.tracing.instrument :rails
...
c.tracing.instrument :rack, web_service_name: "something", request_queuing: true
c.tracing.instrument :rack
이 있다면 이를 삭제하여 점검을 통과하는지 확인합니다.
ASM이 보안 위협을 탐지하는지 확인하려면 테스트 공격을 트리거하고 다음 로그를 찾아봅니다.
D, [2021-12-14T22:39:53.268820 #106051] DEBUG -- ddtrace: [ddtrace] (ddtrace/lib/datadog/appsec/contrib/rack/reactive/request.rb:63:in `block in subscribe') WAF: #<struct Datadog::AppSec::WAF::Result action=:monitor, data=[{"rule"=>{"id"=>"ua0-600-10x", "name"=>"Nessus", "tags"=>{"type"=>"security_scanner", "category"=>"attack_attempt"}}, "rule_matches"=>[{"operator"=>"match_regex", "operator_value"=>"(?i)^Nessus(/|([ :]+SOAP))", "parameters"=>[{"address"=>"server.request.headers.no_cookies", "key_path"=>["user-agent"], "value"=>"Nessus SOAP", "highlight"=>["Nessus SOAP"]}]}]}], perf_data=nil, perf_total_runtime=20519>
로그가 표시되지 않는다면 다른 업스트림 보안 시스템이 요청을 필터링하지 않거나, 테스트 헤더 값을 기반으로 요청을 변경하고 있는지 확인합니다.
ASM 데이터는 애플리케이션 성능 모니터링(APM) 트레이스와 같이 전송됩니다. ASM이 보안 위협을 탐지하고 보안 데이터를 트레이스에 삽입하는지 확인하려면 테스트 공격을 트리거하고 다음 로그를 찾아봅니다.
Tags: [
runtime-id => 0c3dfc67-9cf3-457c-a980-0229b203d048,
_dd.runtime_family => ruby,
appsec.event => true,
_dd.appsec.json => {"triggers":[{"rule":{"id":"ua0-600-10x","name":"Nessus","tags":{"type":"security_scanner","category":"attack_attempt"}},"rule_matches":[{"operator":"match_regex","operator_value":"(?i)^Nessus(/|([ :]+SOAP))","parameters":[{"address":"server.request.headers.no_cookies","key_path":["user-agent"],"value":"Nessus SOAP","highlight":["Nessus SOAP"]}]}]}]},
http.request.headers.host => 127.0.0.1:9292,
http.request.headers.accept => */*,
http.request.headers.user-agent => Nessus SOAP,
http.response.headers.content-type => text/plain,
http.host => 127.0.0.1,
http.useragent => Nessus SOAP,
network.client.ip => 127.0.0.1,
_dd.origin => appsec,
http.method => GET,
http.url => /,
http.base_url => http://127.0.0.1:9292,
http.status_code => 200,
http.response.headers.content_type => text/plain]
Metrics: [
_dd.agent_psr => 1.0,
system.pid => 155644.0,
_dd.appsec.enabled => 1.0,
_dd.measured => 1.0,
_sampling_priority_v1 => 2.0]]
에이전트가 트레이스를 전달할 때까지 잠시 기다린 다음, 트레이스가 애플리케이션 성능 모니터링(APM) 대시보드에 표시되는지 확인합니다. 트레이스의 보안 정보는 ASM 트레이스 및 신호 탐색기에서 보안 트레이스로 표시되기 전에 Datadog에서 처리하는 데 시간이 추가로 걸릴 수도 있습니다.
취약점 정보가 소프트웨어 카탈로그 보안 보기 또는 취약점 탐색기에 표시되려면 일련의 단계가 성공적으로 실행되어야 합니다. 이 문제를 조사할 때는 각 단계를 점검하는 것이 중요합니다.
ASM이 실행 중인 경우 메트릭 datadog.apm.appsec_host
점검을 사용합니다.
datadog.apm.appsec_host
을 검색합니다. 메트릭이 없으면 ASM을 실행 중인 서비스가 없는 것입니다. 메트릭이 있는 경우 서비스는 메트릭 태그 host
및 service
와 함께 보고됩니다.service
를 검색하여 어떤 서비스가 ASM을 실행 중인지 확인합니다.datadog.apm.appsec_host
가 표시되지 않는 경우 앱 내 지침을 확인하여 초기 설정의 모든 단계가 완료되었는지 확인합니다.
ASM 데이터는 애플리케이션 성능 모니터링(APM) 트레이스로 전송됩니다. 애플리케이션 성능 모니터링(APM) 트러블슈팅를 참조하여 애플리케이션 성능 모니터링 설치를 확인하고 연결 오류를 점검하세요.
올바른 버전의 트레이서를 사용하고 있는지 확인하려면 애플리케이션 보안 프로덕트 설정 설명서를 참조하세요. 라이브러리 정보가 포함된 텔레메트리 데이터 전송을 시작하려면 해당 최소 버전이 필요합니다.
DD_INSTRUMENTATION_TELEMETRY_ENABLED
환경 변수(Node.js의 경우DD_TRACE_TELEMETRY_ENABLED
)가 true
로 설정되어 있거나 고객님이 사용하는 언어에 해당하는 시스템 속성이 활성화되어 있는지 확인합니다. 예를 들어 자바(Java)의 경우 -Ddd.instrumentation.telemetry.enabled=true
입니다.
위협 관리를 비활성화하려면 애플리케이션 설정에서 DD_APPSEC_ENABLED=true
환경 변수를 삭제하고 서비스를 다시 시작합니다.
서비스에 DD_APPSEC_ENABLED=true
환경 변수가 설정되어 있지 않은 경우 다음 작업 중 하나를 수행합니다.
DD_APPSEC_ENABLED=false
로 명시적으로 설정하고 서비스를 다시 시작합니다.코드 보안을 비활성화하려면 애플리케이션 설정에서 DD_IAST_ENABLED=true
환경 변수를 삭제하거나 false
를 DD_IAST_ENABLED=false
로 설정하고 서비스를 다시 시작합니다.
ASM에 계속 문제가 있는 경우 다음 정보와 함께 Datadog 지원 팀으로 문의하세요.
추가 유용한 문서, 링크 및 기사: