卡巴斯基容器安全

设置与外部镜像仓库的集成

卡巴斯基容器安全可以扫描以下外部镜像仓库中的镜像:

  • Harbor
  • GitLab 仓库
  • JFrog Artifactory
  • Sonatype Nexus Repository OSS
  • Yandex Registry
  • Docker Hub
  • Docker 仓库

您应该将卡巴斯基容器安全与包含要扫描的镜像的外部仓库集成。可以自动或手动扫描与卡巴斯基容器安全集成的仓库中的镜像,具体取决于为每个仓库配置的镜像拉取和扫描设置。

本节帮助内容

与仓库的集成的最低充分权限

未经授权使用公共仓库

添加与外部镜像仓库的集成

查看有关与仓库的集成的信息

删除与外部仓库的集成

Harbor 集成

页首
[Topic 259061]

与仓库的集成的最低充分权限

要与外部镜像仓库集成,卡巴斯基容器安全账户必须拥有一组特定权限,这些权限根据仓库类型的不同而有所不同。下面列出了每种仓库类型的集成所需的最低账户权限。

GitLab

要将解决方案与 GitLab 用户仓库集成,您需要定义如下参数值:

  • 项目或组中的用户角色:报告人
  • 项目访问级别:报告人
  • 分配给用户令牌的权限:read_api、read_registry

JFrog

要将解决方案与 JFrog 用户的仓库集成,您需要定义如下所示的参数值:

  • 项目或组中的用户角色:管理报告
  • 项目访问权限:可以更新配置文件
  • 用户权限:读取任何存储库的权限ANY 存储库)。

Harbor

要将解决方案与 Harbor 用户仓库集成,您需要定义如下参数值:

  • 成员类型:用户。为此,请在“项目成员”部分的表的“成员类型”列中指定“用户”。
  • 项目或组中的用户角色:权限有限的用户。为此,您必须在“项目成员”部分的表的“角色”列中指定“受限来宾”。
  • 用户权限:无管理员权限的用户。为此,请在“用户”部分的表的“管理员”列中选择“”。

Nexus

要将解决方案与 Nexus 用户仓库集成,您需要定义如下参数值:

  • 项目或组中的用户角色:用户
  • 分配给项目或组中用户角色的权限:nx-apikey-all、nx-repository-view-docker-*-browse、nx-repository-view-docker-*-read

Docker Hub

在使用用户名和密码进行授权后,解决方案即与 Docker Hub 用户的仓库集成。

此 Docker Hub 仓库集成选项仅适用于个人命名空间。

页首
[Topic 265977]

未经授权使用公共仓库

未经授权,卡巴斯基容器安全 1.2 无法使用公共仓库。例如,匿名访问 Docker Hub 时,您无法使用该解决方案来扫描镜像。

如果您未在公共仓库中授权,则可以在集群中使用此类镜像仓库,将它们添加到卡巴斯基容器安全,并手动将其分配到特定范围。如果范围仅包含一个或多个您无权使用的公共仓库,并且您尝试在“资源资产仓库”部分中添加镜像,则解决方案将显示错误(指示无法添加镜像),因为该解决方案未与镜像仓库集成。

页首
[Topic 267912]

添加与外部镜像仓库的集成

集成的仓库仅支持直接包含镜像的本地镜像存储库。在版本 1.2 中,卡巴斯基容器安全不支持使用远程或虚拟存储库。

