Module: Datadog::AppSec

Defined in:
lib/datadog/appsec.rb,
lib/datadog/appsec/ext.rb,
lib/datadog/appsec/event.rb,
lib/datadog/appsec/utils.rb,
lib/datadog/appsec/assets.rb,
lib/datadog/appsec/remote.rb,
lib/datadog/appsec/context.rb,
lib/datadog/appsec/metrics.rb,
lib/datadog/appsec/monitor.rb,
lib/datadog/appsec/response.rb,
lib/datadog/appsec/component.rb,
lib/datadog/appsec/anonymizer.rb,
lib/datadog/appsec/extensions.rb,
lib/datadog/appsec/utils/http.rb,
lib/datadog/appsec/sample_rate.rb,
lib/datadog/appsec/api_security.rb,
lib/datadog/appsec/rate_limiter.rb,
lib/datadog/appsec/trace_keeper.rb,
lib/datadog/appsec/configuration.rb,
lib/datadog/appsec/security_event.rb,
lib/datadog/appsec/actions_handler.rb,
lib/datadog/appsec/compressed_json.rb,
lib/datadog/appsec/instrumentation.rb,
lib/datadog/appsec/security_engine.rb,
lib/datadog/appsec/thread_safe_ref.rb,
lib/datadog/appsec/contrib/rack/ext.rb,
lib/datadog/appsec/metrics/exporter.rb,
lib/datadog/appsec/contrib/rails/ext.rb,
lib/datadog/appsec/metrics/collector.rb,
lib/datadog/appsec/metrics/telemetry.rb,
lib/datadog/appsec/contrib/devise/ext.rb,
lib/datadog/appsec/contrib/integration.rb,
lib/datadog/appsec/utils/hash_coercion.rb,
lib/datadog/appsec/api_security/sampler.rb,
lib/datadog/appsec/contrib/rack/patcher.rb,
lib/datadog/appsec/contrib/excon/patcher.rb,
lib/datadog/appsec/contrib/rails/patcher.rb,
lib/datadog/appsec/contrib/rails/request.rb,
lib/datadog/appsec/processor/rule_loader.rb,
lib/datadog/appsec/utils/http/media_type.rb,
lib/datadog/appsec/configuration/settings.rb,
lib/datadog/appsec/contrib/devise/patcher.rb,
lib/datadog/appsec/security_engine/engine.rb,
lib/datadog/appsec/security_engine/result.rb,
lib/datadog/appsec/security_engine/runner.rb,
lib/datadog/appsec/utils/http/media_range.rb,
lib/datadog/appsec/contrib/auto_instrument.rb,
lib/datadog/appsec/contrib/faraday/patcher.rb,
lib/datadog/appsec/contrib/graphql/patcher.rb,
lib/datadog/appsec/contrib/rails/framework.rb,
lib/datadog/appsec/contrib/sinatra/patcher.rb,
lib/datadog/appsec/instrumentation/gateway.rb,
lib/datadog/appsec/monitor/gateway/watcher.rb,
lib/datadog/appsec/contrib/rack/integration.rb,
lib/datadog/appsec/contrib/excon/integration.rb,
lib/datadog/appsec/contrib/rails/integration.rb,
lib/datadog/appsec/contrib/sinatra/framework.rb,
lib/datadog/appsec/contrib/devise/integration.rb,
lib/datadog/appsec/metrics/telemetry_exporter.rb,
lib/datadog/appsec/contrib/faraday/integration.rb,
lib/datadog/appsec/contrib/graphql/integration.rb,
lib/datadog/appsec/contrib/rest_client/patcher.rb,
lib/datadog/appsec/contrib/sinatra/integration.rb,
lib/datadog/appsec/api_security/route_extractor.rb,
lib/datadog/appsec/contrib/devise/configuration.rb,
lib/datadog/appsec/contrib/graphql/appsec_trace.rb,
lib/datadog/appsec/contrib/rack/gateway/request.rb,
lib/datadog/appsec/contrib/rack/gateway/watcher.rb,
lib/datadog/appsec/contrib/active_record/patcher.rb,
lib/datadog/appsec/contrib/devise/data_extractor.rb,
lib/datadog/appsec/contrib/rack/gateway/response.rb,
lib/datadog/appsec/contrib/rails/gateway/request.rb,
lib/datadog/appsec/contrib/rails/gateway/watcher.rb,
lib/datadog/appsec/contrib/graphql/gateway/watcher.rb,
lib/datadog/appsec/contrib/rack/request_middleware.rb,
lib/datadog/appsec/contrib/rest_client/integration.rb,
lib/datadog/appsec/contrib/sinatra/gateway/request.rb,
lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb,
lib/datadog/appsec/api_security/endpoint_collection.rb,
lib/datadog/appsec/contrib/faraday/connection_patch.rb,
lib/datadog/appsec/contrib/rails/request_middleware.rb,
lib/datadog/appsec/instrumentation/gateway/argument.rb,
lib/datadog/appsec/contrib/active_record/integration.rb,
lib/datadog/appsec/contrib/graphql/gateway/multiplex.rb,
lib/datadog/appsec/contrib/devise/tracking_middleware.rb,
lib/datadog/appsec/contrib/faraday/rack_builder_patch.rb,
lib/datadog/appsec/contrib/sinatra/patches/json_patch.rb,
lib/datadog/appsec/contrib/sinatra/request_middleware.rb,
lib/datadog/appsec/instrumentation/gateway/middleware.rb,
lib/datadog/appsec/contrib/rack/request_body_middleware.rb,
lib/datadog/appsec/contrib/sinatra/gateway/route_params.rb,
lib/datadog/appsec/contrib/active_record/instrumentation.rb,
lib/datadog/appsec/actions_handler/serializable_backtrace.rb,
lib/datadog/appsec/contrib/excon/ssrf_detection_middleware.rb,
lib/datadog/appsec/contrib/faraday/ssrf_detection_middleware.rb,
lib/datadog/appsec/contrib/rails/patches/process_action_patch.rb,
lib/datadog/appsec/contrib/rails/patches/render_to_body_patch.rb,
lib/datadog/appsec/contrib/devise/patches/signin_tracking_patch.rb,
lib/datadog/appsec/contrib/devise/patches/signup_tracking_patch.rb,
lib/datadog/appsec/api_security/endpoint_collection/rails_collector.rb,
lib/datadog/appsec/contrib/rest_client/request_ssrf_detection_patch.rb,
lib/datadog/appsec/contrib/devise/patches/skip_signin_tracking_patch.rb,
lib/datadog/appsec/api_security/endpoint_collection/grape_route_serializer.rb,
lib/datadog/appsec/api_security/endpoint_collection/rails_route_serializer.rb,
lib/datadog/appsec/api_security/endpoint_collection/sinatra_route_serializer.rb

