卡巴斯基容器安全

目录

与第三方资源的集成

为了识别安全问题并确保对容器化应用程序的保护,卡巴斯基容器安全可以与以下第三方资源集成:

  • 外部镜像仓库。该解决方案允许扫描托管在存储库管理和存储平台上的容器和 IaC 镜像(包括作为 CI/CD 进程的一部分),以查找是否存在漏洞、恶意软件、错误配置和敏感数据。
  • 镜像签名验证器。卡巴斯基容器安全可以使用外部签名应用程序验证镜像的数字签名。
  • 输出。在实施响应策略时,解决方案可以通过电子邮件或 Telegram 发送消息通知用户有关安全事件。
  • 外部 LDAP 目录服务。在定义用户角色和范围时,解决方案允许根据来自外部目录服务的数据配置用户帐户,并将用户角色映射到 Active Directory 中的用户组。
  • SIEM 系统。卡巴斯基容器安全允许连接到安全信息与事件管理系统,以就事件发出通知用于分析和进一步应对潜在威胁。
  • HashiCorp Vault 外部存储。该解决方案允许通过 HashiCorp Vault 安全地存储和使用密码、令牌和机密。

本节帮助内容

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

与 CI/CD 的集成

配置与镜像签名验证器的集成

设置与通知输出的集成

配置 LDAP 服务器集成

配置与 SIEM 系统的集成

与 HashiCorp Vault 集成

页首
[Topic 282364]

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

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

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

    与 Docker Registry 集成需要外部仓库服务器端的 Docker Registry V2 API 的支持。

  • Red Hat Quay
  • Amazon Elastic Container Registry

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

本节帮助内容

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

未经授权使用公共仓库

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

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

删除与外部仓库的集成

Harbor 集成

根据 Harbor 请求创建集成

查看和编辑 Harbor External Integration 设置

重新扫描

页首
[Topic 292431]

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

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

GitLab

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

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

JFrog Artifactory

要将解决方案与 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 仓库集成选项仅适用于个人命名空间。

RedHat Quay

要将解决方案与 RedHat Quay 用户仓库集成,需要以下权利和权限:

  • 正确操作测试连接功能的用户权限:具有管理组织权限的用户。
  • 查看所有可见存储库权限。
  • 读/写任何可访问的存储库权限。

Yandex

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

  • 项目或组中的用户角色:container-registry.viewer
  • 授予项目或组中的用户角色的权限:查看容器仓库。

Amazon Elastic Container Registry

要将解决方案与 Amazon Elastic Container Registry 用户仓库集成,您应该定义如下参数值:

  • 用于访问项目或组的 AWS 策略: AmazonEC2ContainerRegistryReadOnly
  • 授予项目或组中的用户角色的权限:查看和读取。
页首
[Topic 295773]

未经授权使用公共仓库

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

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

页首
[Topic 294428]

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

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

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

  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 Registry V2 API 进行集成)。
      • Red Hat Quay(使用 Red Hat Quay API 集成)。
      • Amazon Elastic Container Registry(使用 Amazon Elastic Container Registry API 进行进程)。

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

    4. 如果您设置了 JFrog Artifactory 注册表集成,请在“存储库路径”方法下拉列表中选择以下方法之一来访问 Docker:
      • 存储库路径
      • 子域
      • 端口
    5. 如果配置与 Sonatype Nexus Repository OSS 仓库的集成,请选择拉取模式:标记的镜像所有镜像。如果选择了所有镜像模式,解决方案将提取所有仓库镜像,无论它们是否有标签。未标记的镜像与内部版本哈希一起显示。
    6. 如果配置与 JFrog Artifactory、Harbor、GitLab Registry、Sonatype Nexus Repository OSS、Docker Registry 或者 Red Hat Quay 等仓库的集成,请输入直接指向容器仓库的仓库的完整 URL。我们建议使用 HTTPS 连接(也支持 HTTP 连接)。

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

    7. 如果配置与 JFrog Artifactory、Harbor、GitLab Registry、Sonatype Nexus Repository OSS 或者 Red Hat Quay 等仓库的集成,请输入指向仓库 API 的完整 URL。
    8. 选择一种身份验证方法并指定必要的数据,如下所示:
      • 如果您配置与 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 提供。
      • 对于 Red Hat Quay 仓库,组织名称和访问令牌是唯一的身份验证方法。请在组织名称OAuth 令牌字段中指定这些参数。
      • 对于 Amazon Elastic Container 仓库,您可以通过指定地区、访问密钥 ID 和 Secret 访问密钥进行身份验证。

        地区字段中,您必须指定一个 Amazon Web Services 地区(例如, us-west-2 或 us-east-2)。

        对于访问密钥 ID访问密钥设置,您必须使用 AWS 管理控制台指定可以获取的值。

  3. 必要时,转到存储库缓存 选项卡并使用已禁用/已启用拨动开关来启用存储库缓存。如果缓存被禁用,则仅当使用搜索字段时才会显示仓库部分中的存储库和镜像。如果缓存已启用,解决方案将显示可用的存储库和镜像列表。默认储存库被禁用。

    启用存储库缓存可能影响卡巴斯基容器安全的性能。

  4. 转到镜像扫描详情选项卡并指定以下镜像扫描设置:
    • 对于此仓库的镜像的扫描超时(以分钟为单位)。默认扫描超时为 60 分钟。

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

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

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

      • 扫描间隔(天)是供扫描的仓库的镜像拉取间隔(以天为单位)。默认设置为 1 天。
      • 扫描时间 (GMT) 是仓库中的镜像被扫描的时间。
      • 如有必要,每次扫描新镜像时选择复选框重新扫描之前拉取的镜像。
      • 如有必要,在高级设置下面,选择名称 / 标签标准复选框来使用镜像名称或标签样式指定想要拉取或扫描的镜像。如果选中此复选框,卡巴斯基容器安全将仅拉取与指定模式匹配的镜像并进行扫描。

        您可以使用以下模式:

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

        例如:

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

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

        您可以添加一个或多个模式。

      • 选择附加条件之一拉取镜像:
        • 如果不需要附加条件,请选择“无附加条件
        • 如果您只想拉取在特定时间框架内创建的镜像,请选择此选项并在右侧的字段中指定时间段的持续时长和计量单位。默认情况下,期间为 60 天。
        • 如果您只想拉取包含最新标签的镜像,从创建镜像的日期开始计数,选择此选项并在右侧的字段中指定想要考虑多少个每个仓库的最新标签。
      • 如有必要,在例外下面,选择或者清除复选框以指定镜像拉取的例外:
        • 从不拉取具有名称/标签模式的镜像 – 使用您可以指定的镜像名称/标签模式,这些镜像将从拉取和扫描中排除。
        • 始终拉取具有名称/标签模式的镜像 – 使用您可以指定的镜像名称/标签模式,始终拉取和扫描这些镜像,无论上面设置的其他条件如何。
  5. 单击“测试连接”以查看是否可以建立与仓库的连接。
  6. 单击窗口顶部的“保存”按钮保存仓库集成设置。

Red Hat Quay 仓库集成设置示例

{

"form": {

"registryName": "http://quay.io ",

"registryType": "quay",

"description": "Test",

"repositoryPathMode": "",

"registryUrl": "https://quay.io ",

"apiUrl": "https://quay.io ",

"authenticationType": "access_token",

"apiKey": "",

"username": "test-organization",

"accessToken": "{{quayIOToken}}",

"scanTimeout": 100,

"scheduleType": "manual",

"schedulePeriod": 2,

"scheduleTime": 10,

"rescanExistingImages": true,

"pullAndScanTags": [],

"additionalConditions": 0,

"imagesCreatedWithinType": "days",

"imagesCreatedWithinCount": 1,

"latestTagsCount": 5,

"neverPullTags": [],

"alwaysPullTags": [],

"cacheRebuildPeriod": 15

}

}

页首
[Topic 292488]

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

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

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

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

在表格中,您可以:

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

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

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

删除与外部仓库的集成

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

  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]

与 CI/CD 的集成

卡巴斯基容器安全性允许您在

中扫描驻留在代码存储库管理系统中的容器和 IaC 的镜像,以检测漏​​洞、恶意软件、错误配置和暴露的敏感数据。

在存储库管理系统的项目构建阶段,您可以运行卡巴斯基容器安全扫描器来检查存储库中的对象是否符合已启用的安全策略。扫描器通过代理(例如 GitLab 中的 GitLab Runner)从仓库启动。有关扫描作业和发送扫描结果的的数据通过应用程序编程接口 (API) 转发。

在项目构建阶段运行对象扫描时,必须确保在应用的保障策略的设置中未选择“使 CI/CD 失效”步骤。如果激活此设置,解决方案将在扫描期间通知您出错。

扫描结果显示在“清单CI/CD在 CI/CD 中扫描”部分的镜像列表中。

对于表中的每个对象,卡巴斯基容器安全都显示以下内容:

  • 上次扫描的日期和时间。
  • 名称。
  • 风险评级。
  • 摘要扫描结果,指示与漏洞、恶意软件、敏感数据和错误配置相关的已识别对象。
  • 构件类型。
  • 在其中扫描镜像的构建的编号和管道。

在“资源CI/CD → 在 CI/CD 中扫描”部分中,还可以生成有关在 CI/CD 进程内扫描的镜像的报告。

仅针对镜像构件类型的对象生成报告。在此部分中,无法为其他类型的构件生成报告。

本节帮助内容

在 CI/CD 进程中扫描构件

配置与 GitLab CI/CD 的集成

配置与 Jenkins CI/CD 的集成

配置与 TeamCity CI/CD 的集成

定义容器镜像的路径

监控镜像的完整性和来源

在 SBOM 模式下运行扫描器

在精简版 SBOM 模式下运行扫描器

获取 JSON 或 HTML 格式的扫描结果

开始扫描时指定 Secret

页首
[Topic 267228]

在 CI/CD 进程中扫描构件

卡巴斯基容器安全允许您扫描 CI/CD 中使用的镜像。要从 CI/CD 扫描镜像,您应该配置卡巴斯基容器安全与 CI/CD 过程的集成。

通过监听和拦截网络流量获得的数据必须在 CI/CD 环境和解决方案之间安全传输。

要扫描 CI/CD 过程中使用的镜像或存储库(为了扫描配置文件),请向运行卡巴斯基容器安全扫描器的 CI/CD 管道添加一个阶段。

要从 CI/CD 扫描镜像,请在用于集成存储库的配置文件中,指定扫描器的 API_BASE_URL( 卡巴斯基容器安全 API 服务器的网址)和 API_TOKEN(用于访问卡巴斯基容器安全 API 的令牌)环境变量。您还必须指定API_CA_CERT(用于验证 API 解决方案的主机服务器的证书)或SKIP_API_SERVER_VALIDATION=true以跳过此扫描。

扫描结果将被转发到服务器并显示在管理控制台的“资源CI/CD”部分中。提供的表格会列出被扫描的镜像,显​示风险评估的结果,并指示检测到的漏洞。

您可以单击镜像名称链接来打开包含镜像扫描结果详细信息的页面。此页面类似于显示仓库镜像扫描结果的页面

卡巴斯基容器安全还显示每个对象的构件的类型。使用两种主要构件:

  • 文件系统是包含配置文件的存储库。
  • 容器镜像是用于容器运行时实现的模板。

对于每个扫描对象,您可以指定内部版本编号(BUILD_NUMBER)和内部版本

BUILD_PIPELINE)。这些参数可用于确定对象失效的具体阶段。