要添加与外部仓库的集成:

  1. 在“管理集成镜像仓库”部分中,单击“添加仓库”按钮

    将打开集成设置窗口。

  2. 在“仓库详细信息”选项卡上,指定连接到仓库的设置:
    1. 输入仓库的名称。
    2. 如果需要,请输入仓库的描述。
    3. 从下拉列表中选择仓库类型。卡巴斯基容器安全支持以下类型的仓库:
      • Harbor(使用 Harbor V2 API 进行集成)。
      • GitLab Registry(使用 GitLab Container Registry API 进行集成)。
      • JFrog Artifactory(使用 JFrog API 进行集成)。
      • Sonatype Nexus Repository OSS(使用 Nexus API 进行集成)。
      • Yandex Registry(使用 Yandex Container Registry API 进行集成)。
      • Docker Hub(使用 Docker Hub API 进行集成)。
      • Docker Registry(使用 Docker V2 API 进行集成)。

      如果您正在配置与 Sonatype Nexus Repository OSS、Harbor、JFrog Artifactory(使用端口或子域)或 Yandex Registry 的集成,可以使用 Docker V2 API 访问 Docker 仓库。与 GitLab Registry、Docker Hub 和 JFrog Artifactory 进行集成(通过存储库路径) 不受支持。

    4. 如果您设置了 JFrog Artifactory 注册表集成,请在“存储库路径”方法下拉列表中选择以下方法之一来访问 Docker:
      • 存储库路径
      • 子域
      • 端口
    5. 如果您配置与 JFrog Artifactory、Harbor、GitLab Registry、Sonatype Nexus Repository OSS 或 Docker Registry 等仓库的集成,请输入直接指向容器仓库的完整仓库网址 (URL)。我们建议使用 HTTPS 连接(也支持 HTTP 连接)。

      如果使用 HTTP 或者带自签名证书或无效证书的 HTTPS,则应在安装了服务器和扫描器的节点上选中 Docker 引擎的不安全仓库框。

    6. 如果您配置与 JFrog Artifactory、Harbor、GitLab Registry 和 Sonatype Nexus Repository OSS 等仓库的集成,请输入直接指仓库 API 的完整仓库网址 (URL)。
    7. 选择一种身份验证方法并指定必要的数据,如下所示:
      • 如果您配置与 GitLab Registry 等仓库的集成,请选择使用帐户或访问令牌进行身份验证。
      • 如果您配置与 Yandex Registry 等仓库的集成,请选择使用 API 密钥(Yandex OAuth 令牌)或使用用户名和令牌进行身份验证。使用 Yandex OAuth 令牌时,为用户名指定oauth;使用 Yandex IAM 令牌时,为用户名指定iam
      • 对于 Sonatype Nexus Repository OSS 和 Docker Hub 等仓库,仅使用账户进行身份验证。
      • 对于像 Harbor 这样的仓库,只允许使用用户或机器人的账户进行身份验证。
      • 对于Docker Registry 这样的仓库,身份验证仅使用用户名和密码进行,用户名和密码由 Docker V2 API 提供。
  3. 转到“镜像扫描详细信息”选项卡,并指定扫描此仓库中镜像的扫描超时(以分钟为单位)。

    如果镜像扫描持续时间超过指定时间,扫描将停止,并且镜像将返回扫描队列。解决方案会将镜像重新排队最多 3 次。这意味着扫描仓库中镜像所需的时间可能会增加两倍。

  4. 配置仓库的镜像拉取和扫描设置。默认情况下,在“拉取并扫描镜像”中已选择“手动”选项:镜像不会自动从仓库中拉取,但用户可以手动将镜像添加到镜像列表中进行扫描。新镜像会自动排队等待扫描。

    如果您希望自动从仓库中拉取镜像并使其排队等待扫描,请在“拉取并扫描镜像”中选择“自动”,并配置镜像拉取和扫描的设置。以下选项可用:

    • 扫描超时 – 一组用于确定从仓库中拉取镜像进行扫描的频率的设置。根据部署了卡巴斯基容器安全服务器的节点上的时间来指定该时间。
    • 重新扫描镜像 – 如果选中此框,则每次扫描新镜像时都会重新扫描之前从仓库中拉取的镜像。
    • 名称/标签标准 – 您可以使用名称标准和/或镜像标签模式来指定要拉取和扫描的镜像。如果选中此框,则卡巴斯基容器安全将仅拉取与指定模式匹配的镜像并进行扫描。

      您可以按以下模式使用条件:

      • 按镜像名称和标签 – <名称><:标签>
      • 仅按镜像名称 – <名称>
      • 仅按镜像标签 – <:标签>

      例如:

      • 对于 alpine 模式,所有名称为“alpine”的镜像都会被拉取,无论标签为何;
      • 对于 4 模式,所有带有标签 4 的镜像都会被拉取,无论镜像名称为何;
      • 对于 alpine:4 模式,所有名称为“alpine”且带有标签 4 的镜像都会被拉取。

      生成标准时,可以使用 * 字符来替代任意数量的字符。

      要添加标准,请在字段中输入该条件,然后单击“添加”按钮。您可以添加一项或多项标准。

    • 镜像拉取的附加条件。
      • 如果不需要附加条件,请选择“无附加条件
      • 期间内创建的镜像 – 如果您希望仅拉取在特定期间(指定天数、月数或年数)内创建的镜像,请选择此选项。在右侧字段中指定期间长度和计量单位。默认情况下,期间为 60 天。
      • 最新 – 如果您希望仅拉取带有最新标签的镜像(从镜像创建日期算起),请选择此选项。在右侧字段中,指定要考虑的最新标签数量。
    • 从不拉取具有名称/标签模式的镜像 – 使用您可以指定的镜像名称/标签模式,这些镜像将从拉取和扫描中排除。
    • 始终拉取具有名称/标签模式的镜像 – 使用您可以指定的镜像名称/标签模式,始终拉取和扫描这些镜像,无论上面设置的其他条件如何。
  5. 单击“测试连接”以查看是否可以建立与仓库的连接。
  6. 单击窗口顶部的“保存”按钮保存仓库集成设置。
