选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

Amazon Inspector Dockerfile 检查

聚焦模式
Amazon Inspector Dockerfile 检查 - Amazon Inspector

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本节介绍如何使用 Amazon Inspector SBOM 生成器进行扫描 Dockerfiles 以及 Docker 容器镜像,用于显示会引入安全漏洞的错误配置。

使用 Sbomgen Dockerfile 检查

当发现名为 Dockerfile*.Dockerfile 的文件以及扫描 Docker 映像后,会自动执行 Dockerfile 检查。

您可以使用 --skip-scanners dockerfile 参数禁用 Dockerfile 检查。您还可以将 Dockerfile 检查与任何可用的扫描器(例如操作系统或第三方软件包)结合使用。

Docker 检查命令示例

以下示例命令演示如何为 Dockerfiles 和 Docker 容器镜像以及操作系统和第三方软件包生成 SBOMs 。

# generate SBOM only containing Docker checks for Dockerfiles in a local directory ./inspector-sbomgen directory --path ./project/ --scanners dockerfile # generate SBOM for container image will by default include Dockerfile checks ./inspector-sbomgen container --image image:tag # generate SBOM only containing Docker checks for specific Dockerfiles and Alpine, Debian, and Rhel OS packages in a local directory /inspector-sbomgen directory --path ./project/ --scanners dockerfile,dpkg,alpine-apk,rhel-rpm # generate SBOM only containing Docker checks for specific Dockerfiles in a local directory ./inspector-sbomgen directory --path ./project/ --skip-scanners dockerfile
示例文件组件

以下是 Dockerfile 查找文件组件的示例。

{ "bom-ref": "comp-2", "name": "dockerfile:data/docker/Dockerfile", "properties": [ { "name": "amazon:inspector:sbom_scanner:dockerfile_finding:IN-DOCKER-001", "value": "affected_lines:27-27" } ], "type": "file" },
漏洞响应组件示例

以下是 Dockerfile 查找漏洞响应组件的示例。

{ "advisories": [ { "url": "https://docs.docker.com/develop/develop-images/instructions/" } ], "affects": [ { "ref": "comp-2" } ], "analysis": { "state": "in_triage" }, "bom-ref": "vuln-13", "created": "2024-03-27T14:36:39Z", "description": "apt-get layer caching: Using apt-get update alone in a RUN statement causes caching issues and subsequent apt-get install instructions to fail.", "id": "IN-DOCKER-001", "ratings": [ { "method": "other", "severity": "info", "source": { "name": "AMAZON_INSPECTOR", "url": "https://aws.amazon.com/inspector/" } } ], "source": { "name": "AMAZON_INSPECTOR", "url": "https://aws.amazon.com/inspector/" }, "updated": "2024-03-27T14:36:39Z" },
注意

如果你调用 Sbomgen 如果没有该--scan-sbom标志,则只能查看原始的 Dockerfile 发现结果。

支持的 Dockerfile 检查

Sbomgen 支持对以下内容进行 Dockerfile 检查:

  • Sudo 二进制程序包

  • Debian APT 实用程序

  • 硬编码密钥

  • 根容器

  • 运行时弱化命令标志

  • 运行时弱化环境变量

这些 Dockerfile 检查中的每一项都有相应的严重性评级,该评级显示在以下主题的顶部。

注意

以下主题中描述的建议均基于行业最佳实践。

Sudo 二进制程序包

注意

此检查的严重性评级为信息

我们建议不要安装或使用 Sudo 二进制程序包,因为它具有不可预测的 TTY 和信号转发行为。有关更多信息,请参阅 Docker Docs 网站中的 User。如果您的使用案例需要类似于 Sudo 二进制程序包的功能,我们建议使用 Gosu

Debian APT 实用工具

注意

此检查的严重性评级为

以下是使用的最佳实践 Debian APT 实用程序。

apt-get 命令合并到单个 Run 语句中以避免缓存问题

我们建议在 Docker 容器内将 apt-get 命令合并到单个 RUN 语句中。单独使用 apt-get update 会导致缓存问题且后续 apt-get install 指令会失败。有关更多信息,请参阅 Docker Docs 网站上的 apt-get

注意

所描述的缓存行为也可能发生在你的内部 Docker 容器(如果 Docker 容器软件已过期)。

以非交互方式使用 APT 命令行实用程序

我们建议以交互方式使用 APT 命令行实用程序。APT 命令行实用程序被设计为终端用户工具,其行为在不同版本之间会发生变化。有关更多信息,请参阅 Debian 网站中的 Script Usage and differences from other APT tools

硬编码机密

注意

此检查的严重性评级为严重

