Amazon ECR
用户指南 (API 版本 2015-09-21)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

映像扫描

Amazon ECR 映像扫描有助于识别容器映像中的软件漏洞。Amazon ECR 使用开源 CoreOS Clair 项目中的常见漏洞和披露 (CVE) 数据库,并为您提供扫描发现结果的列表。您可以查看扫描结果以获取有关正在部署的容器映像的安全性的信息。有关 CoreOS Clair 的更多信息,请参见 CoreOS Clair

您可以手动扫描存储在 Amazon ECR 中的容器映像,也可以将存储库配置为在将映像推送到存储库时扫描映像。可以为每个映像检索上次完成的映像扫描结果。映像扫描完成后,Amazon ECR 向 Amazon EventBridge(以前称为 CloudWatch Events)发送事件。有关更多信息,请参阅事件和 EventBridge

配置存储库以便在推送时扫描

您可以在创建过程中为新存储库或为现有存储库配置映像扫描设置。启用 scan on push (推送时扫描) 时,映像将在推送到存储库后进行扫描。如果在存储库上禁用了 scan on push (推送时扫描),则必须手动启动每个映像扫描以获取扫描结果。

创建一个新的存储库以便在推送时进行扫描

当将新的存储库配置为 scan on push (推送时扫描) 时,将扫描所有推送到存储库的新映像。然后,可以检索上次完成的映像扫描的结果。有关更多信息,请参阅检索扫描结果

要查看 AWS 管理控制台步骤,请参阅创建存储库

创建配置用于推送时扫描的存储库 (AWS CLI)

使用以下命令创建一个配置为 scan on push (推送时扫描) 映像的新存储库。

  • create-repository (AWS CLI)

    aws ecr create-repository --repository-name name --image-scanning-configuration scanOnPush=true --region us-east-2
创建配置用于推送时扫描的存储库 (适用于 Windows PowerShell 的 AWS 工具)

使用以下命令创建一个配置为 scan on push (推送时扫描) 映像的新存储库。

  • New-ECRRepository (适用于 Windows PowerShell 的 AWS 工具)

    New-ECRRepository -RepositoryName name -ImageScanningConfiguration scanOnPush=true -Region us-east-2 -Force

配置现有存储库以便在推送时扫描

您可以将现有存储库配置为在将映像推送到存储库时对其进行扫描。此设置将应用于未来的映像推送。然后,可以检索上次完成的映像扫描的结果。有关更多信息,请参阅 检索扫描结果

要查看 AWS 管理控制台步骤,请参阅编辑存储库

编辑现有存储库的设置 (AWS CLI)

使用以下命令编辑现有存储库的映像扫描设置。

  • put-image-scanning-configuration (AWS CLI)

    aws ecr put-image-scanning-configuration --repository-name name --image-scanning-configuration scanOnPush=true --region us-east-2

    注意

    要为存储库禁用映像 scan on push (推送时扫描),请指定 scanOnPush=false

编辑现有存储库的设置 (适用于 Windows PowerShell 的 AWS 工具)

使用以下命令编辑现有存储库的映像扫描设置。

  • New-ECRRepository (适用于 Windows PowerShell 的 AWS 工具)

    New-ECRRepository -RepositoryName name -ImageScanningConfiguration scanOnPush=true -Region us-east-2 -Force

手动扫描映像

当您要扫描存储库中未配置为 scan on push (推送时扫描) 的映像时,可以手动开始映像扫描。每天只能扫描一次映像。此限制包括初始 scan on push (推送时扫描)(如果已启用)以及任何手动扫描。

开始手动扫描映像(控制台)

通过 AWS 管理控制台使用以下步骤开始手动映像扫描。

  1. Open the Amazon ECR console at https://console.amazonaws.cn/ecr/repositories.

  2. 从导航栏中,选择您创建存储库的区域。

  3. 在导航窗格中,选择 Repositories

  4. Repositories (存储库) 页面上,选择包含要扫描的映像的存储库。

  5. Images (映像) 页面上,选择要扫描的映像,然后选择 Scan (扫描)

开始手动扫描映像 (AWS CLI)

使用以下 AWS CLI 命令启动映像的手动扫描。您可以使用 imageTagimageDigest 指定映像,这两者都可以使用 list-images CLI 命令获取。

  • start-image-scan (AWS CLI)

    以下示例使用映像标签。

    aws ecr start-image-scan --repository-name name --image-id imageTag=tag_name --region us-east-2

    以下示例使用映像摘要。

    aws ecr start-image-scan --repository-name name --image-id imageDigest=sha256_hash --region us-east-2
开始手动扫描映像 (适用于 Windows PowerShell 的 AWS 工具)

使用以下 适用于 Windows PowerShell 的 AWS 工具 命令启动映像的手动扫描。您可以使用 imageTagimageDigest 指定映像,这两者都可以使用 list-images CLI 命令获取。

  • New-ECRRepository (适用于 Windows PowerShell 的 AWS 工具)

    New-ECRRepository -RepositoryName name -ImageScanningConfiguration scanOnPush=true -Region us-east-2 -Force

检索扫描结果

您可以检索上次完成的映像扫描的扫描结果。扫描结果根据常见漏洞和披露 (CVE) 数据库按严重性列出发现的软件漏洞。

检索映像扫描结果(控制台)

通过 AWS 管理控制台使用以下步骤检索映像扫描结果。

  1. Open the Amazon ECR console at https://console.amazonaws.cn/ecr/repositories.

  2. 从导航栏中,选择您创建存储库的区域。

  3. 在导航窗格中,选择 Repositories

  4. Repositories (存储库) 页面上,选择包含要扫描的映像的存储库。

  5. Images (映像) 页面的 Vulnerabilities (漏洞) 列下,选择要检索其扫描结果的映像的 Details (详细信息)

检索映像扫描结果 (AWS CLI)

使用以下 AWS CLI 命令启动映像的手动扫描。您可以使用 imageTagimageDigest 指定映像,这两者都可以使用 list-images CLI 命令获取。

  • describe-image-scan-findings (AWS CLI)

    以下示例使用映像标签。

    aws ecr describe-image-scan-findings --repository-name name --image-id imageTag=tag_name --region us-east-2

    以下示例使用映像摘要。

    aws ecr describe-image-scan-findings --repository-name name --image-id imageDigest=sha256_hash --region us-east-2
检索映像扫描结果 (适用于 Windows PowerShell 的 AWS 工具)

使用以下 适用于 Windows PowerShell 的 AWS 工具 命令启动映像的手动扫描。您可以使用 imageTagimageDigest 指定映像,这两者都可以使用 list-images CLI 命令获取。

  • New-ECRRepository (适用于 Windows PowerShell 的 AWS 工具)

    New-ECRRepository -RepositoryName name -ImageScanningConfiguration scanOnPush=true -Region us-east-2 -Force

故障排除

以下是常见的映像扫描失败。您可以在 Amazon ECR 控制台中通过显示映像详细信息或通过 API 或 AWS CLI 使用 DescribeImageScanFindings API 来查看此类错误。

UnsupportedImageError:无法检测到操作系统 ID 和版本

当尝试扫描使用不支持的操作系统生成的映像时,您可能会收到 UnsupportedImageError 错误。Amazon ECR 支持针对 Amazon Linux、Amazon Linux 2、Debian、Ubuntu、CentOS、Oracle Linux、Alpine 和 RHEL Linux 发行版的主要版本的程序包进行漏洞扫描。Amazon ECR 不支持扫描从 Docker scratch 映像构建的映像。