目次

事前レジストリ検索の設定

ソフトウェア配信パイプラインの図

Deep Security Smart Check を使用すると、イメージが実稼働レジストリに到達する前に、そのイメージを確実に検索できます。

初期設定のサービス証明書を置き換える

まだ行っていない場合は、「 サービス証明書の置き換え 」の手順に従って、サービスの有効な証明書を設定してください。

Deep Security Smart Checkで検索レジストリを有効にする

検索用のレジストリが用意されており、 Deep Security Smart Check 環境で有効にできます。検索プロセスでは、イメージの検索中、イメージがこのレジストリに一時的に保存されます。このレジストリは本番のレジストリとは別であるため、イメージが検索される前に誤ってイメージが配信されることを心配する必要はありません。

検索レジストリを有効にするには、 overrides.yaml ファイルに次の内容が含まれていることを確認します。

registry:
  enabled: true

  auth:
    username: registryUser
    password: registryPassword

置換された証明書のオーバーライドに加えて、 helm install または helm upgrade コマンドを実行します。

registryUserregistryPassword をサイト固有の値に置き換えます。

Deep Security Smart Check の組み込みレジストリは、事前レジストリ検索のみを目的としています。このレジストリにプッシュされたイメージは定期的に削除されます。

service.httpsPortservice.httpPort および service.registryPort はすべて一意である必要があります。

ビルドホストに検索レジストリの証明書をインストールする

サービス証明書がビルドホストで信頼されていない場合は、ビルドホストで Docker デーモンを設定して、 Deep Security Smart Check サービス証明書を信頼する必要があります。

Deep Security Smart Check 証明書を取得する

証明書が dssc-proxy-certificateという名前のKubernetesシークレットに保存されている場合は、次のコマンドを使用して Deep Security Smart Check クラスタから証明書を取得できます。

kubectl get secret dssc-proxy-certificate -o go-template='{{index .data "tls.crt" | base64decode}}'

このコマンドを使用するには、 kubectl バージョン1.11.0(2018年6月)以降が必要です。

証明書データをファイルに保存します。

ビルドホストに証明書をインストールする

前の手順で作成した証明書ファイルをビルドホストの次の場所にコピーします。 smartcheck.example.com を、 Deep Security Smart Check サービスに割り当てられたホスト名に置き換えます。初期設定とは異なるポートを使用している場合は、 5000 を使用しているポート番号に置き換えます。

/etc/docker/certs.d/smartcheck.example.com:5000/ca.crt

ビルドホストで Docker daemonを再起動する必要はありません。

Deep Security Smart Check プラグインをJenkins用に設定する

これらの手順を実行するには、プラグインのv1.1.0が必要です。古いバージョンを使用している場合は、このサンプルを使用する前にアップグレードしてください。

Jenkins用の Deep Security Smart Check プラグインを使用している場合は、次に示すように、 JenkinsfilesmartcheckScan 呼び出しに preRegistry パラメータを追加します。

stage("Deep Security Smart Check scan") {
    smartcheckScan([
        imageName: "registry.example.com/my-project/my-image",
        smartcheckHost: "smartcheck.example.com",
        smartcheckCredentialsId: "smartcheck-auth",
        preregistryScan: true,
        preregistryCredentialsId: "preregistry-auth",
    ])
}

このステージは、パイプラインに必要なテストステージと並行して実行できます。

上記の smartcheckCredentialsId および preregistryCredentialsId は、それぞれ Deep Security Smart Check および組み込みレジストリにアクセスするために作成したJenkins資格情報を参照します。

smartcheckCredentialsIdの場合は、 Administrator または User の役割を持つ Deep Security Smart Check ユーザのユーザ名とパスワードを使用して、Jenkinsで「ユーザ名とパスワード」資格情報を作成します。この資格情報のIDを smartcheckCredentialsIdの値として指定します。

preregistryCredentialsIdの場合、上記の Deep Security Smart Checkで検索レジストリを有効にする の説明に従って overrides.yaml ファイルに入力した registry.auth.usernameregistry.auth.password を使用して、Jenkinsで「パスワード付きユーザー名」クレデンシャルを作成します。この資格情報のIDを preregistryCredentialsIdの値として指定します。