对于 CI/CD 镜像,不提供重新扫描。

卡巴斯基容器安全在 CI/CD 中执行以下类型的扫描:

  • 扫描镜像仓库中的镜像。该解决方案在成功内部版本后运行扫描并将镜像保存到镜像仓库中。
  • 扫描 TAR 存档中的镜像。TAR 存档存储为内部版本构件,解决方案将在下一个构建管道中扫描该构件。
  • 扫描 Git 存储库,可以通过以下方式之一执行:
    • 针对 Git 存储库中的项目分支(单个开发路径)
    • 针对提交(项目时间线中的状态快照或检查点)

要扫描镜像仓库的镜像:

运行以下格式的命令来启动扫描:

/scanner [TARGET] --stdout

其中:

  • <TARGET> – 注册表中映像的完整地址。
  • <--stdout> 是到安全事件日志的输出。

要访问注册表,您必须在环境变量中设置登录名COMPANY_EXT_REGISTRY_USERNAME和密码(令牌)COMPANY_EXT_REGISTRY_PASSWORD
要使用证书与注册表建立安全连接,您必须在 COMPANY_EXT_REGISTRY_TLS_CERT 环境变量中将证书详细信息指定为 .PEM 格式的以下字符串: -----BEGIN CERTIFICATE-----\n... 证书数据 > ...\n-----END CERTIFICATE-----

GitLab CI/CDJenkins CI/CD中扫描镜像的示例。

要从 TAR 存档扫描镜像:

  1. 使用任何用于创建容器化镜像的应用程序构建镜像并将其保存为 TAR 存档。
  2. 运行以下格式的命令来启动扫描:

    /scanner [TARGET] --file --stdout

    其中:

    • <TARGET> – 包含要扫描的镜像的文件的路径。
    • <--file> – 表示扫描TARGET文件的标志。
    • <--stdout> 是到安全事件日志的输出。

    包含用于扫描 TAR 存档的设置的配置文件示例

    stages:

    - build_tar

    - scan_tar

    - push_image

    build_tar:

    stage: build_tar

    tags:

    - k8s

    - docker

    image:

    name: gcr.io/kaniko-project/executor:v1.9.0-debug

    entrypoint: [""]

    dependencies:

    - scan_source_branch

    - scan_source_commit

    script:

    - mkdir -p /kaniko/.docker

    - echo "${DOCKER_AUTH_CONFIG}" > /kaniko/.docker/config.json

    - /kaniko/executor

    --context "${CI_PROJECT_DIR}"

    --dockerfile "${CI_PROJECT_DIR}/Dockerfile"

    --destination "${CI_REGISTRY_IMAGE}:${CI_COMMIT_REF_NAME}"

    --compressed-caching=false

    --build-arg GITLAB_USER=gitlab-ci-token

    --build-arg GITLAB_TOKEN=${CI_JOB_TOKEN}

    --no-push

    --tarPath=image.tar

    artifacts:

    paths:

    - image.tar

    expire_in: 2 hours

    scan_tar:

    stage: scan_tar

    tags:

    - k8s

    - docker

    dependencies:

    - build_tar

    image:

    name: "company.gitlab.cloud.net:5050/companydev/example/scanner:master-with-db"

    pull_policy: always

    entrypoint: [""]

    variables:

    API_BASE_URL: ${API_BASE_URL}

    API_TOKEN: ${API_TOKEN}

    API_CA_CERT: ${KCS_CA_CERT}

    script:

    - /scanner image.tar --file --stdout

    artifacts:

    paths:

    - image.tar

    expire_in: 2 hours

    push_image:

    stage: push_image

    tags:

    - k8s

    image:

    name: gcr.io/go-containerregistry/crane:debug

    entrypoint: [""]

    dependencies:

    - scan_tar

    script:

    - mkdir -p $HOME/.docker

    - echo "${DOCKER_AUTH_CONFIG}" > $HOME/.docker/config.json

    - /ko-app/crane push image.tar "${CI_REGISTRY_IMAGE}:${CI_COMMIT_REF_NAME}"

要扫描 Git 存储库:

  1. 在 Git 存储库的配置文件中,在环境变量中指定用于访问存储库的令牌(GITHUB_TOKENGITLAB_TOKEN)。
  2. 运行以下格式的命令来启动扫描:

    /scanner [TARGET] --repo [--branch BRANCH] [--commit COMMIT] --stdout

    其中:

    • <TARGET> – Git 存储库的网址 (URL)。
    • <--repo> – 表示扫描TARGET文件的标志。
    • <--branch BRANCH> – 要扫描的存储库的分支。
    • <--commit COMMIT> – 要扫描的提交所对应的哈希值。
    • <--stdout> 是到安全事件日志的输出。

    带环境变量的配置文件示例,用于从 Git 存储库扫描镜像

    stages:

    - scan_source_branch

    - scan_source_commit

    scan_source_branch:

    stage: scan_source_branch

    image:

    name: "company.gitlab.cloud.net:5050/companydev/example/scanner:master-with-db"

    pull_policy: always

    entrypoint: [""]

    tags:

    - k8s

    - docker

    variables:

    API_BASE_URL: ${API_BASE_URL}

    API_TOKEN: ${API_TOKEN}

    API_CA_CERT: ${KCS_CA_CERT}

    script:

    - GITLAB_TOKEN=${CI_JOB_TOKEN} /scanner --repo ${CI_REPOSITORY_URL} --branch ${CI_COMMIT_BRANCH} --stdout

    scan_source_commit:

    stage: scan_source_commit

    image:

    name: "company.gitlab.cloud.net:5050/companydev/example/scanner:master-with-db"

    pull_policy: always

    entrypoint: [""]

    tags:

    - k8s

    - docker

    variables:

    API_BASE_URL: ${API_BASE_URL}

    API_TOKEN: ${API_TOKEN}

    API_CA_CERT: ${KCS_CA_CERT}

    script:

    - GITLAB_TOKEN=${CI_JOB_TOKEN} /scanner --repo ${CI_REPOSITORY_URL} --commit ${CI_COMMIT_SHA} --stdout

要扫描

文件系统,您必须使用带有vX.XX-with-db数据库的扫描器镜像。要扫描 IaC 文件,必须授予扫描器访问容器内文件的权限(例如,通过安装包含文件的卷或将文件复制到容器文件系统)。

要扫描文件系统,

运行以下格式的命令来启动扫描:

/scanner [TARGET] --sources --stdout

其中:

  • <TARGET>– 用于扫描的文件夹的路径
  • <--sources> 指示需要扫描文件系统中的文件的标志
  • <--stdout> 是到安全事件日志的输出。

配置文件示例,包含用于扫描文件系统中文件的变量

下列以下情况的变量:在扫描期间,扫描器使用CI_PROJECT_DIR变量访问位于本地文件系统中的 GitLab 项目文件。

scan_folder:

stage: scanner

image:

name: repo.kcs.kaspersky.com/images/scanner:v2.0.0-with-db

entrypoint: [""]

tags:

- k8s

variables:

SCAN_TARGET: ${CI_PROJECT_DIR}

BUILD_NUMBER: ${CI_JOB_ID}

BUILD_PIPELINE: ${CI_PIPELINE_ID}

API_BASE_URL: ${API_BASE_URL}

API_TOKEN: ${API_TOKEN}

SKIP_API_SERVER_VALIDATION: 'true'

script:

- /bin/sh /entrypoint.sh $SCAN_TARGET --sources --stdout

扫描结果可以在“资源CI/CD”中查看,或以 .SPDX、.JSON 和 .HTML 格式下载。

页首
[Topic 296997]

配置与 GitLab CI/CD 的集成

此示例使用特定的扫描器镜像,其内置漏洞数据库位于卡巴斯基容器安全制造商的镜像仓库中。

要在 GitLab CI/CD 过程中使用镜像扫描功能,您应该启用 GitLab 容器仓库

集成配置包括以下步骤:

  1. 对卡巴斯基容器安全制造商的镜像仓库中的 GitLab CI/CD 授权。
    1. 在集群操作员的工作站上,运行以下命令准备授权数据的 Base64 哈希:

      printf "login:password" | openssl base64 -A

      其中 login 和 password 是卡巴斯基容器安全制造商的镜像仓库中账户的用户名和密码。

    2. 在 GitLab CI/CD 环境变量中,创建 DOCKER_AUTH_CONFIG 变量(在 GitLab 存储库中选择“设置 → CI/CD”,单击“展开”按钮展开变量 ,然后单击“添加变量”按钮)。
    3. 按以下形式指定变量:

      {

      "auths": {

      "repo.cloud.example.com": {

      "auth": "base64hash"

      }

      }

      }

      其中 base64hash 是步骤 1a 中获得的字符串。

  2. 将数据发送到卡巴斯基容器安全时对来自 GitLab CI/CD 的请求进行授权。
    1. 复制“我的个人资料”页面上的 API 令牌。
    2. 在 .gitlab-ci.yml 配置文件的 API_TOKEN 变量中指定复制的 API 令牌值。
  3. 将镜像扫描阶段添加到 CI/CD 过程中。

    要将扫描添加到 CI/CD 管道,您应该将以下行添加到 .gitlab-ci.yml 文件中:

    1. 在代码构建阶段后,按以下形式添加有关包含漏洞和其他恶意对象数据库的扫描器镜像的信息:

      scan_image:

      stage: scanner

      image:

      name: repo.cloud.example.com/repository/company/scanner:v2.0-with-db

      entrypoint: [""]

      pull_policy: always

      我们建议始终指定 pull_policy 参数,以便在每次扫描时接收包含更新的漏洞和其他恶意对象数据库的相关构建。

    2. 指定用于对卡巴斯基容器安全的 CI/CD 扫描器请求进行授权的标签、内部版本 ID、管道 ID 和 API 令牌,如下所示:

      SCAN_TARGET: ${CI_REGISTRY_IMAGE}:master

      BUILD_NUMBER: ${CI_JOB_ID}

      BUILD_PIPELINE: ${CI_PIPELINE_ID}

      API_TOKEN: <API token value>

      下面的示例包含master(主)标签,您还可以指定其他标签。

    3. 如果为私有存储库配置扫描,请指定授权数据以确保扫描器能够访问镜像。授权数据可以设置为变量

      COMPANY_EXT_REGISTRY_USERNAME: ${COMPANY_EXT_REGISTRY_USERNAME}

      COMPANY_EXT_REGISTRY_PASSWORD: ${COMPANY_EXT_REGISTRY_PASSWORD}

    4. 要使用证书与注册表建立安全连接,请将COMPANY_EXT_REGISTRY_TLS_CERT环境变量中的证书数据指定为 .PEM 格式的字符串:

      -----BEGIN CERTIFICATE-----\n... <证书详细信息> ...\n-----END CERTIFICATE-----.

    5. 指定以下用于通过代理服务器进行通信的参数:

      HTTP_PROXY<用于 HTTP 请求的代理服务器>

      HTTPS_PROXY<用于 HTTPS 请求的代理服务器>

      NO_PROXY<要从代理范围排除的域或合适的域掩码>

    6. 如需要,请指定一个变量,以使用入口控制器的 CA 证书检查 CI/CD 中的数据接收服务器:
      API_CA_CERT: ${KCS_CA_CERT}

      Ingress 控制器的 CA 证书在文本字段中指定为 .PEM 格式的字符串:

      ----- BEGIN CERTIFICATE ----- \n... <certificate details> ...\n ----- END CERTIFICATE -----

      如果未设置 API_CA_CERT 变量,则扫描将会开始但无法完成。

      使用入口控制器的 CA 证书,可以让在 CI/CD 中运行的扫描器验证数据接收服务器的真实性。

      如果您使用自签名证书,或者想要跳过使用入口控制器的 CA 证书检查数据接收服务器这一步骤,请指定变量的值以跳过检查,如下所示:

      SKIP_API_SERVER_VALIDATION: 'true'

    7. 指定卡巴斯基容器安全的 API 主机服务器的网址:

      API_BASE_URL<网址>

      variables:

      API_BASE_URL: ${API_BASE_URL}

      script:

      - /bin/sh /entrypoint.sh $SCAN_TARGET --stdout > artifact-result.json

      artifacts:

      paths:

      - artifact-result.json