页首
[Topic 275116]

查看有关与仓库的集成的信息

您可以在“管理集成镜像仓库”部分中查看与卡巴斯基容器安全集成的所有仓库的列表表格。

该表显示有关集成仓库的以下信息:

  • 镜像仓库集成的名称
  • 描述(如果在创建与镜像仓库的集成时曾指定)
  • 连接的仓库类型:Docker、Harbor、GitLab、JFrog 或 Nexus
  • 仓库 URL
  • 最后一次连接到镜像仓库的状态:成功错误。如果显示错误,解决方案还会显示连接错误的简要描述。

在表格中,您可以:

  • 添加新的仓库集成。单击表格上方的“添加仓库”以打开集成设置窗口。
  • 查看和修改仓库集成设置,包括镜像拉取和扫描设置。您可以单击仓库名称链接来打开编辑窗口。

    在此窗口中,您还可以单击“测试连接”以查看是否可以与仓库建立连接。

  • 删除与仓库的集成
页首
[Topic 274589]

删除与外部仓库的集成

要删除与外部仓库的集成:

  1. 在“管理集成镜像仓库”部分中,通过选中包含仓库名称的行中的复选框来选择要删除的集成。您可以选择一个或多个集成。
  2. 单击表格上方的删除

    选择一个或多个集成后, “删除”按钮将变为启用状态。

  3. 在打开的窗口中,确认删除。

卡巴斯基容器安全不会扫描不再与其集成的仓库中的镜像。

页首
[Topic 274590]

Harbor 集成

卡巴斯基容器安全与外部 Harbor 仓库的集成通过两种方式进行:

Harbor 将解决方案视为一个附加的外部扫描器,用于扫描对象中是否存在漏洞。与卡巴斯基容器安全的集成使用 Harbor 扫描器插件进行配置。该解决方案将这个自动创建的镜像仓库命名为Harbor External Integration,并使用 Harbor 图标(Harbor 仓库图标。)标记其所在的存储库。

此集成仍然是唯一自动创建的 Harbor 集成,并且分配给镜像仓库的名称无法更改。

要启动 Harbor 扫描进程,您需要知道卡巴斯基容器安全 API 的端点。

要通过 Harbor 请求创建集成,需要有在 CI/CD 中查看和配置扫描的权限。如果缺少这些权限,Harbor 将无法将解决方案连接为扫描仪并作为CI/CD 进程的一部分扫描对象。

页首
[Topic 272923]

根据 Harbor 请求创建集成

