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

以下の手順に従って、Code Security の Infrastructure as Code (IaC) Security を有効にします。IaC Security は、GitHub、GitLab、または Azure DevOps リポジトリに保存されている複数の IaC 構成をサポートしています。

GitHub 統合をインストールする

GitHub リポジトリを接続して PR コメントを有効にするには、プルリクエストコメントのセットアップ手順を参照してください。

リポジトリで IaC Security を有効にする

GitHub 統合をセットアップした後、リポジトリで IaC Security を有効にします。

  1. Code Security 設定ページで、Activate scanning for your repositories セクションを展開します。
  2. Select your source code management provider で、GitHub を選択します。
  3. Select where your scans should run で、Datadog を選択します。
  4. Connect your GitHub repositories で、次のいずれかを行います。
    • 新しい GitHub アカウントを接続するには、Add GitHub Account をクリックします。
    • 既存のアカウントで IaC Security を有効にするには、Select repositories をクリックします。Code Security がすでに有効になっている場合は、Edit をクリックします。
  5. IaC Security を有効にするには、次のいずれかを行います。
    • すべてのリポジトリで有効にするには、Enable Infrastructure as Code Scanning (IaC) を ON の位置に切り替えます。
    • 単一のリポジトリで有効にするには、そのリポジトリの IaC スイッチを ON に切り替えます。

GitLab 統合をインストールする

GitLab リポジトリを接続して PR コメントを有効にするには、GitLab ソースコードのセットアップ手順を参照してください。

リポジトリで IaC Security を有効にする

GitLab 統合をセットアップした後、リポジトリで IaC Security を有効にします。

  1. Code Security 設定ページで、Activate scanning for your repositories セクションを展開します。
  2. Select your source code management provider で、GitLab を選択します。
  3. Select where your scans should run で、Datadog を選択します。
  4. Connect your GitLab repositories で、次のいずれかを行います。
    • 新しい GitLab インスタンスを接続するには、Connect GitLab Instance をクリックします。
    • 既存のアカウントで IaC Security を有効にするには、Select repositories をクリックします。Code Security がすでに有効になっている場合は、Edit をクリックします。
  5. IaC Security を有効にするには、次のいずれかを行います。
    • すべてのリポジトリで有効にするには、Enable Infrastructure as Code Scanning (IaC) を ON の位置に切り替えます。
    • 単一のリポジトリで有効にするには、そのリポジトリの IaC スイッチを ON に切り替えます。

Azure DevOps 統合をインストールする

Azure DevOps リポジトリを接続して PR コメントを有効にするには、Azure DevOps ソースコードのセットアップ手順を参照してください。

リポジトリで IaC Security を有効にする

Azure DevOps 統合をセットアップした後、リポジトリで IaC Security を有効にします。

  1. Code Security 設定ページで、Activate scanning for your repositories セクションを展開します。
  2. Select your source code management provider で、Azure DevOps を選択します。
  3. Select where your scans should run で、Datadog を選択します。
  4. Connect your Azure DevOps repositories で、次のいずれかを行います。
    • 新しい Azure DevOps 組織を接続するには、Connect Microsoft Entra App をクリックします。
    • 既存のアカウントで IaC Security を有効にするには、Select repositories をクリックします。Code Security がすでに有効になっている場合は、Edit をクリックします。
  5. IaC Security を有効にするには、次のいずれかを行います。
    • すべてのリポジトリで有効にするには、Enable Infrastructure as Code Scanning (IaC) を ON の位置に切り替えます。
    • 単一のリポジトリで有効にするには、そのリポジトリの IaC スイッチを ON に切り替えます。

汎用 CI プロバイダーで IaC をセットアップする

概要

GitHub Actions、GitLab CI/CD、または Azure DevOps を使用していない場合は、CI パイプラインで直接 Datadog IaC Scanner を実行できます。datadog-ci CLI を使用して、IaC スキャン結果を Datadog にアップロードします。

GitHub 以外のリポジトリで IaC Security を実行している場合は、デフォルトブランチで最初のスキャンを実行してください。デフォルトブランチが mastermaindefaultstablesourceprod、または develop 以外の名前を使用している場合は、リポジトリの最初のスキャンをアップロードしてください。その後、Repository Settings でデフォルトブランチを手動で上書きし、デフォルトブランチ以外からの将来のスキャンがアップロードされて正しく処理されるようにします。

前提条件

  • Node.js 20 以降および npm
  • curl
  • tar
  • /usr/local/bin にスキャナーをインストールする権限