配置与外部仓库的集成后,您可以在 CI/CD 过程中扫描镜像,包括在 SBOM 模式下扫描。扫描结果可以在“资源CI/CD”中查看,或以 .SPDX、.JSON 和 .HTML 格式下载。

页首
[Topic 297122]

配置与 Jenkins CI/CD 的集成

配置与 Jenkins CI / CD 的集成包括以下步骤:

  1. 对卡巴斯基容器安全制造商镜像仓库中的 Jenkins CI/CD 授权。为此,在集群操作员的工作站上,运行以下命令以准备授权数据的 Base64 哈希:

    printf "login:password" | openssl base64 -A

    其中 login 和 password 是卡巴斯基容器安全制造商的镜像仓库中账户的用户名和密码。

  2. 卡巴斯基容器安全 API 授权。要执行授权,请完成以下步骤:
    1. 复制“我的个人资料”页面上的 API 令牌。
    2. 在 Jenkinsfile 配置文件的 API_TOKEN 变量中指定复制的 API 令牌值。
  3. 使用 Ingress 控制器的 CA 证书对 CI/CD 中的数据接收服务器进行身份验证。要执行身份验证,请在 Jenkinsfile 配置文件中指定以下变量之一:
    1. -e API_CA_CERT=${KCS_CA_CERT}表示身份验证已执行,并且在 CI/CD 中启动的扫描器可以确保接收服务器是真实的。
    2. -e SKIP_API_SERVER_VALIDATION=true表示不使用 Ingress 控制器的 CA 证书对接收服务器进行身份验证。
  4. 创建 Jenkins 环境变量。

    要创建环境变量,请将以下行添加到 Jenkinsfile:

    1. 添加扫描器所在容器仓库的信息,如下所示:

      LOGIN:扫描器仓库中的账户名称

      PASS:扫描器仓库的密码

    2. 如果为私有存储库配置扫描,请指定以下授权数据,以确保扫描器能够访问镜像:

      COMPANY_EXT_REGISTRY_USERNAME:扫描镜像仓库的账户名称

      COMPANY_EXT_REGISTRY_PASSWORD:扫描镜像仓库的密码

    3. 要使用证书与注册表建立安全连接,请将COMPANY_EXT_REGISTRY_TLS_CERT环境变量中的证书数据指定为 .PEM 格式的字符串:

      -----BEGIN CERTIFICATE-----\n... <证书详细信息> ...\n-----END CERTIFICATE-----.

    4. 指定以下用于通过代理服务器进行通信的变量:

      HTTP_PROXY<用于 HTTP 请求的代理服务器>

      HTTPS_PROXY<用于 HTTPS 请求的代理服务器>

      NO_PROXY<要从代理范围排除的域或合适的域掩码>

  5. 添加信息以启动扫描器。对于有关启动包含漏洞和其他恶意对象数据库的扫描器的信息,请以声明式或脚本式管道的形式将其添加到 Jenkinsfile 配置文件中。

    以声明式管道形式添加有关启动扫描器的信息的示例

    pipeline {

    agent any

    stages {

    stage('run scanner') {

    steps {

    sh 'docker login -u ${LOGIN} -p ${PASS} company.example.com'

    sh 'docker run -e API_BASE_URL=https://kcs.cust02.int.example.com/ -e SKIP_API_SERVER_VALIDATION=true -e API_TOKEN=${API_TOKEN} -e COMPANY_EXT_REGISTRY_USERNAME=${COMPANY_EXT_REGISTRY_USERNAME} -e COMPANY_EXT_REGISTRY_PASSWORD=${COMPANY_EXT_REGISTRY_PASSWORD} company.example.com:5050/company/kcs/scanner:v2.0.0-with-db jfrog.company.com/demo-kcs/bad:bad-project-test --html --stdout > result.html'

    }

    }

    }

    }

    以脚本式管道形式启动扫描器的数据的示例

    node {

    stage ('run scanner') {

    sh 'docker login -u ${LOGIN} -p ${PASS} company.example.com'

    sh 'docker run -e API_BASE_URL=https://kcs.cust02.int.company.com/ -e API_CA_CERT=${KCS_CA_CERT} -e API_TOKEN=${API_TOKEN} -e COMPANY_EXT_REGISTRY_USERNAME=${COMPANY_EXT_REGISTRY_USERNAME} -e COMPANY_EXT_REGISTRY_PASSWORD=${COMPANY_EXT_REGISTRY_PASSWORD} company.example.com:5050/company/kcs/scanner:v2.0.0-with-db jfrog.company.com/demo-kcs/bad:bad-project-test --html --stdout > result.html'

    }

    }

  6. 生成用于下载的构件。

    您可以生成 .HTML 或 .JSON 格式的下载构件,以接收扫描结果。您可以在 --stout 中指定构件格式,如下所示:

    pipeline {

    agent any

    stages {

    stage('run scanner') {

    steps {

    sh 'docker login -u ${LOGIN} -p ${PASS} company.example.com'

    sh 'docker run -e API_BASE_URL=https://kcs.int.company.com -e SKIP_API_SERVER_VALIDATION=true -e API_TOKEN=${API_TOKEN} -e COMPANY_EXT_REGISTRY_USERNAME=${COMPANY_EXT_REGISTRY_USERNAME} -e COMPANY_EXT_REGISTRY_PASSWORD=${COMPANY_EXT_REGISTRY_PASSWORD} company.example.com:5050/company/kcs/scanner:v2.0.1-lite jfrog.company.com/demo-kcs/bad:bad-project-test --html --stdout > result.html'

    }

    }

    stage('archive') {

    steps {

    archiveArtifacts artifacts: 'result.html'

    }

    }

    }

    }

    要生成 .JSON 格式的构件,请重写上方示例中的“--html --stdout> result.html”行,如下所示:

    --stdout > result.json'

    并在 archiveArtifacts artifacts 行中,以定义的格式指定文件名:“result.json”。

    扫描结果能以您指定的格式获取,也可以在“资源CI/CD”部分查看。

页首
[Topic 297198]

配置与 TeamCity CI/CD 的集成

要配置与 TeamCity CI/CD 的集成:

  1. 复制“我的个人资料”页面上的 API 令牌以在 TeamCity 中授权卡巴斯基容器安全 API
  2. 在 TeamCity 网络界面的设置菜单中,选择构建配置主页参数
  3. 单击添加新参数以添加以下环境变量的值:
    • API_TOKEN – 指定复制的卡巴斯基容器安全 API 令牌的值。
    • API_BASE_URL – 指定卡巴斯基容器安全的 URL。
    • RUST_BACKTRACE – 如有必要,请指定full以使用回溯。
    • SKIP_API_SERVER_VALIDATION – 如果您使用自签名证书或者需要使用 Ingress 控制器的 CA 证书跳过接收服务器的身份验证,请指定 true
    • COMPANY_EXT_REGISTRY_USERNAME – 指定扫描镜像注册表中的账户名称。
    • COMPANY_EXT_REGISTRY_PASSWORD – 指定扫描镜像的注册表密码。
    • COMPANY_EXT_REGISTRY_TLS_CERT – 指定用于与注册表进行安全连接的证书的详细信息。

      证书详细信息以 .PEM 格式的字符串指定:
      -----BEGIN CERTIFICATE-----\n... 证书详细信息> ...\n-----END CERTIFICATE-----

    • HTTP_PROXY – 用于 HTTP 请求的代理服务器
    • HTTPS_PROXY – 用于 HTTPS 请求的代理服务器
    • NO_PROXY – 要从代理范围中排除的域或适当的域掩码
  4. 转到构建配置主页构建步骤:命令行部分,然后单击添加构建步骤以添加构建步骤
  5. 在打开的窗口中,指定以下构建步骤设置:
    • Runner type 下拉列表中,选择命令行
    • 运行下拉列表中,选择自定义脚本
    • 自定义脚本字段中,指定用于扫描的容器的路径(例如,/bin/sh /entrypoint.sh nginx:latest)。
  6. Docker 设置下,指定以下设置:
    • Docker 容器字段内的运行步骤中,指定扫描器在 Docker 仓库中的地址。例如,company.gitlab.cloud.net:5050/companydev/example/scanner:v2.0.0-with-db
    • 其他 docker run 参数字段中,将权限值增加为--privileged
  7. 单击“保存”以保存设置。
  8. 单击页面右上角的运行开始构建。
  9. 如有必要,请下载扫描结果构件,该工件可在 TeamCity Web 界面的构建扫描结果页面的构件选项卡上找到。
页首
[Topic 297409]

定义容器镜像的路径

要开始扫描,解决方案需要确定需要扫描的容器镜像的路径。容器镜像的路径可以通过两种方式指定:

  • 在仓库名称、存储库名称和镜像名称后面指定镜像标签。标签是镜像的可更改且易于阅读的描述。

    在本例中,路径如下所示:<仓库>/<存储库>/<镜像名称>:<标签>。例如,http://docker.io/library/nginx:1.20.1

  • 在仓库名称、存储库和镜像名称后面指定镜像摘要。摘要是镜像的一个不可或缺的内部属性,具体来说,是其内容的哈希(使用 SHA256 哈希算法)。

    使用摘要时,路径的构成如下:<仓库>/<存储库>/<镜像名称><摘要>。例如,http://docker.io/library/nginx@sha256:af9c...69ce

一个标签可以匹配不同的摘要,而每个镜像的摘要都是唯一的。

根据用于指定镜像路径的方法,卡巴斯基容器安全在扫描前执行以下操作之一:

  • 将标签转换为可信摘要。
  • 检查镜像路径中指定的摘要是否可信。对于使用哈希算法编码的对象,如果在维持所需保护时,摘要可确保所需的置信度,则该摘要被视为可信。

只有可信摘要会发送到容器运行时。

在运行容器之前,会将镜像的内容与收到的摘要进行比较。为了确认摘要为可信并且镜像未损坏,卡巴斯基容器安全会检查镜像签名的完整性和真实性

页首
[Topic 265788]

监控镜像的完整性和来源

扫描 CI/CD 中的镜像时,卡巴斯基容器安全可在仓库级别防止镜像欺骗。从 CI 的构建阶段开始,通过验证镜像签名来控制部署在编排器集群中的容器镜像的完整性和来源。

镜像完整性监控分两个阶段:

  • 创建容器镜像后对其进行签名。此过程使用外部签名应用程序实现。
  • 部署镜像之前检查镜像签名。

    解决方案保存了一个基于 SHA256 哈希函数的签名密钥,并用作签名验证的代码。在编排器中部署时,卡巴斯基容器安全会要求签名服务器确认签名的真实性。

