- 卡巴斯基容器安全 2.0 帮助
- 关于卡巴斯基容器安全平台
- 解决方案架构
- 标准部署方案
- 准备安装解决方案
- 解决方案安装
- 删除解决方案
- 更新解决方案
- 解决方案界面
- 授权解决方案
- 数据提供
- 使用集群
- 处理仓库的镜像
- 调查安全事件
- 与第三方资源的集成
- 安全策略配置
- 合规性检查
- 配置和生成报告
- 文件威胁防护
- 用户、角色和范围
- 使用卡巴斯基容器安全 OpenAPI
- 安全事件日志
- 有关解决方案组件状态的信息
- 确保组件的安全性和可靠性
- 管理数据积累动态
- 备份和恢复数据
- 联系技术支持
- 应用程序的信息来源
- 限制和警告
- 第三方服务中的漏洞
- 词汇表
- 第三方代码信息
- 商标声明
- ATT&CK MITRE 使用条款
在 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 中以精简版 SBOM 模式启动扫描器:
- 指定卡巴斯基容器安全的强制参数:
-e API_TOKEN=
<API 令牌值>
-e API_BASE_URL=https://company.com
-e
API_CA_CERT: <
.PEM 格式的证书
>
或 -e SKIP_API_SERVER_VALIDATION=true - 如有必要,请为卡巴斯基容器安全指定附加参数。
- 指定要运行的扫描器镜像:
repo.kcs.company.com/images/scanner:
v2.0.0-lite
- 如果需要生成可供下载的构件,请指定以下内容:
--
<工件格式>
--stdout> result.<文件格式>
例如:
--html --stdout > result.html
- 确保 .docker/config.json 配置文件包含用于使用扫描器镜像连接到镜像仓库的数据。如有必要,运行以下命令之一:
docker login repo.company.com
或docker login repo.kcs.kaspersky.com
。 - 开始扫描。
如果在调用扫描仪时出现域名解析错误(
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 集群中以精简 SBOM 模式将扫描器作为作业运行:
- 确保运行命令的节点包含 kubectl和相应 Kubernetes 集群的配置文件,并且运行命令的用户可以访问它们。
- 确保相应的名字空间中存在一个 Secret,以便从您感兴趣的注册表中进行身份验证并下载扫描器镜像。
您可以自己创建这样的 Secret,例如使用以下命令:
kubectl create secret docker-registry <secret name> --docker-server=<存储库的 FQDN> --docker-username=
username
--docker-password=
password
- 指定扫描器作为 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
- 在 Kubernetes 集群中开始扫描:
kubectl apply -f my-lite-job.yaml