跳至主内容

Bitdefender 容器镜像扫描器

Bitdefender 容器镜像扫描器集成依赖于 bcst-cli ( Bitdefender 云安全工具命令行界面)工具,用于扫描本地tar压缩包存档或直接从容器注册表中获取的容器镜像。所有容器注册表镜像的扫描结果均会发送至 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 Container Registry: 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 并在镜像摘要匹配时复用。若因权限不足导致缓存创建或访问失败,扫描器将无异常地继续执行新扫描。

重要提示

来自压缩包归档的容器镜像扫描结果不会显示在 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. 点击 保存 .

重要提示

仅当具备网络管理员权限时方可编辑集成配置。

应用场景示例

  • 以交互方式运行镜像扫描,并在 stdout 中查看Markdown格式的扫描结果。

    前提条件:

    • bcst-cli 可从PATH环境变量访问

    • 有效的访问令牌及服务器URL需从 GravityZone 集成中心 页面获取

    • 镜像归档文件(可通过 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访问

    • 有效的访问令牌和服务器URL,来自 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