跳至主内容

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 :

  1. 登录 GravityZone 控制中心 .

  2. 从左侧菜单进入 集成中心 页面。

  3. 集成目录 > Bitdefender 容器镜像扫描器 卡片中,点击 配置 .

    警告

    若您的用户账户不具备网络管理员权限, 配置 按钮将显示为禁用状态。此时请联系您的 GravityZone 管理员。

    随后 创建集成 页面将显示。

  4. 配置 部分,选择公司并为集成输入名称。

  5. 确保满足 检查要求 部分列出的所有先决条件。

  6. 按照 下载 Bitdefender 扫描器 部分的步骤下载并运行命令行工具。

  7. 按照 验证 Bitdefender 扫描器 部分的步骤,通过配置服务器URL并设置访问令牌,将扫描器连接到 GravityZone

    注意

    • 要验证当前访问令牌,请运行以下命令:

      bcst-cli config token view
    • 要验证当前服务器URL,请运行以下命令:

      bcst-cli config server view
  8. 点击 保存 .

Bitdefender 容器镜像扫描器卡片将显示在 集成中心 > 已配置 且状态为 需操作

重要提示

每家公司仅能配置 一个 Bitdefender容器镜像扫描器集成。

配置扫描器

扫描容器镜像前,请按如下步骤配置扫描器:

  1. 可选:通过运行以下命令设置用于下载、提取镜像及存储依赖项的工作目录。默认路径为 /tmp .

    bcst-cli config temp-dir set <目录路径>

    注意

    要验证当前工作目录,请运行此命令:

    bcst-cli config temp-dir view
  2. 要从注册表扫描容器镜像,请确保已为特定注册表类型配置正确的凭据:

    • 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 容器镜像扫描器:

  1. 集成中心 > 已配置 部分点击其关联卡片。

    随后将显示 编辑集成 页面。

  2. 如需更新 集成名称 (此为唯一可编辑字段)。

  3. 点击 保存 .

重要提示

仅拥有网络管理员权限的用户可编辑集成配置。

应用场景示例

  • 以交互方式运行镜像扫描,并在 标准输出 中查看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 已安装

    1. 将配置和仓库扫描命令保存至新的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.*"
    2. 修改新建文件的权限使其可执行:

      user@test:~$ chmod +x scan.sh
    3. 运行以下命令以编辑模式打开crontab:

      user@test:~$ crontab -e
    4. 将以下行插入crontab(确保替换 脚本路径 变量为实际脚本文件路径):

      19 14 * * * <脚本路径>
    5. 保存更改并退出编辑器。

  • 对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