您可以使用 适用于 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.com
和
securitycentermanagement.googleapis.com
API。
创建服务账号
创建一个可用于 Jenkins 的 Google Analyze Code Security 插件服务账号。
-
Create a service account:
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
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
. - Click Create and continue.
-
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.
- Click Continue.
-
Click Done to finish creating the service account.
Do not close your browser window. You will use it in the next step.
-
-
Create a service account key:
- In the Google Cloud console, click the email address for the service account that you created.
- Click Keys.
- Click Add key, and then click Create new key.
- Click Create. A JSON key file is downloaded to your computer.
- Click Close.
如需详细了解 IaC 验证权限,请参阅用于组织级启用的 IAM。
定义您的政策
定义组织政策和 Security Health Analytics 检测器。如需使用安全状况定义这些政策,请完成以下部分中的任务 创建和部署安全状况。
安装和配置插件
- 在 Jenkins 控制台中,依次点击 Manage Jenkins(管理 Jenkins)> Manage Plugins(管理插件)。
- 在“可用”标签页中,搜索 google-analyze-code-security。
- 完成安装步骤。
- 点击 Manage Jenkins(管理 Jenkins)>配置系统。
- 在 Google Analyze Code Security(Google Analyze Code 安全性)部分,点击 Add credential(添加凭据)。
- 在 Organization ID(组织 ID)中,输入包含您要创建或修改的 Terraform 资源的 Google Cloud 组织的组织 ID。
- 在 Security Command Center 凭据中,添加服务账号密钥。
- 测试连接以验证服务账号凭据。
- 点击保存。
创建 Terraform 方案 JSON 文件
创建 Terraform 代码。如需了解相关说明,请参阅创建 Terraform 代码。
在 Jenkins 控制台中,前往 Jenkins 自由式项目的 Configuration 页面。
点击源代码管理。
在 Repository 网址 中,输入您创建的 Terraform 代码的网址。
点击构建步骤。
添加以下步骤:
初始化 Terraform:
terraform init
创建一个 Terraform 计划文件。
terraform plan -out=TF_PLAN_FILE
将
TF_PLAN_FILE
替换为 Terraform 计划的名称 文件。例如myplan.tfplan
。将计划文件转换为 JSON 格式:
terraform show -no-color -json TF_PLAN_FILE > TF_PLAN_JSON_FILE
将
TF_PLAN_JSON_FILE
替换为 Terraform 的名称 并采用 JSON 格式例如mytfplan.json
。
将该插件添加到您的 Jenkins 项目中
- 在 Jenkins 控制台中,在 Jenkins 自由式项目中,转到 配置页面。
- 在构建步骤中,点击添加构建步骤 >执行代码扫描期间: 构建。
- 输入您的组织 ID。
- 以 JSON 格式提供 Terraform 计划文件的路径。
可选:设置构建失败标准。失败条件取决于 IaC 验证扫描遇到的严重、高、中、低严重级别问题的数量。您可以指定每种严重级别的问题数量 允许的内容和问题的汇总方式(且或 OR)。
点击资源违规失败。
如果您希望仅当所有严重级别的问题数量达到阈值时才让 build 失败,请选择 AND。如果您希望在达到任何严重级别的问题数量时让 build 失败,请选择 OR。例如,如果您希望在 build 遇到一个严重问题或一个高严重级别问题时让 build 失败,请将汇总值设置为 OR。
指明所需的各种严重级别的问题数量 在构建失败之前允许的所有项目
如果您不想指定失败条件,请选择忽略资源违规。
点击保存。
现在,您可以运行构建来验证 Terraform 计划文件。
查看 IaC 违规报告
在 Jenkins 控制台中,点击您的构建的最新工作流。
点击状态。以下 HTML 文件可用作构建制品:
- 如果插件已运行,则违规报告(
GoogleAnalyzeCodeSecurity_ViolationSummary.html
)
该报告会按严重程度对违规问题进行分组。“违规行为”部分介绍了 不符合哪条规则,以及违反的 Terraform 方案中的资产 ID 规则。
- 如果构建失败,系统会显示错误摘要报告
- 如果插件已运行,则违规报告(
请先解决 Terraform 代码中的所有违规问题,然后再应用该代码。