IaC 検証を Jenkins と統合する

Jenkins 用の Google Analyze Code Security プラグインを使用して、Jenkins プロジェクトの一部である Infrastructure as Code(IaC)を検証できます。IaC を検証すると、Terraform リソース定義が Google Cloud リソースに適用されている既存の組織のポリシーと Security Health Analytics 検出機能に違反しているかどうかを判断できます。

IaC の検証の詳細については、Google Cloud 組織のポリシーに対して IaC を検証するをご覧ください。

IaC の検証は、Jenkins フリースタイル プロジェクトでのみ動作します。

始める前に

Jenkins で IaC の検証を開始するには、次のタスクを実行します。

Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする

Security Command Center のプレミアム ティアまたはエンタープライズ ティアが組織レベルで有効になっていることを確認します。

Security Command Center を有効にすると、securityposture.googleapis.com API と securitycentermanagement.googleapis.com API が有効になります。

サービス アカウントを作成する

Jenkins 用の Google Analyze Code Security プラグインに使用できるサービス アカウントを作成します。

  1. Create a service account:

    1. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    2. Select your project.
    3. In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.

      In the Service account description field, enter a description. For example, Service account for quickstart.

    4. Click Create and continue.
    5. Grant the Security Posture Shift-Left Validator role to the service account.

      To grant the role, find the Select a role list, then select Security Posture Shift-Left Validator.

    6. Click Continue.
    7. Click Done to finish creating the service account.

      Do not close your browser window. You will use it in the next step.

  2. Create a service account key:

    1. In the Google Cloud console, click the email address for the service account that you created.
    2. Click Keys.
    3. Click Add key, and then click Create new key.
    4. Click Create. A JSON key file is downloaded to your computer.
    5. Click Close.

IaC 検証の権限の詳細については、組織レベルでの有効化のための IAM をご覧ください。

ポリシーを定義する

組織のポリシーSecurity Health Analytics の検出機能を定義します。セキュリティ ポスチャーを使用してこれらのポリシーを定義するには、ポスチャーを作成してデプロイするのタスクを実行します。

プラグインをインストールして構成する

  1. Jenkins コンソールで、[Manage Jenkins] > [Manage Plugins] をクリックします。
  2. [Available] タブで「google-analyze-code-security」を検索します。
  3. インストール手順を完了します。
  4. [Manage Jenkins] > [Configure System] をクリックします。
  5. [Google Analyze Code Security] セクションで、[Add credential] をクリックします。
  6. [Organization ID] に、作成または変更する Terraform リソースを含む Google Cloud 組織の組織 ID を入力します。
  7. [Security Command Center Credential] で、サービス アカウント キーを追加します。
  8. 接続をテストして、サービス アカウントの認証情報を確認します。
  9. [保存] をクリックします。

Terraform 計画の JSON ファイルを作成する

  1. Terraform のコードを作成する手順については、Terraform コードを作成するをご覧ください。

  2. Jenkins 用の Terraform プラグインをインストールします。

  3. Jenkins コンソールで、Jenkins フリースタイル プロジェクトの [Configuration] ページに移動します。

  4. [Source Code Management] をクリックします。

  5. [Repository URL] に、作成した Terraform コードの URL を入力します。

  6. [Build steps] をクリックします。

  7. 以下の手順を追加します。

    1. Terraform を初期化します。

      terraform init
      
    2. Terraform 計画ファイルを作成します。

      terraform plan -out=TF_PLAN_FILE
      

      TF_PLAN_FILE は、Terraform 計画ファイルの名前に置き換えます。例: myplan.tfplan

    3. 計画ファイルを JSON 形式に変換します。

      terraform show -no-color -json TF_PLAN_FILE > TF_PLAN_JSON_FILE
      

      TF_PLAN_JSON_FILE は、Terraform 計画ファイルの名前(JSON 形式)に置き換えます。例: mytfplan.json

Jenkins プロジェクトにプラグインを追加する

  1. Jenkins コンソールで、Jenkins フリースタイル プロジェクトの [Configuration] ページに移動します。
  2. [Build Steps] で、[Add build step] > [Perform Code Scan during Build] をクリックします。
  3. 組織 ID を入力します。
  4. Terraform 計画ファイル(JSON 形式)のパスを指定します。
  5. 省略可: ビルドの失敗の基準を設定します。失敗の基準は、IaC 検証スキャンで検出される重大度が重大、高、中、低の問題の数に基づいています。許可される重大度ごとに問題の数と、問題の集計方法(AND または OR)を指定できます。

    1. [Fail on Asset Violation] をクリックします。

    2. すべての重大度レベルの問題数に達したときにのみビルドが失敗するようにする場合は、[AND] を選択します。いずれかの重大度レベルの問題数に達したときにビルドが失敗するようにする場合は、[OR] を選択します。たとえば、重大な問題が 1 つでも発生したとき、または重大度が高い問題が 1 つ発生したときにビルドが失敗するようにする場合、集計値を OR に設定します。

    3. ビルドが失敗する前に許可するさまざまな重大度レベルの問題の数を指定します。

    失敗の基準を指定しない場合は、[Ignore Asset Violation] を選択します。

  6. [保存] をクリックします。

ビルドを実行して Terraform 計画ファイルを検証できるようになりました。

IaC 違反レポートを表示する

  1. Jenkins コンソールで、ビルドの最新のワークフローをクリックします。

  2. [Status] をクリックします。ビルド アーティファクトとして使用できる HTML ファイルは、次のとおりです。

    • プラグインが実行された場合、違反レポート(GoogleAnalyzeCodeSecurity_ViolationSummary.html

    レポートでは、違反が重大度別にグループ化されます。違反セクションでは、満たされなかったルールと、ルールに違反した Terraform 計画のアセット ID について説明します。

    • ビルドが失敗した場合、エラー サマリー レポート
  3. 適用する前に、Terraform コード内の違反を解決します。

次のステップ