卡巴斯基容器安全按如下方式检查镜像签名:

  1. 在“管理集成镜像签名验证器”部分中,可以配置将解决方案与外部镜像签名验证应用程序集成的设置。
  2. 在“策略运行时策略策略”部分中,添加运行时策略来保护镜像的内容。该运行时策略会验证签名的真实性。数字签名根据配置的镜像签名验证器进行验证。
  3. 编排器启动镜像部署,并使用向代理 (kube-agent) 发出部署请求。

    要将请求发送到卡巴斯基容器安全代理,请在 values.yaml 配置文件中配置动态准入控制器。

  4. 根据适用的运行时策略,代理会检查在“管理集成镜像签名验证器”部分中配置的签名验证设置。
  5. 如果检查确认签名的真实性和有效性,解决方案将允许镜像部署。否则,部署将被阻止。
页首
[Topic 263762]

在 SBOM 模式下运行扫描器

卡巴斯基容器安全可在

模式下启动扫描器来检查镜像中是否存在漏洞。在这种情况下,解决方案将扫描专门创建的 SBOM 文件而不是 TAR 存档。

使用 SBOM 的优势如下:

  • 扫描镜像是否存在漏洞所需的资源更少。
  • 由于正确操作的自动验证和解决方案组件的正确使用,减少了扫描时间。
  • 能够扫描镜像中的所有现有漏洞,无一例外。
  • 扫描结果可靠性高。

在 CI/CD 中,扫描过程包括两个阶段:接收 SBOM 文件和根据收到的 SBOM 文件扫描镜像。镜像扫描过程实现如下:

  • CI/CD 扫描器生成镜像组件列表,并将生成的构件发送到卡巴斯基容器安全。
  • 使用镜像处理程序,解决方案将收到的 SBOM 文件转发到扫描器进行扫描。

    为了在 SBOM 模式下进行扫描,卡巴斯基容器安全会运行一个带有预装数据库的扫描器,该数据库包含关于漏洞和其他恶意对象的信息(scanner:v2.0-with-dbscanner:v2.0-with-db-java)。

要在 CI/CD 中进行镜像扫描,您必须在文件中指定以下环境变量的值:

  • API_TOKEN – 指定卡巴斯基容器安全 API 令牌的值。
  • API_BASE_URL – 指定卡巴斯基容器安全 URL。
  • API_CA_CERT – 指定 Ingress 控制器的的 CA 证书详细信息,可以让在 CI/CD 中运行的扫描器验证数据接收服务器的真实性。如果您使用自签名证书,或者想要跳过使用 Ingress 控制器的 CA 证书检查数据接收服务器这一步骤,用以跳过检查的变量的值提供如下:

    SKIP_API_SERVER_VALIDATION: 'true'

  • COMPANY_EXT_REGISTRY_USERNAME – 指定扫描镜像注册表中的账户名称。
  • COMPANY_EXT_REGISTRY_PASSWORD – 指定扫描镜像的注册表密码。
  • COMPANY_EXT_REGISTRY_TLS_CERT – 指定用于与注册表进行安全连接的证书的详细信息。

    证书详细信息以 .PEM 格式的字符串指定:
    -----BEGIN CERTIFICATE-----\n... 证书详细信息> ...\n-----END CERTIFICATE-----

  • HTTP_PROXY – 用于 HTTP 请求的代理服务器
  • HTTPS_PROXY – 用于 HTTPS 请求的代理服务器
  • NO_PROXY – 要从代理范围中排除的域或适当的域掩码

对于后续扫描,卡巴斯基容器安全会生成 CycloneDX 格式的报告。您还可以生成一个包含 SBOM 的构件,以便在 CI/CD 过程中以

格式进行下载。

要在扫描器执行 SBOM 创建时生成 .SPDX 格式的 SBOM 文件:

在 .gitlab-ci.yml 配置文件中输入以下命令:

- /bin/sh /entrypoint.sh $SCAN_TARGET --sbom --spdx --stdout > example.spdx

其中:

<--sbom-json> 指示创建 SBOM 文件。

<--spdx> 指示以 .SPDX 格式生成构件。

<--stdout > example.spdx> 指示数据输出到 .SPDX 格式的文件。

要在扫描器执行 SBOM 创建时生成 .СDX 格式的 SBOM 文件:

在 .gitlab-ci.yml 配置文件中输入以下命令:

- /bin/sh /entrypoint.sh $SCAN_TARGET --sbom --cdx --stdout > example.cdx.json

其中:

<--sbom-json> 指示创建 SBOM 文件。

<--cdx> 指示以 .CDX 格式生成构件。

<--stdout > example.cdx.json> 指示数据输出到 .JSON 格式的文件。

生成的文件(例如 example.cdx.json)被指定为构件:artifacts: paths:

使用 SBOM 文件进行扫描仅适用于扫描镜像是否存在漏洞的情况。如果您的 CI/CD 过程需要扫描其他风险和威胁(例如错误配置),则除了 SBOM 文件之外,还必须单独运行相应的扫描并将其结果添加到镜像处理程序中。

页首
[Topic 297411]

在精简版 SBOM 模式下运行扫描器

卡巴斯基容器安全可在精简版 SBOM 模式下启动扫描器来检查镜像中是否存在漏洞。在这种情况下,解决方案会扫描专门创建的 SBOM 文件,并且该扫描结果在 CI/CD 阶段可用。

通过监听和拦截网络流量获得的数据必须在 CI/CD 环境和解决方案之间安全传输。

您可以生成一个构件,用于以 .SPDX、.HTML、.JSON 或 .CDX 格式进行下载,从而获取结果。

扫描结果能以您指定的格式获取,也可以在“资源CI/CD“部分查看。

本节内容

在 GitLab 中运行扫描器

在 CI/CD 进程之外运行扫描器

页首
[Topic 297412]

在 GitLab 中运行扫描器

要在 GitLab 中精简版 SBOM 模式下启动扫描器,需在 CI/CD 进程中配置镜像扫描时编辑 .gitlab-ci.yml 配置文件,如下所示:

  1. 添加在 CI/CD 中启动用于镜像扫描的扫描器的镜像相关信息,如下所示:

    scan_image:

    stage: scanner

    image:

    name:repo.cloud.example.com/repository/company/scanner:v.2.0.0-lite

    entrypoint: [""]

    pull_policy: always

  2. 指定编排平台标签,如下所示:

    k8s

    在提供的示例中,为 Kubernetes 指定了 k8s 标签,您也可以为其他受支持的编排平台指定标签。

  3. 指定内部版本 ID、扫描镜像的镜像仓库数据和用于安全连接到此仓库的证书、管道 ID 和授权来自卡巴斯基容器安全中的 CI/CD 扫描程序的请求的 API 令牌等变量,如下所示:

    SCAN_TARGET: ${CI_REGISTRY_IMAGE}:master

    COMPANY_EXT_REGISTRY_USERNAME: ${COMPANY_EXT_REGISTRY_USERNAME}

    COMPANY_EXT_REGISTRY_PASSWORD: ${COMPANY_EXT_REGISTRY_PASSWORD}

    COMPANY_EXT_REGISTRY_TLS_CERT: ${COMPANY_EXT_REGISTRY_TLS_CERT}

    BUILD_NUMBER: ${CI_JOB_ID}

    BUILD_PIPELINE: ${CI_PIPELINE_ID}

    API_TOKEN: <API 令牌值>

    HTTP_PROXY<用于 HTTP 请求的代理服务器>

    HTTPS_PROXY<用于 HTTPS 请求的代理服务器>

    NO_PROXY<要从代理范围排除的域或合适的域掩码>

    COMPANY_EXT_REGISTRY_TLS_CERT变量中用于与镜像仓库进行安全连接的证书的详细信息以 .PEM 格式的字符串指定:
    -----BEGIN CERTIFICATE-----\n... 证书详细信息> ...\n-----END CERTIFICATE-----

  4. 如果需要,指定一个用于扫描解决方案的 API 证书的变量:

    API_CA_CERT: ${KCS_CA_CERT}

    如果未设置 API_CA_CERT 变量,则扫描将会开始但无法完成。

  5. 指定卡巴斯基容器安全的 API 主机服务器的网址:

    API_BASE_URL: <网址>

  6. 指定在扫描器用以下其中一种受支持的格式启动时创建构件的命令:
    • 要生成 .JSON 格式的构件:

      script:

      - /bin/sh /entrypoint.sh $SCAN_TARGET --stdout > artifact-result.json

      artifacts:

      paths:

      - artifact-result.json

    • 要生成 .HTML 格式的构件:

      script:

      - /bin/sh /entrypoint.sh $SCAN_TARGET --html --stdout > artifact-result.html

      artifacts:

      paths:

      - artifact-result.html

    • 要生成 .SPDX 格式的 SBOM 构件:

      script:

      - /bin/sh /entrypoint.sh $SCAN_TARGET --spdx --stdout > artifact-result.spdx

      artifacts:

      paths:

      - artifact-result.spdx

    • 要生成 .JSON 格式的 SBOM 构件:

      script:

      - /bin/sh /entrypoint.sh $SCAN_TARGET --cdx --stdout > artifact-result.cdx.json

      artifacts:

      paths:

      - artifact-result.cdx.json

有关将扫描器配置为在 GitLab 中精简版 SBOM 模式下运行并以 .HTML 格式生成构件的示例

scan_image:

stage: scanner

image:

name: repo.cloud.example.com/repository/company/scanner:v.2.0.0-lite

entrypoint: [""]

pull_policy: always

tags:

- k8s

variables:

SCAN_TARGET: ${CI_REGISTRY_IMAGE}:master

COMPANY_EXT_REGISTRY_USERNAME: ${COMPANY_EXT_REGISTRY_USERNAME}

COMPANY_EXT_REGISTRY_PASSWORD: ${COMPANY_EXT_REGISTRY_PASSWORD}

BUILD_NUMBER: ${CI_JOB_ID}

BUILD_PIPELINE: ${CI_PIPELINE_ID}

API_CA_CERT: ${KCS_CA_CERT}

API_TOKEN: <API 令牌值>

# Demostand KCS.int API:

API_BASE_URL: <网址>

script:

- /bin/sh /entrypoint.sh $SCAN_TARGET --html --stdout > artifact-result.html

artifacts:

paths:

- artifact-result.html

页首
[Topic 301503]

在 CI/CD 进程之外运行扫描器

在资源有限的情况下,您可以在 CI/CD 进程中除了工作节点之外运行卡巴斯基容器安全扫描程序。例如,通过在 Docker 节点上使用docker run命令,或者作为 Kubernetes 集群中的 Job。

为了最大程度地节省资源,我们建议使用扫描器:2.0.0-lite镜像,因为它不包含漏洞数据库,使用 API 将基于目标镜像扫描结果的 SBOM 文件发送到解决方案。

要在 CI/CD 进程之外启动卡巴斯基容器安全扫描程序,您必须指定以下强制参数:

  • API_TOKEN:< API 令牌值>是用于在解决方案的 API 接口中进行身份验证的卡巴斯基容器安全用户令牌。
  • API_BASE_URL:<网址>是访问卡巴斯基容器安全的 API 接口的链接。接口可以使用 HTTP 和 HTTPS 协议进行访问,具体取决于部署的解决方案的环境变量。
  • API_CA_CERT:<.PEM 格式的证书>是用于验证解决方案的 API 证书的变量。
  • SKIP_API_SERVER_VALIDATION = true — 如果需要,可以指定一个变量来跳过卡巴斯基容器安全的 API 证书验证。

