Gradleプラグイン

Contrast Gradleプラグインは、Contrast.jarとビルドを統合するのに使用されます。Contrastで認証を行い、最新のJavaエージェントをダウンロードしてビルドを検証することができます。

注記

Gradleは、build.gradleファイルを活用してアプリケーションを設定するビルドツールです。さまざまな種類のアプリケーションをビルド、パッケージ化、テストするのに使用されます。

サンプルWebアプリケーションの複製

プロジェクトを設定する最も簡単な方法は、GradleベースのWebアプリケーションのサンプルを複製することです。このアプリケーションはMavenからGradleへと移行され、MongoDBに依存します。

  1. インストールしてデータベースパスを設定します。

    git clone https://github.com/Contrast-Security-OSS/Contrast-Sample-Gradle-Application
    brew install mongodb
    sudo mkdir -p /data/db
    brew services start mongodb
  2. アプリケーションの実行準備が整います。Contrast-Sample-Gradle-Application/build.gradleファイルを開きます。スクロールしてcontrastConfiguration拡張機能を見つけます。appNameserverName以外の値は、全て個人のキーにあります。

    contrastConfiguration {
        username = "username"
        apiKey = "apiKey"
        serviceKey = "serviceKey"
        apiUrl = "apiUrl"
        orgUuid = "orgUuid"
        appName = "editLATER"
        serverName = "editLATER"
    }
  3. contrastInstallタスクを呼び出して、Contrast JARファイルをインストールします。これにより、プロジェクトのビルドディレクトリにContrast JARがインストールされます。

    cd path/to/Contrast-Sample-Gradle-Application
    gradle build -x test contrastInstall
  4. Javaエージェントでアプリケーションを実行します。サーバが起動します。

    cd path/to/Contrast-Sample-Gradle-Application/build
    java -Dcontrast.agent.java.standalone_app_name=mytestapp -Dcontrast.server=mytestserver -jar libs/Contrast-Sample-Gradle-Application-0.0.1-SNAPSHOT.jar
    
  5. localhost:8080でアプリケーションが実行されていることと、Contrastにアプリケーションが表示されることを確認します。

  6. Contrast内で、前述のコマンドで指定されたappnameのアプリケーションが表示されていることを検証します。

  7. Contrast-Sample-Gradle-Applicationプロジェクトのbuild.gradlecontrastConfigurationを編集して、前のステップでJavaエージェントのオプションとして指定したappNameserverNameを指定します。

    contrastConfiguration {
        username = "alreadySetup"
        apiKey = "alreadySetup"
        serviceKey = "alreadySetup"
        apiUrl = "alreadySetup"
        orgUuid = "alreadySetup"
        appName = "mytestapp"
        serverName = "mytestserver"
    }
  8. いつでも検証タスクを実行して脆弱性を確認できます。

    gradle build contrastVerify -x test

プラグインの設定

GradleプラグインがContrastに接続して脆弱性を絞り込むためには、以下のパラメータを使用します。これらの多くは個人のキーにあります。

パラメータ

説明

Contrastユーザ名

Contrastユーザのユーザ名/Eメール

Contrast serviceキー

サービスキー

Contrast APIキー

APIキー

Contrast API URL

ContrastへのAPI URL

Contrast組織のUUID

組織のUUID

アプリケーション名

-Djava.standalone_app_nameで設定したアプリケーションの名前

これはアプリケーションの絞込みに使用されます。

最小の深刻度レベル

絞込みの対象となる最小の深刻度レベル(NoteLowMediumHighCritical)

このプロパティは包括的です。

サーバ名

-Dcontrast.serverで設定したサーバの名前

SaaS版カスタマーの場合は、app.contrastsecurity.com/Contrast/apiを使用してください。

JARパス

エージェントを再ダウンロードしない場合は、jarファイルへのローカルパス

注記

ビルドが成功しても、設定した深刻度レベル以上の脆弱性が検出された場合は、ビルド全体が失敗します。

Contrast Gradleプラグインのサンプル設定を以下に示します。

buildscript {
  repositories {
    maven {
      url "https://plugins.gradle.org/m2/"
    }
  }
  dependencies {
    classpath "gradle.plugin.com.contrastsecurity:ContrastGradlePlugin:1.1.1"
  }
}

apply plugin: "com.contrastsecurity.contrastplugin"
contrastConfiguration {
    username = "test_user"
    apiKey = "testApiKey"
    serviceKey = "testServiceKey"
    apiUrl = "https://www.app.contrastsecurity.com/Contrast/api"
    orgUuid = "QWER-ASDF-ZXCV-ERTY"
    appName = "Test Application"
    serverName = "jenkins.slave1"
    minSeverity = "Medium"
}

プラグインの使用

プラグインコードはGitHubリポジトリで表示できます。ここでは、プラグインによって追加される2つのタスク(contrastInstallおよびcontrastVerify)とその仕組みを確認できます。

プラグインの最新バージョンは、GradleプラグインのWebページにあります。

タスク

説明

contrastInstall

ローカルプロジェクトにContrast Javaエージェントをインストールします。ContrastエージェントでJVMが起動するよう、プラグインによってgradle.propertiesファイルのorg.gradle.jvmargsプロパティが編集されます。contrastVerifyタスクで脆弱性を絞り込むためのアプリケーションバージョンは、このタスク中に生成されます。プラグインでは、以下の順番でアプリケーションバージョンが生成されます。

  • TravisCIでビルドが実行されている場合、ContrastはappName-$TRAVIS_BUILD_NUMBERを使用します。

  • CircleCIでビルドが実行されている場合、ContrastはappName-$CIRCLE_BUILD_NUMを使用します。

  • TravisCIとCircleCI以外でビルドが実行されている場合、ContrastはappName-yyyyMMddHHmm形式でアプリケーションバージョンを生成します。

contrastVerify

Webアプリケーションで新規の脆弱性をチェックします。