卡巴斯基容器安全

与 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]