您还可以为扫描器操作指定其他参数:

  • COMPANY_EXT_REGISTRY_USERNAME:<注册表用户名>是存储扫描器要检查的镜像的注册表的用户的名称。
  • COMPANY_EXT_REGISTRY_PASSWORD:<注册表用户密码>是存储扫描器要检查的镜像的注册表用户的密码。
  • BUILD_NUMBER:<内部版本号 ID>是用于在解决方案接口中跟踪内部版本号的 ID。卡巴斯基容器安全在 CI\CD 进程扫描结果中显示该数字。
  • BUILD_PIPELINE:<管道编号 ID >是用于在解决方案接口中跟踪管道编号的标识符。卡巴斯基容器安全在 CI\CD 进程扫描结果中显示该数字。
  • HTTP_PROXY:<HTTP 请求的代理服务器>是一个变量,表示在需要访问外部资源时使用 HTTP 代理服务器
  • HTTPS_PROXY:<HTTPS 请求的代理服务器>是一个变量,表示在需要访问外部资源时使用 HTTPS 代理
  • NO_PROXY:<用于排除项代理的域对应的域或掩码>是一个变量,表示使用代理服务器时本地可用的资源。

在 Docker 中运行扫描器

要在 Docker 中以精简版 SBOM 模式启动扫描器:

  1. 指定卡巴斯基容器安全的强制参数:

    -e API_TOKEN=<API 令牌值>

    -e API_BASE_URL=https://company.com

    -e API_CA_CERT: <.PEM 格式的证书> -e SKIP_API_SERVER_VALIDATION=true

  2. 如有必要,请为卡巴斯基容器安全指定附加参数。
  3. 指定要运行的扫描器镜像:

    repo.kcs.company.com/images/scanner:v2.0.0-lite

  4. 如果需要生成可供下载的构件,请指定以下内容:

    --<工件格式> --stdout> result. <文件格式>

    例如:

    --html --stdout > result.html

  5. 确保 .docker/config.json 配置文件包含用于使用扫描器镜像连接到镜像仓库的数据。如有必要,运行以下命令之一:docker login repo.company.comdocker login repo.kcs.kaspersky.com
  6. 开始扫描。

    如果在调用扫描仪时出现域名解析错误(Name does not resolve(名称无法解析)),则必须在组织的内部 DNS 服务器之前指定 API_BASE_URL 变量之前的地址。例如:

    --dns 10.0.xx.x

如果扫描器镜像和要扫描的镜像存储在您的注册表中,并且您需要以 .JSON 格式生成包含扫描器操作结果的工件,则扫描器起始变量指定如下:

docker run --dns 10.0.10.10 \

-e "API_BASE_URL=https://kcs.company.com" \

-e "SKIP_API_SERVER_VALIDATION=true" \

-e "API_TOKEN=${api_token}" \

-e "COMPANY_EXT_REGISTRY_USERNAME=${user}" \

-e "COMPANY_EXT_REGISTRY_PASSWORD=${password}"

repo.company.com/images/scanner:v2.0.0-lite \

repo.company.com/images/alpine:latest --stdout > result.json

如果扫描器镜像存储在卡巴斯基公共注册表中(节点使用您的代理服务器镜像拉取此镜像),则扫描的镜像将作为压缩文件本地存储在节点上,您需要使用 .SPDX 格式的扫描器操作结果生成工件,扫描器起始变量指定如下:

docker run --dns 10.0.10.10 \

-e "API_BASE_URL=https://kcs.company.com" \

-e "SKIP_API_SERVER_VALIDATION=true" \

-e "API_TOKEN=${api_token}" \

-e "HTTPS_PROXY=http://user:password@client.proxy.com:8080" \

-v ./image_to_scan.tar:/image.tar \

repo.kcs.kaspersky.com/images/scanner:v2.0.0-lite \

image.tar --file --spdx --stdout > result.spdx

在 Kubernetes 集群中将扫描器作为作业运行

要在 Kubernetes 集群中以精简 SBOM 模式将扫描器作为作业运行:

  1. 确保运行命令的节点包含 kubectl和相应 Kubernetes 集群的配置文件,并且运行命令的用户可以访问它们。
  2. 确保相应的名字空间中存在一个 Secret,以便从您感兴趣的注册表中进行身份验证并下载扫描器镜像。

    您可以自己创建这样的 Secret,例如使用以下命令:

    kubectl create secret docker-registry <secret name> --docker-server=<存储库的 FQDN> --docker-username=username --docker-password=password

  3. 指定扫描器作为 Kubernetes 集群中的任务运行所需的必需参数值以及(如有必要)附加参数的值。

    运行扫描器的参数在.YAML 格式的文件中指定如下:

    apiVersion: batch/v1

    kind: Job

    metadata:

    name: my-lite-job

    spec:

    template:

    spec:

    containers:

    - name: my-lite-container

    image: repo.company.com/images/scanner:v2.0.0-lite

    command: ["/bin/sh"]

    args: ["entrypoint.sh", "alpine:latest"]

    env:

    - name: COMPANY_EXT_REGISTRY_USERNAME

    value: <待扫描镜像所在镜像仓库中用于身份验证的用户>

    - name: COMPANY_EXT_REGISTRY_PASSWORD

    value: <待扫描镜像所在镜像仓库的身份验证密码>

    - name: API_BASE_URL

    value: https://kcs.company.local

    - name: API_TOKEN

    value: <卡巴斯基容器安全 API 中的身份验证令牌>

    - name: SKIP_API_SERVER_VALIDATION

    value: 'true'

    imagePullPolicy: Always

    restartPolicy: Never

    imagePullSecrets:

    - name: 用于身份验证和拉取扫描器镜像的 Secret 名称>

    backoffLimit: 0

  4. 在 Kubernetes 集群中开始扫描:

    kubectl apply -f my-lite-job.yaml

页首
[Topic 301504]

获取 JSON 或 HTML 格式的扫描结果

使用卡巴斯基容器安全来扫描 CI/CD 中的镜像时,可以生成包含扫描结果的构件并将其保存在 CI/CD 平台中。这可以使用与解决方案集成的外部存储库系统的配置文件来实现。例如,可以在 GitLab 中使用 .gitlab-ci.yml 配置文件。

您可以在以下场景中生成包含扫描结果的构件:

  • 扫描器执行完整的 CI/CD 扫描时,扫描结果文件能以 .HTML 或 .JSON 格式生成。
  • 通过创建 SBOM 运行扫描器时,包含扫描结果的文件能以 .SPDX 或 .JSON 格式生成。

要生成 .HTML 格式的扫描结果文件:

在 .gitlab-ci.yml 配置文件中输入以下命令:

- /bin/sh /entrypoint.sh $SCAN_TARGET --html --stdout > example.html

其中:

<--html> 指示以 .HTML 格式生成构件。

<--stdout > example.html> 指示数据输出到 .HTML 格式的文件。

要在执行完整的 CI/CD 扫描时生成 .JSON 格式的扫描结果文件:

在 .gitlab-ci.yml 配置文件中输入以下命令:

- /bin/sh /entrypoint.sh $SCAN_TARGET --stdout > example.json

其中:

<--stdout > example.json>指示数据输出到 .JSON 格式的文件。

生成的文件(例如 example.json)被指定为构件:artifacts: paths:

页首
[Topic 265362]

开始扫描时指定 Secret

在 CI/CD 进程中启动扫描作业时,包含扫描器镜像(Kaspersky Container Security 相应版本的 lite 或 with-db 扫描器)的注册表只有在获得授权后才可访问。为了授权,您可以在扫描作业中传递所需的 Secret。

要在启动扫描作业时获得访问注册表的授权:

  1. 创建 Secret:

    kubectl create secret docker-registry ci-creds --docker-server=client.repo.example.com --docker-username=username --docker-password=password

  2. 在扫描作业中,指定imagePullSecrets变量的值:

    imagePullSecrets:

    - name: ci-creds

  3. 开始扫描作业。

    带有授权 secret 的扫描作业示例

    kind: Job

    metadata:

    name: my-job

    spec:

    template:

    spec:

    containers:

    - name: my-container

    image: client.repo.example.com/scanner:master

    command: ["/bin/sh"]

    args: ["entrypoint.sh", "apline:latest"]

    env:

    - name: COMPANY_EXT_REGISTRY_USERNAME

    value: another_username

    - name: COMPANY_EXT_REGISTRY_PASSWORD

    value: another_password

    - name: API_BASE_URL

    value: https://some.kcs.env.example

    - name: API_TOKEN

    value: kcs_blablabla

    - name: SKIP_API_SERVER_VALIDATION

    value: 'true'

    imagePullPolicy: Always

    restartPolicy: Never

    imagePullSecrets:

    - name: ci-creds

    backoffLimit: 0

在此示例中,扫描作业包含以下 Secret:

  • 用于下载扫描仪镜像的 secret(在imagePullSecrets变量中指定)。
  • 如果对相关仓库的访问受到限制,则下载要扫描的镜像的密码(在COMPANY_EXT_REGISTRY_PASSWORD变量中指定)。

如果解决方案在运行扫描作业时获得访问权限的仓库可在未经授权的情况下访问,则可以省略这些密码。

页首
[Topic 281598]

配置与镜像签名验证器的集成

卡巴斯基容器安全可以验证镜像数字签名的真实性和有效性。要使用此功能,您需要配置解决方案与一个或多个外部签名应用程序的集成。镜像摘要签名的细节、签名的位置以及保护签名的细节取决于您选择的签名应用程序。解决方案支持两种可配置的外部签名验证应用程序:

  • Notary v1 是 Docker 开发的 Web 服务,用于确保容器在其生命周期各个阶段(包括签名的创建和后续存储阶段)的安全性。
  • Cosign 是一项旨在为容器创建签名、验证签名以及将已签名的容器放入存储库种的 Web 服务。该工具是作为 项目的一部分开发的。

您可以在“管理集成镜像签名验证器”部分中配置与镜像签名验证器的集成。

页首
[Topic 265760]

查看与签名验证器集成的列表

管理集成镜像签名验证器 部分中,一个表格将显示,其中包含带有镜像签名验证器的所有已配置集成。

该表将显示有关集成镜像签名验证器的以下信息:

  • 验证器名称
  • 描述(如果在创建集成时曾指定)
  • 镜像签名验证器的类型 - Notary v1 或 Cosign
  • 镜像签名验证器连接的网址

在表格中,您可以:

页首
[Topic 274593]

添加与镜像签名验证器的集成

要添加与镜像签名验证器的集成:

  1. 在“管理集成镜像签名验证器”部分中,单击“添加签名验证器”按钮。

    将打开集成设置窗口。

  2. 在“常规信息”部分中,输入策略名称,并根据需要输入策略说明。
  3. 在“类型”部分中,选择以下签名验证器之一:
    • Notary v1
    • Cosign
  4. 根据所选的签名验证器,指定服务器身份验证凭据:
    • 对于 Notary v1,指定以下设置:
      • 网址 – 存储镜像签名的服务器的完整网址。
      • 签名服务器身份验证密钥名称 – 编排器密钥的名称,密钥中包含用于访问存储了镜像签名的服务器的凭据。

        该密钥必须位于卡巴斯基容器安全命名空间中。

      • 证书 – 用于存储签名的服务器的自生成证书。该证书以 .PEM 格式提供。
      • 委派 – 参与签署过程的签名持有者列表。
      • 在“受信任的根”下,指定解决方案将在签名验证期间检查的所有公钥对。密钥对包括密钥的名称和值。

        如有必要,可以单击“添加密钥对”按钮来添加其他密钥。解决方案最多支持 20 个密钥对。

    • 对于 Cosign,指定以下设置:
      • 签名服务器身份验证密钥名称 – 编排器密钥的名称,密钥中包含用于访问存储了镜像签名的服务器的凭据。

        该密钥必须位于卡巴斯基容器安全命名空间中。

      • 证书 – 用于存储签名的服务器的自生成证书。该证书以 .PEM 格式提供。
      • 在“受信任的根”下,指定解决方案将在签名验证期间检查的所有公钥对。密钥对包括密钥的名称和值。

        对于 Cosign,指定 cosign.pub 提供的 ECDSA 或 RSA 算法的公钥。

        如有必要,可以单击“添加密钥对”按钮来添加其他密钥。解决方案最多支持 20 个密钥对。

      • 在“签名要求”部分中,指定必须签署镜像的签名和签名持有者的最小数量。
  5. 单击窗口顶部的“保存”按钮保存与镜像签名验证器的集成的设置。

