将 IaC 验证与 Jenkins 集成

您可以使用 适用于 Jenkins 的 Google Analyze Code Security 插件来验证 Jenkins 项目中的基础架构即代码 (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.comsecuritycentermanagement.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(管理 Jenkins)> Manage Plugins(管理插件)。
  2. 可用标签页中,搜索 google-analyze-code-security
  3. 完成安装步骤。
  4. 依次点击 Manage Jenkins > Configure System
  5. Google Analyze Code Security 部分,点击 Add credential(添加凭据)。
  6. Organization ID(组织 ID)中,输入包含您要创建或修改的 Terraform 资源的 Google Cloud 组织的组织 ID。
  7. Security Command Center 凭据中,添加服务账号密钥。
  8. 测试连接以验证服务账号凭据。
  9. 点击保存

创建 Terraform 方案 JSON 文件

  1. 创建 Terraform 代码。如需了解相关说明,请参阅创建 Terraform 代码

  2. 安装 适用于 Jenkins 的 Terraform 插件

  3. 在 Jenkins 控制台中,前往 Jenkins 自由式项目的 Configuration(配置)页面。

  4. 点击源代码管理

  5. Repository 网址 中,输入您创建的 Terraform 代码的网址。

  6. 点击构建步骤

  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. 构建步骤中,依次点击添加构建步骤 > 在构建期间执行代码扫描
  3. 输入您的组织 ID。
  4. 提供 Terraform 方案文件的路径(采用 JSON 格式)。
  5. 可选:设置构建失败条件。失败条件取决于 IaC 验证扫描遇到的严重、高、中、低严重级别问题的数量。您可以指定允许出现的每个严重级别的问题数量,以及问题的汇总方式(ANDOR)。

    1. 点击出现素材资源违规问题时失败

    2. 如果您希望仅当所有严重级别的问题数量达到阈值时才让构建失败,请选择 AND。如果您希望在达到任何严重级别的问题数量时让 build 失败,请选择 OR。例如,如果您希望在 build 遇到一个严重问题一个高严重级别问题时让 build 失败,请将汇总值设置为 OR

    3. 指明您希望在 build 失败之前允许的各种严重级别的问题数量。

    如果您不想指定失败条件,请选择忽略资源违规

  6. 点击保存

现在,您可以运行 build 来验证 Terraform 计划文件。

查看 IaC 违规报告

  1. 在 Jenkins 控制台中,点击构建的最新工作流。

  2. 点击状态。以下 HTML 文件可用作 build 工件:

    • 如果插件已运行,则会生成违规报告 (GoogleAnalyzeCodeSecurity_ViolationSummary.html)

    该报告会按严重程度对违规行为进行分组。“违规行为”部分会说明未满足哪条规则,以及违反该规则的 Terraform 方案中的资产 ID。

    • 如果构建失败,则会显示错误摘要报告
  3. 请先解决 Terraform 代码中的所有违规问题,然后再应用这些代码。

后续步骤