您 Dockerfile 中的机密信息被视为硬编码机密。可以通过以下方式识别硬编码的机密 Sbomgen Docker 文件检查:

  • AWS 访问密钥 IDs — AKIAIOSFODNN7EXAMPLE

  • DockerHub 个人访问令牌 — dckr_pat_thisisa27charexample1234567

  • GitHub 个人访问令牌 — ghp_examplev61wY7Pj1YnotrealUoY123456789

  • GitLab 个人访问令牌 — glpat-12345example12345678

根容器

注意

此检查的严重性标记为信息

我们建议在没有根权限的情况下运行 Docker 容器。对于没有根权限就无法运行的容器化工作负载,我们建议使用最少权限原则来构建应用程序。有关更多信息,请参阅 Docker Docs 网站中的 User

运行时弱化环境变量

注意

此检查的严重性评级为

一些命令行实用程序或编程语言运行时支持绕过安全默认值,从而通过不安全的方法执行。

NODE_TLS_REJECT_UNAUTHORIZED=0

时间 Node.js 进程在NODE_TLS_REJECT_UNAUTHORIZED设置为的情况下运行0,TLS 证书验证被禁用。有关更多信息,请参阅 Node.js 网站中的 NODE_TLS_REJECT_UNAUTHORIZED=0

GIT_SSL_NO_VERIFY=*

当 git 命令行进程在设置 GIT_SSL_NO_VERIFY 的情况下运行时,Git 会跳过验证 TLS 证书。有关更多信息,请参阅 Git 网站中的 Environment variables

PIP_TRUSTED_HOST=*

时间 Python pip 命令行进程以 s PIP_TRUSTED_HOST et 运行,Pip 会跳过在指定域上验证 TLS 证书。有关更多信息,请参阅 Pip 网站中的 --trusted-host

NPM_CONFIG_STRICT_SSL=false

时间 Node.js npm 命令行进程在NPM_CONFIG_STRICT_SSL设置为 false 的情况下运行,Node Package Manager (npm) 实用程序将在不验证 TLS 证书的情况下连接到 NPM 注册表。有关更多信息,请参阅 npm Docs 网站中的 strict-ssl

运行时弱化命令标志

注意

此检查的严重性评级为

与运行时弱化环境变量类似,一些命令行实用程序或编程语言运行时支持绕过安全默认值,从而通过不安全的方法执行。

npm ––strict-ssl=false

当 Node.js npm 命令行进程结合 --strict-ssl=false 标志运行时,Node Package Manager(npm)实用程序将在不验证 TLS 证书的情况下连接到 NPM 注册表。有关更多信息,请参阅 npm Docs 网站中的 strict-ssl

apk ––allow-untrusted

当 Alpine Package Keeper 实用程序使用--allow-untrusted标志运行,apk将安装没有签名或签名不可信的软件包。有关更多信息,请参阅 Apline 网站中的以下存储库

apt-get ––allow-unauthenticated

当 Debian apt-get 软件包实用程序结合 --allow-unauthenticated 标志运行时,apt-get 不会检查软件包的有效性。有关更多信息,请参阅 Debian 网站中的 APT-Get(8)

pip ––trusted-host

当 Python pip 实用程序使用--trusted-host标志运行,指定的主机名将绕过 TLS 证书验证。有关更多信息,请参阅 Pip 网站中的 --trusted-host

rpm ––nodigest, ––nosignature, ––noverify, ––nofiledigest

当基于 RPM 的软件包管理器 rpm 结合 --nodigest--nosignature--noverify--nofiledigest 标志运行时,RPM 软件包管理器在安装软件包时不会验证软件包标头、签名或文件。有关更多信息,请参阅 RPM 网站上的以下 RPM 手册页

yum-config-manager ––setopt=sslverify false

当基于 RPM 的软件包管理器 yum-config-manager 在将 --setopt=sslverify 标志设置为 false 的情况下运行时,YUM 软件包管理器将不会验证 TLS 证书。有关更多信息,请参阅 Man7 网站上的以下 YUM 手册页

yum ––nogpgcheck

基于 RPM 的软件包管理器 yum 结合 --nogpgcheck 标志运行时,YUM 软件包管理器会跳过检查软件包上的 GPG 签名。有关更多信息,请参阅 Man7 网站上的 yum(8)

curl ––insecure, curl –k

curl 结合 --insecure-k 标志运行时,将禁用 TLS 证书验证。默认情况下,在进行传输之前,curl 建立的每个安全连接都要经过安全验证。此选项会让 curl 跳过验证步骤,无需检查即可继续操作。有关更多信息,请参阅 Curl 网站上的以下 Curl 手册页

wget ––no-check-certificate

wget 结合 --no-check-certificate 标志运行时,将禁用 TLS 证书验证。有关更多信息,请参阅 GNU 网站上的以下 Wget 手册页

本页内容

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。