您可以使用运行时策略中已配置的集成来确保对镜像内容的保护。

页首
[Topic 265764]

查看和编辑与镜像签名验证器的集成的相关信息

要查看和编辑与镜像签名验证器集成的设置:

  1. 在“管理 → 集成 → 镜像签名验证器”部分中,单击与签名验证器的集成列表中的集成名称链接。
  2. 如有必要,在打开的窗口中编辑集成设置,这取决于所选的签名验证器,如下所示:
    • 对于 Notary v1,可以修改以下设置:
      • 验证器名称
      • 描述
      • URL
      • 签名服务器身份验证密钥名称
      • 证书
      • 委派
      • 密钥名称
      • 密钥值
    • 对于 Cosign,可以修改以下设置:
      • 签名服务器身份验证密钥名称
      • 证书
      • 密钥名称
      • 密钥值
      • 阈值
      • 所需签名者
  3. 如有必要,单击“添加密钥对”按钮来添加密钥对。
  4. 单击窗口上部的“保存”按钮。
页首
[Topic 265792]

删除与镜像签名验证器的集成

要删除与镜像签名验证器的集成:

  1. 打开已配置的与镜像签名验证器的集成列表。
  2. 通过选中集成名称行中的复选框来选择要删除的集成。
  3. 单击表格上方的删除

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

  4. 在打开的窗口中,确认删除。
页首
[Topic 274595]

设置与通知输出的集成

卡巴斯基容器安全软件可以根据响应策略的设置在运行时向用户通知事件。要使用通知功能,您应该设置卡巴斯基容器安全与一个或多个通知输出的集成。

卡巴斯基容器安全可以使用以下输出:

  • 电子邮件
  • Telegram 即时通讯系统

本节帮助内容

查看与输出集成的列表

添加电子邮件集成

查看有关电子邮件集成的信息

添加 Telegram 集成

查看和编辑有关与 Telegram 的集成的信息

删除与通知输出的集成

页首
[Topic 250406]

查看与输出集成的列表

要查看已配置的与输出集成的列表:

  1. 转至“管理集成通知”部分。
  2. 根据您想要的通知类型,转到“电子邮件”选项卡或“Telegram”选项卡。

包含所有已配置集成的列表的表格显示有关现有集成的以下信息:

  • 集成名称。
  • 更新者。
  • 上次更新的日期和时间。
  • 最后一次连接到输出的状态 – 成功错误。如果显示错误,解决方案还会显示连接错误的简要描述。

在表格中,您可以:

  • 添加与电子邮件Telegram 的新集成。单击列表上方的“添加集成"以打开集成设置窗口。
  • 查看和编辑与输出集成的设置。您可以单击集成名称链接来打开编辑窗口。

    在此窗口中,您还可以单击“测试连接”以查看与输出的集成是否完成。

  • 删除与输出的集成
页首
[Topic 274627]

添加电子邮件集成

要添加电子邮件集成:

  1. 管理集成通知下的电子邮件部分中,单击 添加集成

    将打开集成设置窗口。

  2. 在表单中指定以下信息:
    • 集成的名称 – 显示在响应策略设置中。
    • 用于发送消息的账户的用户名和密码。
    • SMTP 服务器名称。
    • 电子邮件加密方法。
    • SMTP 服务器使用的端口。
    • 邮件发件人的电子邮件地址。
    • 邮件收件人的电子邮件地址。您可以在此字段中输入一个或多个地址。
  3. 单击“测试连接”以查看是否可以建立与电子邮件的连接。
  4. 单击“添加”以保存电子邮件集成设置。

电子邮件集成设置示例

以下是将卡巴斯基容器安全与电子邮件集成的设置示例。

{

"form": {

"type": "email",

"name": "Email integration",

"username": "username@example.com",

"password": "P@ssword!",

"host": "smtp.company.com",

"port": 465,

"encrypting": "ssl",

"sender": "sender@example.com",

"recipients": [

"user@company.com",

"user1@company.com"

]

}

}

对于 encrypting 参数,指定以下选项之一:

  • tls
  • ssl
  • null

您可以在响应策略中使用配置的集成。

页首
[Topic 275119]

查看有关电子邮件集成的信息

要查看和更改电子邮件集成:

  1. 在“管理集成通知”下的“电子邮件集成”部分中,单击集成列表中的集成名称链接。
  2. 在打开的编辑窗口中,如有必要,请更改以下集成设置:
    • 名称。
    • 用户名。
    • 用于发送邮件的用户账户的密码。
    • SMTP 服务器名称。
    • 电子邮件加密方法。
    • SMTP 服务器使用的端口。
    • 邮件发件人的电子邮件地址。
    • 邮件收件人的电子邮件地址。
  3. 单击“测试连接”以查看是否可以建立与电子邮件的连接。
  4. 单击“保存”。
页首
[Topic 275120]

添加 Telegram 集成

要添加 Telegram 集成:

  1. 管理集成通知下,在Telegram下,单击添加集成

    将打开集成设置窗口。

  2. 在表单中指定以下信息:
    • 集成的名称 – 显示在响应策略设置中。
    • 发布消息的聊天 ID – 您可以通过以下方式获取 ID:
      1. 给消息机器人撰写第一条消息。聊天 ID 会在第一次发送消息时生成。
      2. 在浏览器的地址栏中输入:

        https://api.telegram.org/bot<令牌>/getUpdates

        其中 <token> 是消息机器人的令牌。

      3. 在收到的 .json 响应文件中,找到“chat”对象中的“ID”值。这就是聊天 ID。

      更改 Telegram 聊天中新参与者的消息历史记录可见性设置后,聊天 ID 也会更改。在这种情况下,您必须更改 Telegram 集成设置并指定新的聊天 ID 值。

    • 消息机器人的令牌 – 对 BotFather 机器人执行 /newbot 命令以创建机器人时,您将收到此令牌。还可以通过运行 /token 命令来获取先前创建的机器人的令牌
  3. 单击“测试连接”以查看是否可以建立与 Telegram 的连接。
  4. 单击“添加”以保存 Telegram 集成设置。

Telegram 集成设置示例

以下是将卡巴斯基容器安全与 Telegram 集成的设置示例。

{

"form": {

"type": "telegram",

"name": "Telegram integration",

"chatId": "{{chatId}}",

"botToken": "{{botToken}}"

}

}

您可以在响应策略中使用配置的集成。

页首
[Topic 275121]

查看和编辑有关与 Telegram 的集成的信息

要查看和更改 Telegram 集成:

  1. 管理集成通知部分中的Telegram下,单击集成列表中的集成名称链接。
  2. 在打开的编辑窗口中,如有必要,请更改以下集成设置:
    • 名称。
    • 聊天 ID。
    • 机器人令牌。
  3. 单击“测试连接”以查看是否可以建立与 Telegram 的连接。
  4. 单击“保存”。
页首
[Topic 275122]

删除与通知输出的集成

要删除电子邮件集成或 Telegram 集成:

  1. 管理集成通知部分打开已配置的电子邮件或 Telegram 集成列表
  2. 通过选中集成名称行中的复选框来选择要删除的集成。
  3. 单击表格上方的删除

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

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

您不能删除一个或多个响应策略中使用的集成。

页首
[Topic 274659]

配置 LDAP 服务器集成

卡巴斯基容器安全允许您

连接到您的组织中使用的外部的服务器。这是与 中的特定组的集成。

通过 LDAP 协议连接到外部目录服务可让您执行以下任务:

  • 配置用户账户,以便在使用卡巴斯基容器安全时考虑来自外部目录服务的数据。
  • 将卡巴斯基容器安全中的用户角色与 Active Directory 中的用户组相关联。这些组中的用户将能够使用其域账户凭据登录解决方案 Web 界面,并根据被分配的角色访问应用程序的功能。

    我们建议您提前在 Active Directory 中创建这些用户组,以允许他们在卡巴斯基容器安全 Web 界面中使用其域账户完成授权。
    此外,必须为 Active Directory 中的用户账户指明电子邮件地址。

本节帮助内容

创建 LDAP 服务器集成

查看、配置或删除 LDAP 服务器集成

测试与 LDAP 服务器的连接

获取对 Active Directory 组的访问权限

页首
[Topic 254129]

创建 LDAP 服务器集成

要创建与 LDAP 服务器的集成:

  1. 在“管理集成LDAP”部分中,单击“连接服务器”按钮。

    LDAP 服务器设置窗口将打开。

  2. 选择用于连接到 LDAP 服务器的证书验证模式。默认情况下,证书链模式已指定,在第一次连接到 LDAP 服务器期间由卡巴斯基容器安全保存的证书已验证。您也可以选择根证书模式,并在相应的文本字段中输入您的根证书详细信息。

    除非您使用根有效证书连接到 LDAP 服务器,否则请不要更改默认证书验证模式。

  3. 指定以下所需设置:
    • 您公司的 LDAP 服务器的网址 (URL)。

      LDAP 服务器的网址按如下方式指定:ldap://<主机>:<端口>。例如:ldap://ldap.example.com:389

    • 技术用户账户的名称和密码。

      绑定 DN 是进行初始身份验证和在 Active Directory 中搜索用户所需的技术用户帐户的可分辨名称。

      您可以用全称或者 <login@domain> 格式(如果您的 LDAP 服务器支持该名称格式用于身份验证)指定技术用户账户的名称。

      绑定 DN 密码字段中,您必须输入与指定账户名称对应的密码。

      在更新解决方案之前,请确保已填写绑定 DN绑定 DN 密码字段。如果未指定这些设置,LDAP 服务器集成将不工作。

    • Base DN是独特识别和描述 LDAP 目录服务器的记录的名称。

      例如,example.com 的基础分辨名称是 dc=example,dc=com

  4. 如有必要,卡巴斯基容器安全可以使用可用的数据填写集成创建表单的剩余字段。为此,根据您创建集成的原因,执行以下操作之一:
    • 如果想要使用 LDAP 协议创建与服务器的集成,请单击作为 LDAP 自动填写按钮。
    • 如果想要为与卡巴斯基容器安全中的角色关联的 Active Directory 服务中的组直接配置集成,请单击作为 Active Directory 自动填写按钮。

    卡巴斯基容器安全指定参数值的属性,不是值本身。例如,该解决方案会指定可用来查找用户的用户名的属性,不是直接指定用户名。

    解决方案用参数值的以下属性填充集成创建表单:

    • 用于定义 Active Directory 中的用户搜索设置的用户筛选器
    • 用于定义 Active Directory 中的组搜索设置的组筛选器

      卡巴斯基容器安全使用最常规的过滤值来确保几乎所有可能的配置都能运行。配置用户过滤器组过滤器时,我们建议您仅存储在 Active Directory 中使用的属性值。

    • 基本模式下面,解决方案指定以下设置:
      • 组织单位名称属性
      • 可分辨名称属性
    • 用户查找模式下面,解决方案指定以下设置:
      • 用户名字属性
      • 用户姓氏属性
      • 组名称属性
      • 用户用户名
      • 组成员
      • 用户电子邮件属性
      • 用户隶属

    如有必要,您可以编辑解决方案在集成创建表单中指定的值。

  5. 要检查值是否指定正确,请单击测试连接

    卡巴斯基容器安全将显示一条通知,通知您成功连接到 LDAP 服务器或建立连接失败。

  6. 单击“保存”。

