你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

将 Defender for Cloud CLI 与 CI/CD 管道集成

Defender for Cloud 命令行接口 (CLI) 是可在持续集成和持续部署 (CI/CD) 管道中使用的应用程序。 它运行静态分析工具并将代码连接到云服务。 可以在任何生成过程中使用 Defender for Cloud CLI,通过内置安全扫描程序扫描映像中是否存在安全漏洞。 它将扫描结果发送到 Defender for Cloud 门户。 然后,云安全资源管理器可以访问容器映像及其漏洞。

先决条件

  • 已加入 Defender for Cloud 的 Azure 订阅。 如果还没有 Azure 帐户,请免费创建一个帐户

  • 以下 CI/CD 管道工具之一:Jenkins、BitBucket Pipelines、Google Cloud Build、Bamboo、CircleCI、Travis CI、TeamCity、Oracle DevOps Services、AWS CodeBuild

  • 对于 Azure DevOps,Microsoft Security DevOps (MSDO) 扩展安装在 Azure DevOps 组织中。

  • 已启用 Defender CSPM

  • 创建客户端 ID 和机密的安全管理员权限。

安装

以下部分介绍如何检索客户端 ID 和机密、更新 CI/CD 管道脚本,以及如何将环境变量添加到 CI/CD 管道。

检索 API 令牌

要允许将 Defender for Cloud CLI 中的安全数据传递到 Defender for Cloud 后端,Defender for Cloud 中的安全管理员必须先从 Defender for Cloud 生成 API 密钥以进行身份验证。

生成令牌时,安全管理员会选择与令牌关联的订阅范围。 从此令牌中“推送”到 Defender for Cloud 的数据的范围限定为与该令牌关联的订阅。 这些 API 令牌是不可变的,只能生成/删除。

在此基础上,安全管理员必须将令牌安全地传递给开发人员,以便将其添加到 CI/CD 管道。

  1. 登录到 Azure 门户

  2. 转到“Microsoft Defender for Cloud”>“管理”>“环境设置”>“集成”

    Defender for Cloud 中的集成环境设置的屏幕截图。

  3. 选择“添加集成”,然后选择“DevOps 引入”

    新 DevOps 引入选项的屏幕截图。

  4. 输入令牌的描述性名称,所选租户会存储令牌信息。 输入机密描述和到期日期后,系统会生成客户端密码。

    添加 DevOps 引入集成的屏幕截图。

  5. 在“配置”中启用令牌并创建令牌

    创建 DevOps 引入和创建令牌的屏幕截图。

  6. 复制每个令牌。 选择“确定”后,无法编辑或检索这些令牌

    成功创建 DevOps 引入的屏幕截图。

  7. 在“集成”表中,会显示新的引入

    包含新引入的 DevOps 集成表的屏幕截图。

更新 CI/CD 管道脚本

每个 CI/CD 管道工具都有不同的语法。 此代码是 Bitbucket 管道的示例:

image: atlassian/default-image:3
 
pipelines:
  default:
    - parallel:
      - step:
          name: 'MSDO trivy test'
          script:
            - curl -L -o ./msdo_linux.zip https://www.nuget.org/api/v2/package/Microsoft.Security.DevOps.Cli.linux-x64/
            - unzip ./msdo_linux.zip
            - chmod +x tools/guardian
            - chmod +x tools/Microsoft.Guardian.Cli
            - ls -lah .
            - tools/guardian init --force
            - tools/guardian run -t trivy --export-file ./ubuntu-test.sarif --publish-file-folder-path ./ubuntu-test.sarif            

管道变量

安全接收令牌后,开发人员必须为密钥配置环境变量。 环境变量通过 shell 脚本传递给 CLI,开发人员可以通过 curl 接收该脚本或手动将 shell 脚本复制到其存储库中。

名称
GDN_PUSH_TOKEN_CLIENT_ID <客户端 ID>
GDN_PUSH_TOKEN_CLIENT_ID <客户端 ID>
GDN_PUSH_TOKEN_CLIENT_SECRET <客户端机密>
GDN_PIPELINENAME bitbucket, jenkins, gcp, bamboo, circle, travis, teamcity, oci, aws
GDN_PUSH_TOKEN_TENANT_ID <租户 ID>

在云安全资源管理器中查看结果

  1. 成功运行管道后,再次导航到 Microsoft Defender for Cloud。

  2. 在“Defender for Cloud”菜单中,选择“云安全资源管理器”

  3. 依次选择“选择资源类型”下拉列表、“DevOps”和“完成”

    云安全资源管理器中 CI/CD 管道的屏幕截图。

  4. 选择 + 图标以添加新的搜索条件。

    云安全资源管理器中的新搜索的屏幕截图。

  5. 选择“选择条件”下拉列表。 然后依次选择“数据”和“推送”

    在云安全资源管理器中选择条件的屏幕截图。

  6. 选择“选择资源类型”下拉列表。 然后依次选择“容器”、“容器映像”和“完成”

    在云安全资源管理器中选择容器映像的屏幕截图。

  7. 在环境设置中选择创建集成时所选的范围。

    在云安全资源管理器中选择范围的屏幕截图。

  8. 选择“搜索”。

    在云安全资源管理器中进行搜索的屏幕截图。

  9. 查看管道到图像的映射的结果。

与受监视的容器关联

  1. 在云安全资源管理器中,输入以下查询:CI/CD 管道 ->管道 + 容器映像 ->包含在 + 容器寄存器(组)

  2. 查看“资源名称”以查看容器映射