准备安装解决方案
在安装卡巴斯基容器安全之前,您必须安装公司网络所需的所有证书并配置代理服务器。
该解决方案可以部署在专用或公共公司网络中。
在安装卡巴斯基容器安全之前,请确保您拥有以下组件和访问权限:
- 能够访问互联网和集群的虚拟机或物理机。
- Helm 软件包管理器,用于在集群中打包、配置和部署应用程序及服务。
卡巴斯基容器安全支持 Helm 3.10.0 或更高版本。
- 互联网访问权限,用于下载 Helm Chart 软件包。
- 编排器管理工具,例如 kubectl(适用于 Kubernetes)或 oc(适用于 Openshift)。
- 对使用 kubeconfig文件的集群的访问权限。
要在专用公司网络中安装解决方案,请配置容器镜像存储库。该存储库使用解决方案供应商提供的凭据访问卡巴斯基容器安全供应商存储库。
准备在专用网络中安装
要准备在专用公司网络中安装解决方案:
- 连接包含 Helm Chart 软件包的供应商 Helm 存储库。
export CHART_URL="xxxxxx"
export CHART_USERNAME="xxxxxx"
export CHART_PASSWORD="xxxxxx"
export VERSION="xxxxxx"
CHART_URL、CHART_USERNAME、CHART_PASSWORD 和 VERSION
值由供应商提供。 - 填写解决方案分发包中包含的带有安装设置的文件 (values.yaml),按照该文件中的注释进行填写。
我们不建议在启动 Helm Chart 包时使用的 values.yaml 文件中指定账户数据。
您可以使用以下安全方法之一来管理 Secret:
- 使用 CI/CD 系统。Secret 使用受保护的环境变量或内置 Secret 管理机制来指定。在部署期间,数据会动态插入到 Helm Chart 中;不需要在 values.yaml 配置文件中公开指定。
- 与 HashiCorp Vault 集成。Helm Chart 支持与 HashiCorp Vault 集成,您可以在其中存储 Secret,并且您必须在 values.yaml 中仅指定此类 Secret 路径。
Docker Registry 的
pull-secret
值无法完全存储在 HashiCorp Vault 中。我们建议您在具有 Kubernetes 集群参数的部分中手动指定pull-secret
值,并从 Helm Chart 中引用它们。
以下主要安装设置必须在 values.yaml 文件中指定:
- 命名空间名称。
helm upgrade --install kcs . \
--create-namespace \
--namespace kcs \
--values values.yaml \
- 卡巴斯基容器安全用于入站连接的域名。
--set default.domain="kcs.example.domain.ru" \
启用网络策略时,您必须为集群 Ingress 控制器指定至少一个命名空间。
--set default.networkPolicies.ingressControllerNamespaces="{ingress-nginx}" \
默认启用网络策略。
- 解决方案组件的的 Secret。
--set secret.infracreds.envs.POSTGRES_USER="user" \
--set-string secret.infracreds.envs.POSTGRES_PASSWORD="pass" \
--set secret.infracreds.envs.MINIO_ROOT_USER="user" \
--set-string secret.infracreds.envs.MINIO_ROOT_PASSWORD="password" \
--set-string secret.infracreds.envs.CLICKHOUSE_ADMIN_PASSWORD="pass" \
--set secret.infracreds.envs.MCHD_USER="user" \
--set-string secret.infracreds.envs.MCHD_PASS="pass" \
为确保安全,解决方案组件必须使用由系统管理员依据公司安全策略单独生成的凭证。在解决方案内部署目标组件时,会自动创建指定的用户和密码。当使用第三方服务时,您必须提供该服务的管理员创建的用户名和密码。
- 与访问解决方案安装存储库相关的 Secret。
--set pullSecret.kcs-pullsecret.username="user" \
--set pullSecret.kcs-pullsecret.password="pass"
如果您打算使用卡巴斯基注册表部署系统,则必须指定购买卡巴斯基容器安全时提供给您的凭证。如果您打算使用私有注册表或代理注册表,则必须指定您的注册表凭证。
- HashiCorp Vault secret 存储设置:
enabled
标志可启用与存储的集成。vault.enabled = true
值表示与 HashiCorp Vault 的集成已建立;环境变量的值从存储中获取。mountPath
是包含存储中 secret 的目录的路径。role
是在存储中用于身份验证的角色。
我们建议不要改变基本安装设置的组成。
- 如果您使用外部 PostgresSQL DBMS,请指定以下信息:
--set default.postgresql.external="true"
--set configmap.infraconfig.envs.postgres_host="
<PostgresSQL DBMS 的 IP 地址或 FQDN>
"--set configmap.infraconfig.envs.postgres_port="<
用于连接到 PostgresSQL DBMS 的端口;默认使用端口 5432
>"--set configmap.infraconfig.envs.postgres_db_name="
PostgresSQL DBMS 管理员创建的数据库名称,默认使用 api
>"您还应该要求 PostgreSQL DBMS 管理员明确 DBMS 服务器证书验证的要求。卡巴斯基容器安全支持以下验证模式:
--set configmap.infraconfig.envs.postgres_verify_level= "disable”
– 不验证服务器证书。--set configmap.infraconfig.envs.postgres_verify_level= "require”
– 需要证书,解决方案信任所有证书,且不进行任何进一步验证。--set configmap.infraconfig.envs.postgres_verify_level= "verify-ca”
– 需要证书,解决方案检查证书是否由受信任的 CA(证书颁发机构)签发。--set configmap.infraconfig.envs.postgres_verify_level= "verify-full”
– 需要证书,解决方案验证证书是否由受信任的 CA 签发并包含正确的 IP 地址或 FQDN。
如果需要验证外部 PostgresSQL DBMS 的证书,请执行以下操作:
- 使用
certs/pgsql-ca.crt
掩码将 CA 证书的公共部分上传到文件夹以及 Helm Chart 包。 - 指定以下验证参数:
--set configmap.infraconfig.envs.postgres_root_ca_path="/etc/ssl/certs/pgsql-ca.crt"
。 - 取消注释 values.yaml 配置文件中的
secret.cert-pgsql-ca
部分以创建 secret。
- 保存包含安装设置的文件并继续安装解决方案。
证书要求
卡巴斯基容器安全需要 SSL 证书才能运行。部署解决方案时创建证书的方法在 values.yaml 配置文件的 default.certSource
部分中指定。您可以选择以下方法之一来创建证书:
helm
– 解决方案自动创建必要证书的方法(默认使用)。vault
– 如果您打算将解决方案与 HashiCorp Vault 外部存储集成,则使用此方法。您需要生成所有必要证书并将其上传到 HashiCorp Vault。files
– 手动创建证书的方法,例如使用企业 CA。手动创建证书的脚本存储在 Helm Chart 包的"certs/"
文件夹中。生成的证书必须与 values.yaml 文件中
secret
部分的预期证书名称相匹配。如有必要,您可以取消注释并重新定义secret
部分中的预期证书文件名。
证书必须符合以下要求:
- 密钥长度为 4096 位 RSA。
- CN 字段指定与证书相关的组件的 pod (
kcs-licenses
、kcs-middleware
、kcs-mw-grpc
、kcs-panel
、kcs-postgres
、kcs-scanner
、kcs-scanner-api
、kcs-updates
、kcs-memcached
、kcs-ab
、kcs-s3
、kcs-clicklickhouse
、kcs-eb
)。