Overview

Namespace for Datadog AppSec instrumentation

Defined Under Namespace

Modules: APISecurity, ActionsHandler, Anonymizer, Assets, CompressedJson, Configuration, Contrib, Event, Ext, Extensions, Instrumentation, Metrics, Monitor, Remote, SecurityEngine, TraceKeeper, Utils Classes: Component, Context, Processor, RateLimiter, Response, SampleRate, SecurityEvent, ThreadSafeRef

Class Method Summary collapse

Class Method Details

.active_contextObject



21
22
23
# File 'lib/datadog/appsec.rb', line 21

def active_context
  Datadog::AppSec::Context.active
end

.enabled?Boolean

Returns:

  • (Boolean)


13
14
15
# File 'lib/datadog/appsec.rb', line 13

def enabled?
  Datadog.configuration.appsec.enabled
end

.perform_api_security_check?Boolean

Returns:

  • (Boolean)


43
44
45
46
# File 'lib/datadog/appsec.rb', line 43

def perform_api_security_check?
  Datadog.configuration.appsec.api_security.enabled &&
    Datadog.configuration.appsec.api_security.sample_rate.sample?
end

.rasp_enabled?Boolean

Returns:

  • (Boolean)


17
18
19
# File 'lib/datadog/appsec.rb', line 17

def rasp_enabled?
  Datadog.configuration.appsec.rasp_enabled
end

.reconfigure!Object



39
40
41
# File 'lib/datadog/appsec.rb', line 39

def reconfigure!
  components.appsec&.reconfigure!
end

.security_engineObject



35
36
37
# File 'lib/datadog/appsec.rb', line 35

def security_engine
  components.appsec&.security_engine
end

.telemetryObject

NOTE: This is a temporary workaround for type checking.

We want to move from possible nil-component to the disabled-component
on an initialization error. Technically, telemetry will be never
used if AppSec was not able to initialize, so it's safe to assume
that telemetry will never be used and will be nil at the same time.


31
32
33
# File 'lib/datadog/appsec.rb', line 31

def telemetry
  components.appsec&.telemetry || components.telemetry
end