如果 LDAP 服务器证书发生更改,请重新配置集成

您可以在创建和分配用户角色时使用已配置的集成。

页首
[Topic 295783]

查看、配置或删除 LDAP 服务器集成

要查看 LDAP 服务器连接:

转至“管理集成LDAP”部分。

卡巴斯基容器安全显示有关已连接 LDAP 服务器的以下信息:

  • 已连接 LDAP 服务器的网址。
  • 上次服务器连接的状态 – 成功不可用错误。如果显示错误,解决方案还会显示连接错误的简要描述。

要编辑 LDAP 服务器集成设置:

在“管理集成LDAP”部分中,单击“编辑设置”按钮。

卡巴斯基容器安全将打开包含 LDAP 服务器集成数据表单的页面。

要删除与 LDAP 服务器的集成:

  1. 管理集成LDAP部分中,单击删除集成
  2. 在打开的窗口中,确认删除。
页首
[Topic 274660]

测试与 LDAP 服务器的连接

要测试与 LDAP 服务器的连接:

  1. 转至“管理 → 集成 → LDAP”部分。
  2. 执行以下操作之一:
    • 如果已创建与 LDAP 服务器的集成,请单击“测试连接”按钮。
    • 如果要创建与 LDAP 服务器的集成或者编辑其设置,请单击 LDAP 服务器集成数据表单上方的“测试连接”按钮。

卡巴斯基容器安全将显示一条通知,通知您已连接到 LDAP 服务器或连接建立失败。

页首
[Topic 286667]

获取对 Active Directory 组的访问权限

配置与 LDAP 服务器的集成后,您可以为每个卡巴斯基容器安全角色指定一个 Active Directory 组。使用账户凭据进行授权后,该组中的用户可以根据其被定义的角色访问解决方案的功能。

页首
[Topic 254187]

配置与 SIEM 系统的集成

卡巴斯基容器安全允许连接到

以发送事件消息进行分析并随后对潜在威胁做出响应。这些消息包含与安全事件日志中记录的相同类型和类别的事件的数据。集群节点监控事件数据的传输也是通过与 SIEM 系统集成并将代理组链接到它们来实现的。

消息以

格式发送到 SIEM 系统,例如:

CEF:0|Kaspersky|Kaspersky Container Security|2.0|PM-002|Process management|7|dpid=1846367 spid=1845879 flexString2=0ce05246346b6687cb754cf716c57f20f226e159397e8e5985e55b448cb92e3f flexString2Label=Container ID cs6=alpine cs6Label=Container name outcome=Success

传输的消息由以下几部分组成:

  • 标头,指定日期、时间和主机名。
  • 前缀和 CEF 版本号。
  • 设备供应商。
  • 解决方案名称。
  • 解决方案版本。
  • 解决方案生成的唯一事件类型代码。
  • 事件描述。
  • 事件严重性评估。
  • 附加信息,例如设备 IP 地址、事件原因、事件结果以及事件状态。

有关组件的更多详细信息,请参阅 CEF 消息值匹配表

本节帮助内容

匹配 CEF 消息字段

创建与 SIEM 系统的集成

将代理组与 SIEM 系统链接起来

查看和编辑 SIEM 集成设置

删除与 SIEM 系统的集成

页首
[Topic 293678]

匹配 CEF 消息字段

CEF 消息用英文发送。

下表列出了卡巴斯基容器安全发送的 CEF 消息的标头和正文的主要组成部分。

CEF 消息组件的组成部分和值

组件

示例

CEF 消息的标准标头(syslog 标头)

标头以以下格式发送:<日期> <时间> <服务器的主机名称>。

Feb 18 10:07:28 host

CEF 格式前缀和版本

<CEF>:<版本>

CEF:0

事件 ID

设备供应商

设备产品

设备版本

Kaspersky

Kaspersky Container Security

2.0

事件类型的唯一 ID(签名 ID)

卡巴斯基容器安全可发送以下事件类型 ID:

  • ADM-ХХХ:管理事件。
  • CVE-XXX:有关漏洞或者此类风险接受到期的风险接受。
  • MLW-XXX:有关恶意软件或者此类风险接受到期的风险接受。
  • NCMP-001:镜像不符合要求。
  • CMP-001:镜像符合要求。
  • SD-XXX:有关敏感数据或者此类风险接受到期的风险接受。
  • MS-XXX:有关错误配置或者此类风险接受到期的风险接受。
  • CI-ХХХ:CI/CD 进程中的事件。
  • PLC-ХХХ:应用安全策略时的事件。
  • BNCH-ХХХ:扫描集群和节点时的事件。
  • AG-ХХХ:与代理相关的事件。
  • SJ-ХХХ:扫描器的事件。
  • RT-ХХХ:最佳实践检查的事件。
  • API-ХХХ:对 API 服务器的请求。
  • PM-ХХХ:实现进程时的事件。
  • FM-ХХХ:涉及访问容器文件系统中的对象的事件。
  • NT-ХХХ:网络连接。
  • FPM-XXX:过程中发生运行时策略违规事件
  • FNT-XXX:与网络连接相关的运行时策略违规事件
  • FFM-XXX:与容器文件系统中的对象访问有关的运行时策略违规事件
  • FFTP-XXX:与文件威胁防护有关的运行时策略违规事件

解决方案发送的某些事件类型 ID:

  • ADM-001: User 1 added user 2
  • CVE-001: User 1 accepted risk for image XXX
  • AG-002: Agent XXX is disconnected
  • BNCH-003: YYY was passed while scanning XXX
  • PLC-001: YYY was applied to image XXX
  • NCMP-001: Image XXX was marked as non-compliant
  • SD-008: XXX risk acceptance expires

事件描述(名称)

描述必须用户可读且与事件类型 ID 有关。例如,'Administration' 对于 ADM,或者 '进程管理' 对于 PM。

解决方案发送的某些事件名称:

  • Process management
  • File management
  • Networking

事件的重要性(严重性)

事件的严重性从 0 到 10,确定如下:

  • 0–3:低
  • 4–6:中
  • 7–8:高
  • 9–10:非常高

事件的严重性分数取决于事件类型和状态(成功失败)。

例如,严重性分数可以确定如下:

  • 对于 PM(Process management)和 NT(Networking)事件:
    • 如果事件状态为 Audited 或者 Blocked,则严重性为 7。
    • 对于任何其他状态,严重性为 3。
  • 对于 AG (Agents) 事件:
    • 如果事件成功,则严重性为 5。
    • 如果发生错误,则严重性为 10。
  • 对于 API 事件:
    • 如果事件成功,则严重性为 3。
    • 如果发生错误,则严重性为 8。

关于事件的其他信息(扩展名)

其他信息可能包括一个或者多个键值对集。

下面提供了关于卡巴斯基容器安全传输的键值对的信息。

关于卡巴斯基容器安全传输的事件的附加信息

用法

source

事件源的域(pod 名称)(源名称)

在所有事件中

src

IPv4 网络中的以下 IP 地址之一(源 IP):

  • 对于网络流量 – 连接源的 IP 地址
  • 对于管理事件 – 操作发起者的 IP 地址

在所有事件中

reason

错误状态的原因描述(原因)

在所有带有错误状态的事件中,除PM-ХХХFM-ХХХNT-ХХХFPM-XXXFNT-XXXFFM-XXXFFTP-XXX之外

fname

镜像(工件)名称(工件名称)

CI-ХХХSJ-ХХХADM-ХХХCVE-ХХХMLW-ХХХSD-ХХХMS-ХХХCMP-001PLC-ХХХNCMP-001

suser

操作发起用户的名称(用户名)

PM-ХХХFM-ХХХNT-ХХХFPM-XXXFNT-XXXFFM-XXXFFTP-XXX 以外的所有事件

dpid

进程 ID (PID)

PM-XXXFM-XXXNT-XXXFPM-XXXFNT-XXXFFM-XXXFFTP-XXX

spid

父进程 ID (PPID)

PM-XXXXFM-XXXXNT-XXXXFPM-XXXFNT-XXXFFM-XXXFFTP-XXX

flexString1

有效组 ID (EGID)

PM-XXXFM-XXXNT-XXXFPM-XXXFNT-XXXFFM-XXXFFTP-XXX

flexString2

容器标识符/容器 ID

PM-XXXFM-XXXNT-XXXFPM-XXXFNT-XXXFFM-XXXFFTP-XXX

outcome

执行状态或模式(状态),该值定义如下:

  • 对于运行时事件( PM-ХХХFM-ХХХNT-ХХХFPM-XXXFNT-XXXFFM-XXXFFTP-XXX ),指定执行模式(审计强制其他)。
  • 对于其他事件,指定执行状态(成功错误)。如果状态为“错误”,解决方案还会传输错误文本或代码(原因)。

在所有事件中

request

镜像的名称(镜像名称)

PM-XXXFM-XXXNT-XXXFPM-XXXFNT-XXXFFM-XXXFFTP-XXX

fileHash

镜像哈希(镜像摘要)

PM-XXXFM-XXXNT-XXXFPM-XXXFNT-XXXFFM-XXXFFTP-XXX

act

