Bitdefender 容器镜像扫描器
该
Bitdefender
容器镜像扫描器集成依赖于
bcst-cli
(
Bitdefender
云安全工具命令行界面)工具,用于扫描本地压缩包存档或直接从容器注册表获取的容器镜像。所有容器注册表镜像的扫描结果将发送至
GravityZone
并显示在
控制中心
.
先决条件
在运行
bcst-cli
工具前,请确保满足以下先决条件:
-
您已安装 GravityZone 容器安全附加组件。
-
宿主机运行基于AMD64或ARM64架构的Linux操作系统,并支持
glibc。 -
宿主机至少有8 GB可用工作空间。
注意
默认工作目录位于
/tmp。如需指定其他位置,可使用--temp-dir选项(说明详见 此处 . -
对于注册表扫描,待扫描的容器镜像需托管在以下受支持的注册表中:
-
AWS ECR
-
Azure容器注册表
-
Google Artifact Registry
-
任何实现Docker Registry HTTP API V2的注册表
-
-
执行注册表扫描需具备对应注册表类型的适当权限:
-
AWS ECR:
AmazonEC2ContainerRegistryReadOnly -
Azure容器注册表:
AcrPull -
Google Artifact Registry:
roles/artifactregistry.reader
-
将扫描器连接至 GravityZone
要将 Bitdefender 容器镜像扫描器连接至 GravityZone :
-
登录 GravityZone 控制中心 .
-
从左侧菜单进入 集成中心 页面。
-
在 集成目录 > Bitdefender 容器镜像扫描器 卡片中,点击 配置 .
警告
若您的用户账户不具备网络管理员权限, 配置 按钮将显示为禁用状态。此时请联系您的 GravityZone 管理员。
随后 创建集成 页面将显示。
-
在 配置 部分,选择公司并为集成输入名称。
-
确保满足 检查要求 部分列出的所有先决条件。
-
按照 下载 Bitdefender 扫描器 部分的步骤下载并运行命令行工具。
-
按照 验证 Bitdefender 扫描器 部分的步骤,通过配置服务器URL并设置访问令牌,将扫描器连接到 GravityZone 。
注意
-
要验证当前访问令牌,请运行以下命令:
bcst-cli config token view
-
要验证当前服务器URL,请运行以下命令:
bcst-cli config server view
-
-
点击 保存 .
该 Bitdefender 容器镜像扫描器卡片将显示在 集成中心 > 已配置 且状态为 需操作 。
重要提示
每家公司仅能配置 一个 Bitdefender容器镜像扫描器集成。
配置扫描器
扫描容器镜像前,请按如下步骤配置扫描器:
-
可选:通过运行以下命令设置用于下载、提取镜像及存储依赖项的工作目录。默认路径为
/tmp.bcst-cli config temp-dir set <目录路径>
注意
要验证当前工作目录,请运行此命令:
bcst-cli config temp-dir view
-
要从注册表扫描容器镜像,请确保已为特定注册表类型配置正确的凭据:
-
AWS ECR:
bcst-cli config registry login aws -i <访问密钥ID> \ -s <秘密访问密钥> -r <区域>
选项:
-
-i,--access-key-id:访问密钥ID -
-s,--secret-access-key:密钥访问密钥 -
-r,--region:区域
-
-
Azure容器注册表:
bcst-cli config registry login azr -i <客户端ID> -s <客户端密钥> \ -t <租户ID> -r <注册表端点>
选项:
-
-i,--client-id:客户端ID -
-s,--client-secret:客户端密钥 -
-t,--tenant-id:租户ID -
-r,--registry-endpoint:注册表端点重要提示
不要包含
https://不要在注册表端点中包含此前缀。
-
-
Google Artifact Registry:
bcst-cli config registry login gcp -c <凭证JSON文件路径> \ -p <项目ID> -r <区域>
选项:
-
-c,--credential-json-path:Google Cloud服务账户密钥的JSON格式文件路径 -
-p,--project-id:项目ID -
-r,--region:区域
-
-
兼容Docker的容器注册表:
bcst-cli config registry login docker -u <用户名> \ -p <密码> -s <注册表服务器主机名>
选项:
-
-u,--username:用户名 -
-p,--password:密码 -
-s,--server: 注册表服务器主机名
-
-
从tar归档文件扫描容器镜像
要扫描镜像归档文件,请运行以下命令:
bcst-cli scan image <镜像归档路径>
可选参数:
-
-o,--output: 扫描报告的文件路径。若未指定,则输出至标准输出。 -
-f,--format: 扫描报告格式。可选值:JSON,MD,SARIF。默认为JSON. -
-n,--report-name: 扫描报告名称。默认为summary.json. -
-c,--no-cache: 清除所有先前缓存的扫描结果并强制重新扫描。注意
为提高扫描性能,
bcst-cli会将结果缓存于/var/cache/bitdefender/bcst-cli目录,若镜像摘要匹配则复用缓存。若因权限不足导致缓存创建或访问失败,扫描器将无异常地继续执行新扫描。
重要提示
来自tarball归档文件的容器镜像扫描结果不会显示在 GravityZone 控制中心 ,仅保存至指定文件路径或打印至标准输出。
从注册表扫描容器镜像
可用扫描选项如下:
-
要扫描AWS ECR、Azure容器注册表或Google Artifact Registry中每个仓库最后更新的镜像,请使用对应命令:
-
AWS ECR:
bcst-cli scan registry aws
-
Azure容器注册表:
bcst-cli scan registry azr
-
Google Artifact Registry:
bcst-cli scan registry gcp
可选参数:
-r,--regex: 仓库名称正则表达式过滤器 -
-
要扫描Docker兼容容器注册表中指定仓库的最后更新镜像,请运行:
bcst-cli scan registry docker --image-repos=<仓库列表>
必需参数:
-r,--image-repos:待扫描的镜像仓库列表(以逗号分隔)
所有四个命令的可选参数:
-
-o,--output:扫描报告的文件路径。默认情况下,扫描报告将保存在当前工作目录中。 -
-f,--format:扫描报告的格式。允许取值:JSON,默认为JSON. -
-n,--report-name:扫描报告的名称。默认为<时间戳>-summary. -
-d,--dryrun:列出镜像但不执行扫描。 -
-c,--no-cache:清除所有先前缓存的扫描结果并强制重新扫描。注意
为提高扫描性能,
bcst-cli会将结果缓存至/var/cache/bitdefender/bcst-cli目录,并在镜像摘要匹配时复用缓存。若因权限不足导致缓存创建或访问失败,扫描器将自动执行全新扫描且不受影响。
扫描结果可在 风险管理 模块的 GravityZone 控制中心 .
注意
-
首次扫描完成后, Bitdefender 容器镜像扫描器卡片将显示为 活跃 状态。
-
查看首次扫描日期和时间,请检查 运行起始于 字段(位于 Bitdefender 容器镜像扫描器卡片内)。
-
验证最近扫描时间,请查阅 最后同步 字段(位于 Bitdefender 容器镜像扫描器卡片内)。
-
如需查看镜像仓库中所有容器镜像的完整扫描记录,请前往 历史日志 字段位于 Bitdefender 容器镜像扫描器卡片中,点击 查看详情 .
仅当您拥有网络管理员权限时方可访问此日志历史记录。
从注册表移除认证
完成对注册表的所有必要扫描后,请使用以下命令注销:
bcst-cli config registry logout
移除集成并卸载扫描器
要移除集成及其所有相关设置,请前往 Bitdefender 容器镜像扫描器卡片(该卡片显示于 集成中心 > 已配置 下),点击 删除 ,然后再次点击 删除 以确认操作。
重要提示
仅当您拥有网络管理员权限时方可移除集成。
要卸载扫描器,请删除先前解压的
bcst-cli
二进制文件及
~/.bcst-cli.json
文件。
编辑集成配置
若要更新已配置的 Bitdefender 容器镜像扫描器:
-
从 集成中心 > 已配置 部分点击其关联卡片。
随后将显示 编辑集成 页面。
-
如需更新 集成名称 (此为唯一可编辑字段)。
-
点击 保存 .
重要提示
仅拥有网络管理员权限的用户可编辑集成配置。
应用场景示例
-
以交互方式运行镜像扫描,并在
标准输出中查看Markdown格式的结果。前提条件:
-
bcst-cli可从PATH环境变量访问 -
从 GravityZone 集成中心 页面获取有效的访问令牌及服务器URL
-
镜像归档文件(可通过 Docker镜像保存文件 )
运行以下配置和镜像扫描命令:
bcst-cli config server set <服务器URL> bcst-cli config token set <令牌> bcst-cli scan image <镜像文件路径> -f MD
-
-
每天14:19执行AWS ECR仓库扫描,筛选包含关键词
deploy.前提条件:
-
bcst-cli可从PATH访问 -
有效的访问令牌和服务器URL(来自 GravityZone 集成中心 页面)
-
具有仓库权限的AWS IAM凭证
-
cron已安装
-
将配置和仓库扫描命令保存至新的shell脚本文件:
user@test:~$ cat > scan.sh bcst-cli config server set <服务器URL> bcst-cli config token set <令牌> bcst-cli config registry login aws \ -i <访问密钥ID> -s <秘密访问密钥> -r <区域> bcst-cli scan registry aws --regex ".*deploy.*"
-
修改新建文件的权限使其可执行:
user@test:~$ chmod +x scan.sh
-
运行以下命令以编辑模式打开crontab:
user@test:~$ crontab -e
-
将以下行插入crontab(确保替换
脚本路径变量为实际脚本文件路径):19 14 * * * <脚本路径>
-
保存更改并退出编辑器。
-
-
对Docker仓库中的Repo1、Repo2和Repo3仓库执行扫描。
前提条件:
-
bcst-cli可从PATH环境变量访问 -
来自 GravityZone 集成中心 页面
-
Docker注册表的凭据
运行以下配置和注册表扫描命令:
bcst-cli config server set <服务器URL> bcst-cli config token set <令牌> bcst-cli config registry login docker -u <用户名> -p <密码> \ -s <注册表服务器主机名> bcst-cli scan registry docker --image-repos Repo1,Repo2,Repo3
-