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

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

Prerequisites

Enabling Application & API Protection

開始する

  1. Datadog .NET ライブラリ を、対象のオペレーティング システム アーキテクチャ向けに少なくともバージョン 2.2.0 (Software Composition Analysis の検出機能を利用する場合は少なくともバージョン 2.16.0) に更新してください。

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

  2. 環境変数を設定して Application & API Protection を有効化します。APM tracing を使わずセキュリティ機能のみを利用する場合は、DD_APPSEC_ENABLED=trueDD_APM_TRACING_ENABLED=false の両方を設定してください。たとえば Windows のセルフ ホスト環境では、アプリケーションの起動スクリプトの一部として、次の PowerShell スニペットを実行します:

    $target=[System.EnvironmentVariableTarget]::Process
    [System.Environment]::SetEnvironmentVariable("DD_APPSEC_ENABLED","true",$target)
    [System.Environment]::SetEnvironmentVariable("DD_APM_TRACING_ENABLED","false",$target)
    

    またはアプリケーションの実行場所に応じて、以下の方法のいずれかを選択します。

Windows コンソールで:

rem Set environment variables
SET CORECLR_ENABLE_PROFILING=1
SET CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}
SET DD_APPSEC_ENABLED=true
SET DD_APM_TRACING_ENABLED=false

rem Start application
dotnet.exe example.dll

管理者として以下の PowerShell コマンドを実行し、レジストリ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment に必要な環境変数を構成して、IIS を再起動します。

$target=[System.EnvironmentVariableTarget]::Machine
[System.Environment]::SetEnvironmentVariable("DD_APPSEC_ENABLED","true",$target)
[System.Environment]::SetEnvironmentVariable("DD_APM_TRACING_ENABLED","false",$target)
net stop was /y
net start w3svc

または、IIS サービスのみの場合、Powershell がある WAS と W3SVC で管理者権限で以下を実行します。


$appsecPart = "DD_APPSEC_ENABLED=true DD_APM_TRACING_ENABLED=false"
[string[]] $defaultvariable = @("CORECLR_ENABLE_PROFILING=1", "CORECLR_PROFILER={846F5F1C-F9AE-4B07-969E-05C26BC060D8}", $appsecPart)

function Add-AppSec {

    param (
        $path
    )
    $v = (Get-ItemProperty -Path $path).Environment
    If ($v -eq $null) {
        Set-ItemProperty -Path $path -Name "Environment" -Value $defaultvariable
    }
    ElseIf (-not ($v -match $appsecPart)) {
        $v += " " + $appsecPart;
        Set-ItemProperty -Path $path -Name "Environment" -Value $v
    }
}
Add-AppSec -path "HKLM:SYSTEM\CurrentControlSet\Services\WAS\"
Add-AppSec -path "HKLM:SYSTEM\CurrentControlSet\Services\W3SVC\"

net stop was /y
net start w3svc

または、レジストリキーの編集を避けるため、アプリケーションの設定を web.configファイルで編集します。

<configuration>
  <appSettings>
        <add key="DD_APPSEC_ENABLED" value="true"/>
        <add key="DD_APM_TRACING_ENABLED" value="false"/>
  </appSettings>
</configuration>

これは、IIS アプリケーションプールレベルで、applicationHost.config ファイル (通常、C:\Windows\System32\inetsrv\config\ にあります) で行うこともできます。

<system.applicationHost>

    <applicationPools>
        <add name="DefaultAppPool">
            <environmentVariables>
                <add name="DD_APPSEC_ENABLED" value="true" />
                <add name="DD_APM_TRACING_ENABLED" value="false" />
            </environmentVariables>
            (...)

アプリケーションの構成に以下を追加します。

DD_APPSEC_ENABLED=true
DD_APM_TRACING_ENABLED=false

Update your configuration container for APM by adding the following arguments in your docker run command:

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

Add the following environment variable values to your container Dockerfile:

ENV DD_APPSEC_ENABLED=true
ENV DD_APM_TRACING_ENABLED=false

APM 用のデプロイ設定ファイルを更新し、Application & API Protection の環境変数を追加します:

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"

Update your ECS task definition JSON file, by adding these in the environment section:

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

コンテナの Dockerfile に、次の行を追加します:

ENV DD_APPSEC_ENABLED=true
ENV DD_APM_TRACING_ENABLED=false
  1. アプリケーションを再起動する際は、いったん完全に停止してから起動し直してください。

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

  2. 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 send known attack patterns to it, threat information appears in the Application Signals Explorer and vulnerability information appears in the Vulnerabilities explorer.

その他の参考資料