This product is not supported for your selected Datadog site. ().

You can monitor application security for Ruby apps running in Docker, Kubernetes, Amazon ECS, and AWS Fargate.

Prerequisites

1-Click Enablement
If your service is running with an Agent with Remote Configuration enabled and a tracing library version that supports it, hover over the Not Enabled indicator in the AAP Status column and click Enable AAP. There's no need to re-launch the service with the DD_APPSEC_ENABLED=true or --enable-appsec flags.

Enabling threat detection

詳細はこちら

  1. Gemfile を更新して Datadog ライブラリを含めます:

    gem 'datadog', '~> 2.0' # Use 'ddtrace' if you're using v1.x
    

    サービスで使用している言語とフレームワークのバージョンが AAP の機能に対応しているか確認するには、互換性 を参照してください。

    For more information about upgrading to v2 from a dd-trace 1.x version, see the Ruby tracer upgrade guide.

  2. AAP を有効化するには、APM トレーサーを有効にします。以下のオプションは、よくあるケースを想定したクイック セットアップです。詳細は Ruby トレーサー ドキュメント を参照してください。

    AAP は次のようにコードで有効化できます:

    アプリケーションコードにイニシャライザーを追加して、APM トレーサーを有効にします。

    # config/initializers/datadog.rb
    
    require 'datadog/appsec'
    
    Datadog.configure do |c|
      # APM トレーサーを有効化
      c.tracing.instrument :rails
    
      # AAP を有効化
      c.appsec.enabled = true
      c.appsec.instrument :rails
    end
    

    または、自動インスツルメントするために Gemfile を更新して、自動インスツルメンテーションを通じて APM トレーサーを有効にします。

    gem 'datadog', '~> 2.0', require: 'datadog/auto_instrument'
    

    また、appsec を有効にします。

    # config/initializers/datadog.rb
    
    require 'datadog/appsec'
    
    Datadog.configure do |c|
      # APM トレーサーは自動インスツルメンテーションで有効化されています
    
      # AAP を有効化
      c.appsec.enabled = true
      c.appsec.instrument :rails
    end
    

    アプリケーションのスタートアップに以下を追加して、APM トレーサーを有効にします。

    require 'sinatra'
    require 'datadog'
    require 'datadog/appsec'
    
    Datadog.configure do |c|
      # APM トレーサーを有効化
      c.tracing.instrument :sinatra
    
      # Sinatra 向けに AAP を有効化
      c.appsec.enabled = true
      c.appsec.instrument :sinatra
    end
    

    または自動インスツルメンテーションで APM トレーサーを有効にします。

    require 'sinatra'
    require 'datadog/auto_instrument'
    
    Datadog.configure do |c|
      # APM トレーサーは自動インスツルメンテーションで有効化されています
    
      # Sinatra 向けに AAP を有効化
      c.appsec.enabled = true
      c.appsec.instrument :sinatra
    end
    

    config.ru ファイルに以下を追加して、APM トレーサーを有効にします。

    require 'datadog'
    require 'datadog/appsec'
    
    Datadog.configure do |c|
      # APM トレーサーを有効化
      c.tracing.instrument :rack
    
      # Rack 向けに AAP を有効化
      c.appsec.enabled = true
      c.appsec.instrument :rack
    end
    
    use Datadog::Tracing::Contrib::Rack::TraceMiddleware
    use Datadog::AppSec::Contrib::Rack::RequestMiddleware
    

    Or one of the following methods, depending on where your application runs:

    APM 用の構成コンテナを更新するには、docker run コマンドに以下の引数を追加します。

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

    コンテナの Dockerfile に以下の環境変数の値を追加します。

    ENV DD_APPSEC_ENABLED=true
    

    APM 用の構成 yaml ファイルコンテナを更新し、AppSec の環境変数を追加します。

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

    以下を環境セクションに追加して、ECS タスク定義 JSON ファイルを更新します。

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

    AAP の初期化はコードで行うか、サービス起動時に DD_APPSEC_ENABLED 環境変数を true に設定してください。

    env DD_APPSEC_ENABLED=true rails server
    

    The library collects security data from your application and sends it to the Agent, which sends it to Datadog, where out-of-the-box detection rules flag attacker techniques and potential misconfigurations so you can take steps to remediate.

  3. To see App and API Protection threat detection in action, send known attack patterns to your application. For example, trigger the Security Scanner Detected rule by running a file that contains the following curl script:

    for ((i=1;i<=250;i++)); 
    do
    # Target existing service’s routes
    curl https://your-application-url/existing-route -A dd-test-scanner-log;
    # Target non existing service’s routes
    curl https://your-application-url/non-existing-route -A dd-test-scanner-log;
    done

    Note: The dd-test-scanner-log value is supported in the most recent releases.

    A few minutes after you enable your application and exercise it, threat information appears in the Application Trace and Signals Explorer in Datadog.

その他の参考資料