次の環境変数を設定します。

名前説明必須デフォルト
DD_API_KEYDatadog API キー。このキーを Datadog 組織で作成し、シークレットとして保存します。はい
DD_APP_KEYアプリケーションキー。このキーを Datadog 組織で作成し、code_analysis_read スコープを含めます。このキーをシークレットとして保存します。はい
DD_SITE情報を送信する Datadog サイト。Datadog サイトは datadoghq.com です。いいえdatadoghq.com

CI パイプラインに下記を追加します。

# Set the Datadog site to send information to
export DD_SITE="datadoghq.com"

# Install dependencies
npm install -g @datadog/datadog-ci

# Download the latest Datadog IaC Scanner (x86_64/amd64 Linux; see GitHub Releases for arm64 and other platforms)
export IAC_SCANNER_URL="https://github.com/DataDog/datadog-iac-scanner/releases/latest/download/datadog-iac-scanner_linux_amd64.tar.gz"
curl -L "${IAC_SCANNER_URL}" -o /tmp/datadog-iac-scanner.tar.gz
tar xfz /tmp/datadog-iac-scanner.tar.gz -C /tmp
mv /tmp/datadog-iac-scanner /usr/local/bin/datadog-iac-scanner

# Run the Datadog IaC scanner
exit_code=0
/usr/local/bin/datadog-iac-scanner scan -p . -o /tmp || exit_code=$?
if [ $exit_code -lt 20 -o $exit_code -gt 60 ]; then echo "IaC scan failed" ; exit $exit_code ; fi

# Upload results
datadog-ci sarif upload /tmp/datadog-iac-scanner-result.sarif
この例では、Datadog IaC Scanner のx86_64 (amd64) Linux バージョンを使用しています。このスキャナーは、arm64 Linux、macOS、および Windows もサポートしています。別の OS やアーキテクチャを使用している場合は、GitHub リリースページから適切なリリースを選択し、 IAC_SCANNER_URL の値を更新してください。

サードパーティの静的解析結果を IaC Security にアップロードする

Checkov を含むサードパーティの Infrastructure-as-Code (IaC) スキャナーからの SARIF 結果を IaC Security にインポートできます。SAST でサポートされている SARIF 準拠ツールについては、 サードパーティの静的解析結果のアップロードを参照してください。Node.js バージョン 14 以降が必要です。

SARIF レポートをアップロードするには:

  1. DD_API_KEY 変数と DD_APP_KEY 変数が定義されていることを確認します。

  2. 必要に応じて、DD_SITE変数を設定します (デフォルトは datadoghq.com です)。

  3. datadog-ci ユーティリティ (バージョン 2.0 以降) をインストールします。

    npm install -g @datadog/datadog-ci
    
  4. サードパーティの IaC スキャンツール (Checkov、Trivy、KICS など) をコードに対して実行し、結果を SARIF v2.1.0 形式で出力します。

  5. 結果を Datadog にアップロードします。

    datadog-ci sarif upload $OUTPUT_LOCATION
    
    • アップロードオプション
      • --tags: カスタムタグを追加する (形式: key:value)
      • --max-concurrency: 同時アップロード数を設定する (デフォルト: 20)
      • --dry-run: アップロードせずに検証する

必須の SARIF 属性

サードパーティ製スキャナー (Checkov を除く) の Datadog IaC Scanning で適切に取り込み、表示させるには、IaC Security の検出結果として認識されるために、SARIF ファイルに次の属性が含まれている必要があります。

  1. Runs[...].tool.driver.name: Datadog IaC Scanning
  2. Runs[...].tool.driver.version: "code_update" または "full_scan"
    • "full_scan” リポジトリ全体の完全スキャン用
    • "code_update" プルリクエスト/インクリメンタルスキャン用
  3. Runs[...].tool.driver.rules[...].properties.tags:
    • ["DATADOG_RULE_TYPE:IAC_SCANNING"]
    • [“DATADOG_SCANNED_FILE_COUNT: <number>”] ("number" はスキャンされたファイルの数)
  4. Runs[...].results[...].locations[...].physicalLocation:
    • artifactLocation.uri: リポジトリルートからのファイルの相対パス
    • region.startLine: 開始行番号
    • region.endLine: 終了行番号
    • region.startColumn: 開始列番号
    • region.endColumn: 終了列番号
抑制により、違反が警告を発せずに無視されます。〜たら results[ ].suppressions が存在する場合、その違反は完全に無視されます。

参考資料