你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
将容器映像从代码映射到云
在容器注册表中存储的容器映像或 Kubernetes 群集中运行的容器映像中发现漏洞时,安全管理人员很难追溯到最初生成容器映像的 CI/CD 管道并识别开发者修正所有者。 借助 Microsoft Defender 云安全态势管理 (CSPM) 中的 DevOps 安全功能,可以将云原生应用程序从代码映射到云,以便轻松启动开发者修正工作流,并减少修正容器映像中漏洞所需的时间。
先决条件
已加入 Defender for Cloud 的 Azure 帐户。 如果还没有 Azure 帐户,请免费创建一个帐户。
Azure DevOps 或载入到 Microsoft Defender 的 GitHub 环境会自动共享并安装在所有连接的 Azure DevOps 组织中。 这样就会自动将任务注入到所有 Azure Pipelines 中,以收集进行容器映射所需的数据。
对于 Azure DevOps,Microsoft Security DevOps (MSDO) 扩展安装在 Azure DevOps 组织中。
对于 GitHub,Microsoft Security DevOps (MSDO) 操作在 GitHub 存储库中配置。 此外,GitHub 工作流必须具有“id-token: write”权限才能与 Defender for Cloud 联合。 有关示例,请参阅此 YAML。
已启用 Defender CSPM。
必须使用 Docker 生成容器映像,Docker 客户端必须在生成过程中能够访问 Docker 服务器。
将容器映像从 Azure DevOps 管道映射到容器注册表
在 Azure DevOps CI/CD 管道中生成容器映像并将其推送到注册表后,可以使用云安全资源管理器查看该映射:
登录 Azure 门户。
导航到“Microsoft Defender for Cloud”>“云安全资源管理器”。 容器映像映射最多可能需要 4 小时才能在云安全资源管理器中显示。
若要查看基本映射,请选择“容器映像”>+>“由代码库推送”。
(可选)选择“容器映像”旁边的 + 以将其他筛选器添加到查询中,例如“存在漏洞”以仅筛选具有 CVE 的容器映像。
运行查询后,将看到容器注册表与 Azure DevOps 管道之间的映射。 选择边缘旁边的“...”,查看有关 Azure DevOps 管道运行位置的更多详细信息。
下面是利用容器映像映射的高级查询的示例。 从向 Internet 公开的 Kubernetes 工作负载开始,可以将所有具有高严重性 CVE 的容器映像追溯到生成容器映像的 Azure DevOps 管道,从而使安全管理人员能够启动开发者修复工作流。
注意
如果你的 Azure DevOps 组织在 2023 年 11 月 15 日之前创建了 Azure DevOps 连接器,请导航到“组织设置”>“扩展”>“共享”并安装容器映像映射修饰器。 如果未看到与组织共享的扩展,请填写以下表单。
将容器映像从 GitHub 工作流映射到容器注册表
确保已将 GitHub 连接器加入到 Defender for Cloud。
请运行以下 MSDO 工作流:
name: Build and Map Container Image
on: [push, workflow_dispatch]
jobs:
build:
runs-on: ubuntu-latest
# Set Permissions
permissions:
contents: read
id-token: write
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: '3.8'
# Set Authentication to Container Registry of Choice.
# The example below is for Azure Container Registry. Amazon Elastic Container Registry and Google Artifact Registry are also supported.
- name: Azure Container Registry Login
uses: Azure/docker-login@v1
with:
login-server: <containerRegistryLoginServer>
username: ${{ secrets.ACR_USERNAME }}
password: ${{ secrets.ACR_PASSWORD }}
# Build and Push Image
- name: Build and Push the Docker image
uses: docker/build-push-action@v2
with:
push: true
tags: ${{ secrets.IMAGE_TAG }}
file: Dockerfile
# Run Mapping Tool in MSDO
- name: Run Microsoft Security DevOps Analysis
uses: microsoft/security-devops-action@latest
id: msdo
在 GitHub 工作流中生成容器映像并将其推送到注册表后,可以使用云安全资源管理器查看该映射:
登录 Azure 门户。
导航到“Microsoft Defender for Cloud”>“云安全资源管理器”。 容器映像映射最多可能需要 4 小时才能在云安全资源管理器中显示。
若要查看基本映射,请选择“容器映像”>+>“由代码库推送”。
(可选)选择“容器映像”旁边的 + 以将其他筛选器添加到查询中,例如“存在漏洞”以仅筛选具有 CVE 的容器映像。
运行查询后,将看到容器注册表与 GitHub 工作流之间的映射。 选择边缘旁边的“...”,查看有关 GitHub 工作流运行位置的更多详细信息。
下面是利用容器映像映射的高级查询的示例。 从向 Internet 公开的 Kubernetes 工作负载开始,可以将所有具有高严重性 CVE 的容器映像追溯到生成容器映像的 GitHub 存储库,从而使安全管理人员能够启动开发者修复工作流。