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

Docker、Kubernetes、Amazon ECS、AWS Fargate 上で実行されている Ruby アプリのアプリケーション セキュリティを監視できます。

Prerequisites

Application & API Protection の有効化

はじめに

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

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

    Application & API Protection 機能でサービスの言語とフレームワークのバージョンがサポートされているか確認するには、互換性 を参照してください。

    dd-trace 1.x から v2 へのアップグレードの詳細は、Ruby トレーサーのアップグレード ガイド を参照してください。

  2. APM トレーサーを有効化して Application & API Protection を有効にします。以下のオプションは、最も一般的なケースをカバーするクイック セットアップです。詳細は Ruby トレーサーのドキュメント を参照してください。

    Application & API Protection は、コード内で有効化できます:

    アプリケーション コードに initializer を追加して APM トレーサーを有効化します:

    # config/initializers/datadog.rb
    
    require 'datadog/appsec'
    
    Datadog.configure do |c|
      # APM トレーサーを有効化しつつ、トレース処理は無効化する (セキュリティ用途のみ)
      c.tracing.instrument :rails
      c.tracing.enabled = false
    
      # Application & API Protection を有効化する
      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 トレーサーは自動インスツルメンテーションによって有効化されます
      c.tracing.enabled = false
    
      # Application & API Protection を有効化する
      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
      c.tracing.enabled = false
    
      # Sinatra 向けに Application & API Protection を有効化する
      c.appsec.enabled = true
      c.appsec.instrument :sinatra
    end
    

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

    require 'sinatra'
    require 'datadog/auto_instrument'
    
    Datadog.configure do |c|
      # APM トレーサーは自動インスツルメンテーションによって有効化されます
      c.tracing.enabled = false
    
      # Sinatra 向けに Application & API Protection を有効化する
      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
      c.tracing.enabled = false
    
      # Rack 向けに Application & API Protection を有効化する
      c.appsec.enabled = true
      c.appsec.instrument :rack
    end
    
    use Datadog::Tracing::Contrib::Rack::TraceMiddleware
    use Datadog::AppSec::Contrib::Rack::RequestMiddleware
    

    または、アプリケーションの実行環境に応じて次のいずれかの方法を使用します:

    APM 用の構成として、docker run コマンドに以下の引数を追加します:

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

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

    ENV DD_APPSEC_ENABLED=true
    ENV DD_APM_TRACING_ENABLED=false
    

    APM 用に、構成 YAML ファイルでコンテナの設定を更新し、環境変数を追加します:

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

    ECS のタスク定義 JSON ファイルの environment セクションに次を追加します:

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

    コード内で Application & API Protection を初期化するか、サービス起動時に環境変数を設定します:

    env DD_APPSEC_ENABLED=true DD_APM_TRACING_ENABLED=false 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.

参考資料