要通过 Harbor 请求创建仓库集成,您必须拥有具有管理员权限的 Harbor 帐户,以及在卡巴斯基 Container Security 中查看和配置 CI/CD 中的扫描的权限。如果没有这些权限,Harbor 将无法将该解决方案作为扫描仪连接。

要在请求 Harbor 时创建 Harbor 集成:

  1. 从 Harbor Web 界面左侧窗格的主菜单中,选择“管理”“询问服务”
  2. 单击新扫描仪按钮。
  3. 输入以下信息:
    • 在 Harbor 界面上显示的解决方案集成的唯一名称。
    • 如果有必要,正在被添加的外部扫描器的描述。
    • Harbor 显示的卡巴斯基容器安全 API 端点的地址。
  4. 授权下拉列表中,选择APIKey作为将仓库连接到解决方案时的授权方法。
  5. APIKey字段中,输入API 令牌的值

    如果 API 令牌发生变化,则必须在开始 Harbor 扫描之前指定其新值。如果未在 Harbor 中的外部扫描器设置中添加新的 API 令牌,则扫描失败。

  6. 选择跳过证书验证复选框以跳过证书验证。
  7. 如有必要,单击“测试连接”验证 Harbor 是否可以连接到解决方案。
  8. 单击“添加”创建集成。

管理询问服务扫描仪下的可用扫描仪列表中,Harbor 显示分配给 Harbor 中解决方案的名称。

如果新的扫描仪在 Harbor 中被指定为默认扫描仪或被分配给项目,则它将被用于扫描对象。这两个选项都需要在 Harbor 中进行额外配置。

扫描启动后,将在外部仓库中创建通过 Harbor 请求与解决方案的集成。卡巴斯基容器安全在管理集成镜像仓库部分的镜像仓库列表中,显示已创建的 Harbor External Integration 仓库。包含来自外部仓库的镜像的存储库标有Harbor图标 (Harbor 仓库图标。 )。在外部仓库中启动并运行另一次扫描后,Harbor External Integration 会进行更新。

您无法使用管理控制台中的添加镜像按钮将镜像添加到 Harbor 自动创建的镜像仓库中。

Harbor External Integration 扫描可以手动启动,也可以从外部仓库自动启动。您无法从卡巴斯基容器安全中的 Harbor 自动创建的镜像仓库中开始扫描或重新扫描镜像。

Harbor 外部集成仓库(以及作为与 Harbor 标准集成的一部分创建的仓库)根据适用的扫描器策略进行扫描。

在扫描结束时,解决方案会生成在扫描选定对象期间发现的漏洞的报告并将其发送给 Harbor。如果发送报告需要超过五秒(例如,由于网络连接质量),则在外部注册表界面中会显示接收扫描结果的错误。

页首
[Topic 273008]

查看和编辑 Harbor External Integration 设置

Harbor External Integration 镜像仓库显示在管理 → 集成镜像仓库部分中与卡巴斯基容器安全集成的注册表列表中

要更改 Harbor External Integration 设置:

  1. 管理 → 集成镜像仓库部分的镜像仓库列表中,选择 Harbor External Integration 仓库。
  2. 指定以下可配置设置的值:
    • 仓库详细信息选项卡上的描述
    • 镜像扫描详细信息选项卡上的扫描超时

    您不能更改其他 Harbor External Integration 注册表详细信息。

  3. 单击“保存”。
页首
[Topic 273028]

重新扫描

收到扫描结果后,无法将 Harbor External Integration 仓库中的对象发送给卡巴斯基容器安全进行重新扫描。重新扫描只能从 Harbor 发起。

如果您从卡巴斯基容器安全创建与 Harbor 的集成,并且创建的镜像仓库与 Harbor External Integration 类似,则以下规则将被应用于重新扫描:

  • 扫描解决方案中创建的仓库中的对象不会触发 Harbor External Integration 中重新扫描。
  • 扫描 Harbor External Integration 中的对象不会触发在解决方案中创建的仓库中重新扫描。
页首
[Topic 273010]