以下操作类型之一(操作):

  • 对于文件操作 - 操作类型(openclosereadwritecreatedeletechmodchownrename
  • 对于网络流量 - 流量的方向和类型( egressingressegress_responseingress_response
  • 对于进程 – exec
  • 对于文件威胁防护操作 – ftp

PM-XXXFM-XXXNT-XXXFPM-XXXFNT-XXXFFM-XXXFFTP-XXX

spt

连接源的端口(源端口)

PM-XXXFM-XXXNT-XXXFPM-XXXFNT-XXXFFM-XXXFFTP-XXX

dst

IPv4 网络中目标的 IP 地址(目标 IP)

PM-XXXFM-XXXNT-XXXFPM-XXXFNT-XXXFFM-XXXFFTP-XXX

dpt

目标的端口(目标端口)

PM-XXXFM-XXXNT-XXXFPM-XXXFNT-XXXFFM-XXXFFTP-XXX

dproc

进程名称(命令)(进程名称)

PM-XXXFM-XXXNT-XXXFPM-XXXFNT-XXXFFM-XXXFFTP-XXX

duid

有效用户 ID (EUID)

PM-XXXFM-XXXNT-XXXFPM-XXXFNT-XXXFFM-XXXFFTP-XXX

filePermission

文件访问权限 (mode_t mode)。

PM-XXXFM-XXXNT-XXXFPM-XXXFNT-XXXFFM-XXXFFTP-XXX

oldFilePath

文件先前使用的路径(旧文件路径)

PM-XXXFM-XXXNT-XXXFPM-XXXFNT-XXXFFM-XXXFFTP-XXX

filePath

文件或的路径(路径)

对于涉及访问容器的文件系统中的对象的事件,filePath 用于传递有关新路径(新文件路径)的信息。

PM-XXXFM-XXXNT-XXXFPM-XXXFNT-XXXFFM-XXXFFTP-XXX

deviceDirection

连接方向类型(流量类型)

0 表示 Ingress 连接,1 表示 Egress 连接。

PM-XXXFM-XXXNT-XXXFPM-XXXFNT-XXXFFM-XXXFFTP-XXX

cn1

新进程标识符(新 PID)

PM-XXXFM-XXXNT-XXXFPM-XXXFNT-XXXFFM-XXXFFTP-XXX

cs1

集群的名称(集群名称)

PM-XXXFM-XXXNT-XXXFPM-XXXFNT-XXXFFM-XXXFFTP-XXX

cs2

节点的名称(节点名称)

PM-XXXFM-XXXNT-XXXFPM-XXXFNT-XXXFFM-XXXFFTP-XXX

cs3

名字空间的名称(名字空间名称)

PM-XXXFM-XXXNT-XXXFPM-XXXFNT-XXXFFM-XXXFFTP-XXX

cs4

执行的命令(命令)

对于涉及访问容器的文件系统中的对象的事件,cs4 用于传递有关新文件拥有者(NewOwner)的信息。

PM-XXXFM-XXXNT-XXXFPM-XXXFNT-XXXFFM-XXXFFTP-XXX

cs5

Pod 的名称(Pod 名称)

PM-XXXFM-XXXNT-XXXFPM-XXXFNT-XXXFFM-XXXFFTP-XXX

cs6

容器的名称(容器名称)

PM-XXXFM-XXXNT-XXXFPM-XXXFNT-XXXFFM-XXXFFTP-XXX

cs7

节点的 IP 地址(节点 IP)

PM-XXXFM-XXXNT-XXXFPM-XXXFNT-XXXFFM-XXXFFTP-XXX

页首
[Topic 293652]

创建与 SIEM 系统的集成

要添加 SIEM 集成:

  1. 管理集成SIEM部分中,单击添加 SIEM

    一个侧栏将显示,您可以在其中输入 SIEM 系统的参数。

  2. 常规选项卡上,指定以下必需参数:
    • SIEM 系统的名称。
    • 连接 SIEM 系统的协议。默认选择TCP
    • SIEM 系统服务器的地址采用以下格式之一:
      • IPv4
      • IPv6
      • FQDN
    • 用于连接 SIEM 系统的端口。您可以指定端口 1 到 65535。默认设置为 514。
    • 您想要将消息导出到 SIEM 系统的事件类别。要进行此项配置,请从以下列表中选中一个或多个事件类别旁边的复选框:
      • 管理
      • 警报
      • CI/CD
      • 策略
      • 资源
      • 扫描器
      • 准入控制器
      • 取证数据
      • API

        查看资源扫描仪准入控制器取证数据类别中的事件需要高级授权许可。

      默认选择所有状态。

      有关选定事件类别的消息将被发送到指定的 SIEM 系统,无论它是否链接到代理组。

  3. 代理组日志选项卡上,选中一个或多个事件类型旁边的复选框作为运行时节点监控的一部分。

    被发送到运行时环境的事件消息日志可能非常大,这会影响可用磁盘空间和网络负载。

  4. 如果您想验证指定的 SIEM 集成参数的正确性,请单击测试连接

    如果选择了 TCP 连接协议,该解决方案将测试与 SIEM 系统的连接。如果选择了 UDP 连接协议,则测试连接按钮将被禁用。

  5. 单击“保存”。
页首
[Topic 282786]

将代理组与 SIEM 系统链接起来

您可以在组件 → 代理部分中创建代理组编辑其参数时将代理组链接到 SIEM 系统。

要在卡巴斯基容器安全中链接代理组,您必须拥有足够的权限来管理代理组;您还必须创建并配置至少一个 SIEM 集成。

页首
[Topic 283037]

查看和编辑 SIEM 集成设置

要查看 SIEM 集成:

  1. 管理集成SIEM部分打开 SIEM 集成列表。
  2. 单击集成列表中的集成名称。

要编辑 SIEM 集成设置:

  1. 管理集成SIEM 部分中,单击集成列表中的集成名称。
  2. 如有必要,在显示的侧栏中,按如下方式编辑集成参数:
    1. 常规选项卡上,编辑以下必需参数:
      • SIEM 系统的名称
      • 连接 SIEM 系统的协议
      • SIEM 系统服务器地址
      • SIEM 系统连接端口
      • 要导出的事件类别
    2. 如有必要,您可以在代理组日志选项卡上编辑为运行时选择的网络节点监视事件类型的列表。
  3. 如果使用 TCP 连接,请单击测试连接以查看是否可以建立与 SIEM 系统的连接。
  4. 单击“保存”。
页首
[Topic 283085]

删除与 SIEM 系统的集成

要删除 SIEM 集成:

  1. 管理集成SIEM部分打开 配置的 SIEM 集成列表。
  2. 通过选中集成名称行中的复选框来选择要删除的集成。
  3. 单击表格上方的删除

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

  4. 在打开的窗口中,确认删除。
页首
[Topic 283084]

与 HashiCorp Vault 集成

卡巴斯基容器安全提供使用外部存储服务 HashiCorp Vault 安全地传输密码、令牌和 Secret 的功能。解决方案可生成 Pod 注释,Vault 注入器在启动时使用这些注释从存储中挂载必要的 Secret。

卡巴斯基容器安全支持与 Hashicorp Vault 1.7 或更高版本的集成。

版本 2.0 的卡巴斯基容器安全仅在使用侧边栏容器的侧边栏模式中支持使用 HashiCorp Vault;在此情况下,仅支持 Kubernetes 身份验证方法。

如果未定义 Pod 的服务账户,且使用默认服务账户,根据关键安全要求,我们不建议分配存储专用角色给此类服务账户。

HashiCorp Vault 设置的值在 values.yaml 配置文件中指定,在启动 Helm Chart 包时部署。

HashiCorp Vault 设置在 values.yaml 配置文件中配置如下:

  • 如果 vault 块中的 enabled 设置被设为 false ,则不使用与保管库的集成。
  • 如果将 vault 库块中的 enabled 设置被设为 true ,则启用与保管库的集成,并且 vault 设置块中的变量值优先。

vault 设置块包含以下部分:

  • secret — 用于指定 Secret 和凭据。
  • certificate — 用于指定证书和证书密钥。

secret 部分列出了包含以下参数的机密的文件的路径:

  • 用于对外部信息环境进行请求的代理服务器的 Secret。
  • PostgreSQL 数据库的凭据。
  • 用于存储解决方案生成的文件的 S3 兼容文件存储的凭据。
  • ClickHouse 数据库管理系统的凭据。

Secret 以 key:value 格式指定

其中:

  • <key> 是环境变量的名称
  • <value> 是机密存储中 Secret 的完整路径,后跟 @ 符号和在存储中创建的 Secret 的密钥的名称。

例如:POSTGRES_USER: kv/secret/kcs/psql@POSTGRES_USER

要获取证书,您必须在 vault.certificate 部分的字段中指定以下内容:

  • 要获取 CA 证书,请将 ca 设置设为 true。在此情况下,访问证书的路径是根据公钥基础设施(公钥基础设施,PKI)中的名称为基础的标准 cert/ca 路径形成的。如果 CA 证书不是根证书,请使用 caList 参数列出所有证书,包括根证书。例如:

    cert-ca:

    ca: true

    tls.crt: pki_kcs/cert/ca

    caList:

    - pki/cert/ca

  • 要生成证书和密钥,您需要从 PKI 名称中指包含定标准 issue 路径和创建的角色名称的路径。通用名称 (cn) 和所有可能的备用名称 (altname) 会被自动添加到证书中。如果有必要,可以手动指定 cnaltnameipsans 值,如下所示:

    cert-pguser:

    cn: pguser

    altname: pguser,pguser.psql,pguser.psql.svc,pguser.psql.svc.cluster.local,localhost

    ipsans: 0.0.0.0,127.0.0.1

  • 要设置证书有效期,需要指定 ttl 参数的值。默认值为 8760 小时。

    该参数值不能大于 PKI HashiCorp Vault 中设置的值。

certificate 部分还包含具有以下证书和密钥的文件的路径:

  • 外部 PostgreSQL 数据库的 CA 证书和客户端证书。
  • 解决方案组件所需的证书:
    • 准入控制器的 CA 证书和 CA 证书密钥。
    • 卡巴斯基容器安全许可模块的证书和证书密钥。
    • 包含解决方案主要业务逻辑的模块的证书和证书密钥。
    • 远程过程调用平台(GRPC)的证书和证书密钥。
    • 扫描器服务器的证书和证书密钥。
    • 扫描器服务器 API 的证书和证书密钥。
    • 企业私有网络更新文件服务器的证书和证书密钥。
    • 与 S3 兼容的文件存储的证书和证书密钥。
    • 事件中介的证书和证书密钥。
    • 代理中介的证书和证书密钥。
    • ClickHouse 数据库管理系统的证书和证书密钥。

本节帮助内容

HashiCorp Vault 存储设置:

与存储相关的限制

页首
[Topic 294179]

HashiCorp Vault 存储设置:

为了使卡巴斯基容器安全与 HashiCorp Vault 配合使用,您必须在 values.yaml 配置文件中指定以下配置设置的值:

  • enabled 标志可启用与存储的集成。vault.enabled = true 值表示与 HashiCorp Vault 的集成已建立;环境变量的值从存储中获取。默认值为 false
  • mountPath — 将 Secret 从保管库挂载到 Pod 的路径。默认值为 /vault/secrets
  • role 是在存储中用于身份验证的角色。

    在保管库中创建角色时,您需要从 values.yaml 文件中的 serviceAccount 部分指定所有现有值。

  • agentInitFirst — 用于定义初始化容器的初始化队列的变量。值为 true 表示 Pod 首先初始化 Vault init 容器。当初始化中的其他容器需要预填充的 Secret 才能运行时,必须设置此值。如果它被设置为 false,则容器的初始化顺序随机。默认值为 true
  • agentPrePopulate — 用于在容器启动之前启用初始化容器并使用 Secret 预先填充共享内存的变量。默认值为 true
  • agentPrePopulateOnly — 指示 init 容器是否将是被注入 Pod 中的唯一容器的变量。如果设置为true ,则运行 Pod 时不会添加 边车容器。默认值为 false
  • preserveSecretCase — 创建秘密文件时,用于保留 Secret 名称的大小写的变量。默认值为 true
  • agentInjectPerms — 定义使用存储中的 Secret 访问已挂载文件的权限的变量。默认值为0440(所有者和组具有读取权限)。
  • annotations — 配置正确操作边车容器的指令。您可以向 vault 块添加指令,以供所有 Helm Chart 组件使用,或者在 Architecture 部分为每个组件单独指定它们,例如:

    kcs-middleware:

    enabled: true

    appType: deployment

    annotations:

    vault.hashicorp.com/agent-limits-cpu: 200m

页首
[Topic 290082]

与存储相关的限制

当卡巴斯基容器安全与 HashiCorp Vault 配合使用时,存在一些非关键限制:

  • 与 HashiCorp Vault 的集成仅适用于 KV1/KV2 存储和用于轮换 PKI 证书的 Secrets Engine 组件。
  • 该解决方案不支持与 Secrets Engine 的外部组件(PKI Secrets 除外)一起使用。
  • 卡巴斯基容器安全不支持动态处理 Secret。要获取更新的 Secret,您必须重新启动解决方案。
  • 如果您正在使用 Vault 集成,则只能在 vault 部分为外部 PostgreSQL 数据库指定凭证。要使用内部 PostgreSQL 数据库,必须注释掉这些凭证。
页首
[Topic 290094]