部署 AppScan 360° Static Analysis 集群
AppScan 360° Static Analysis 集群可以在 Azure 上部署。可以从 Harbor 或从 tar.gz 存档文件的本地安装访问图表。任一捆绑包都包含一个脚本 (sast-service.sh),以简化部署步骤。
从 Helm 图表部署 AppScan 360° Static Analysis
从 Harbor 下载 Helm 图表后:
- 确保连接到正确的 Kubernetes 集群。
验证
.kube文件夹中是否具有正确的集群配置文件。 - 获取 ASCP 服务器的
agents-api服务 URL。例如,
https://ascp.appscan.com:5000 - 从 ASCP 服务器检索到当前计算机的认证令牌、证书和专用密钥文件。
- 可以使用选项
--auth-token将认证令牌指定给 AppScan 360° SAST 部署。例如,--auth-token AgentsApiKey.txt。 - 可以使用选项
--cert将 CA 证书指定给 AppScan 360° SAST 部署。例如,--cert AppScan360_RootCA.crt。 - 可以使用选项
--cert-key将专用密钥指定给 AppScan 360° SAST 部署。例如,--cert-key AppScan360_RootCA.key。
- 可以使用选项
- 从 HCL Harbor 获取用户帐户的 CLI 令牌并将其保存到文件中。
例如,
registry-token.txt。 - 创建文件以存储 RabbitMQ 密码。例如,
rabbitmq-pwd.txt。在安装后可在 RabbitMQ 中配置此密码。注: 配置后,不能更改此密码。 - 运行 AppScan 360° SAST 脚本,其中包含在本地或 Azure 上部署集群的选项:
> ./sast-service.sh --install --cloud azure \ --ingress-host <sast-ingress-fqdn> \ --cert AppScan360_RootCA.crt \ --cert-key AppScan360_RootCA.key \ --server-url https://<ascp-fqdn>:<agents-api-port> \ --auth-token AgentsApiKey.txt \ --rabbitmq-password rabbitmq-pwd.txt \ --registry-user <harbor-username> \ --registry-token registry-token.txt \ --storage-class azurefile \ --ingress-class nginx注:- 为脚本文件提供执行许可权。例如,
chmod -R +x sast-service.sh scripts/*。 - 使用选项
-f指定 yaml 文件的文件路径,并按 部署配置参数 中所述进行定制。例如,-f values.yaml。
- 为脚本文件提供执行许可权。例如,
- 验证部署是否成功。其中
> kubectl get pods -n <NAMESPACE><NAMESPACE>是安装了 AppScan 360° SAST 的名称空间。缺省值为hcl-appscan-sast。 - 如下所示,验证所有 AppScan 360° SAST 相关 Pod 是否都已启动且正常运行:
Pod 名称 就绪 状态 重新启动 期限 analyzer-<pod-id>1/1 运行 X X ascp-adapter-<pod-id>1/1 运行 X X gateway-<pod-id>1/1 运行 X X preparer-<pod-id>1/1 运行 X X sast-service-rabbitmq-01/1 运行 X X scan-manager-<pod-id>1/1 运行 X X workflow-manager--<pod-id>1/1 运行 X X - 确保 AppScan 360° SAST 可以使用 URL
https://<sast-ingress-fqdn>从浏览器访问。
从存档文件部署 AppScan 360° Static Analysis
下载并抽取
tar.gz 文件后:- 要将容器映像上载到 ACR 或任何其他所选注册表,请使用以下参数选项为部署脚本提供注册表凭证:注: AppScan 360° SAST 容器映像必须上载到远程 OCI 兼容注册表。
--registry <registry>:用于推送容器映像的注册表。例如:appscanregistry.azurecr.io, docker.io。--registry-user <registry-username>:用于认证的注册表用户名。--registry-token <registry-password-file>:包含注册表用户密码的文件。例如:--registry-token ./registry-.txt--load-images:此选项表示容器映像应从文件系统装入到注册表。容器映像可以位于路径sast-service-base/images/*.image中。
- 确保连接到正确的 Kubernetes 集群。
验证
.kube文件夹中是否具有正确的集群配置文件。 - 获取 ASCP 服务器的
agents-api服务 URL。例如,
https://ascp.appscan.com:5000 - 从 ASCP 服务器检索到当前计算机的认证令牌、证书和专用密钥文件。
- 可以使用选项
--auth-token将认证令牌指定给 AppScan 360° SAST 部署。例如,--auth-token AgentsApiKey.txt。 - 可以使用选项
--cert将 CA 证书指定给 AppScan 360° SAST 部署。例如,--cert AppScan360_RootCA.crt。 - 可以使用选项
--cert-key将专用密钥指定给 AppScan 360° SAST 部署。例如,--cert-key AppScan360_RootCA.key。
- 可以使用选项
- 创建文件以存储 RabbitMQ 密码。例如,
rabbitmq-pwd.txt。在安装后可在 RabbitMQ 中配置此密码。注: 配置后,不能更改此密码。 - 运行 AppScan 360° SAST 脚本,其中包含在本地或 Azure 上部署集群的选项:
> ./sast-service.sh --install --cloud azure \ --ingress-host <sast-ingress-fqdn> \ --cert AppScan360_RootCA.crt \ --cert-key AppScan360_RootCA.key \ --server-url https://<ascp-fqdn>:<agents-api-port> \ --auth-token AgentsApiKey.txt \ --rabbitmq-password rabbitmq-pwd.txt \ --registry-user <harbor-username> \ --registry-token registry-token.txt \ --storage-class azurefile \ --ingress-class nginx - 验证部署是否成功。其中
> kubectl get pods -n <NAMESPACE><NAMESPACE>是安装了 AppScan 360° SAST 的名称空间。缺省hcl-appscan-sast。 - 如下所示,验证所有 AppScan 360° SAST 相关 Pod 是否都已启动且正常运行:
Pod 名称 就绪 状态 重新启动 期限 analyzer-<pod-id>1/1 运行 X X ascp-adapter-<pod-id>1/1 运行 X X gateway-<pod-id>1/1 运行 X X preparer-<pod-id>1/1 运行 X X sast-service-rabbitmq-01/1 运行 X X scan-manager-<pod-id>1/1 运行 X X workflow-manager--<pod-id>1/1 运行 X X - 确保 AppScan 360° SAST 可以使用 URL
https://<sast-ingress-fqdn>从浏览器访问。
配置 AppScan 360° SAST 入口
要将提供的入口配置为使用 https,请使用 nginx.ingress.kubernetes.io/backend-protocol 注释指示 NGINX 应如何与后端服务通信。
- 参数
global.ingress.additionalAnnotations - 描述
要在 AppScan 360° Static Analysis入口中配置的注释列表。
- 示例
nginx.ingress.kubernetes.io/backend-protocol: HTTPS
重新配置 AppScan 360° Static Analysis
在 AppScan 360° Static Analysis 的初始部署后,部署脚本的后续使用将使用最近指定的部署选项重新配置 Kubernetes 集群。不需要先删除集群。
要验证部署脚本是否正在重新配置现有安装,请检查脚本输出消息中是否有以下消息:
Namespace 'hcl-appscan-sast' already exists. The SAST deployment will be upgraded.注: 在某些情况下,名称空间可能仍处于正在终止状态,而集群上没有可用的部署。在这种场景中,重新配置会失败。手动删除名称空间并重新尝试部署。
部署选项
部署注释:
- 本地安装使用
local-path作为存储提供程序,其中将存储扫描工件。 - 部署脚本通过文本文件接受机密信息。例如,对于注册表令牌或 RabbitMQ 密码。
- 要定制安装,请提供
yaml文件格式的配置文件。
| 参数 | 描述 | 缺省值 | 需要 |
|---|---|---|---|
-i、--install |
部署 AppScan 360° SAST.此标志不需要任何选项值。 | 无 | 是 |
-l 、--local、-c、--cloud |
指定本地 Kubernetes 实例或云安装。
|
-l |
是 |
-n、--namespace |
容器的名称空间。 | hcl-appscan-sast |
是 |
-f、--config-file yaml-file-path |
使用指定配置详细信息的 yaml 文件,配置或定制容器部署。有关配置 yaml 文件的信息,请参阅 部署配置参数 |
无 | 否 |
-ih|--ingress-host hostname |
入口的可访问主机名。AppScan 360° SAST 需要在集群上运行入口控制器。对于云集群,在云提供商主区域上配置的可公开访问的主机名。 对于本地部署,可以使用任何符合 dns 条件的名称。注:对于本地安装,请将 |
||
-cc、--cert cert-file-path |
要设置 TLS 和 HTTPS,请提供已签名证书文件的完全限定路径。如果留空,则会禁用 TLS 并使用 HTTP。 | HTTP | |
-ck、--cert-key key-file-path |
提供指定证书的专用密钥的相应路径。 | 如果提供了已签名证书。 | |
-su、--server-url url |
ASCP 服务器的 API 服务 URL 和端口号。ASCP 服务器配置为 AppScan 360 平台安装的一部分,是用户启动 SAST 扫描的方式。 | ||
-at|--auth-token token |
使用 SAST 服务进行的 ASCP 连接授权。它还有助于 ASCP 平台服务和 AppScan 360° SAST 之间的通信和交换。 | 是 | |
-p |--rabbitmq-passwords pwd-file-path |
指定 RabbitMQ 用户密码的文件路径。注:配置 RabbitMQ 密码后,就不能更改。 | 是 | |
-r 、--registry registry |
用于装入图像的注册表名称。 注: 对于使用包含 SAST 映像的存档 zip 文件的云部署,必须提供可通过云 K8S 注册表访问的注册表,以确保在部署过程中可以拉取映像。 |
|
|
-ru、--registry-user username |
提供的注册表的用户名。 | ||
-rt、--registry-token token-file-path |
包含指定注册表的用户 CLI 令牌的文件的路径。 注: 出于安全原因,只能使用文件提供令牌。 |
||
-ro|-repo|--repository repository |
用于找到图像和 Helm 图表的存储库路径。 | appscan360-sast/sast-service |
|
-v、--version |
要下载的 AppScan 360° SAST 版本。 | 缺省为用于当前部署的脚本版本。 | 从 Harbor 下载时需要。 |
-t、--tag image-tag |
要安装的 AppScan 360° SAST 版本。未指定时,将使用存储库或存档中的最新版本。 | 最新可用版本 | 是 |
-ic|--ingress-class name |
入口控制器用于通过网关服务呈现 AppScan 360° SAST。必须提供安装在集群中的入口控制器的名称。 | 是 | |
-sc|--storage-class |
配置存储提供程序以满足所有 AppScan 360° SAST 存储需求。 |
用于 Azure 部署的 |
|
-x、--load-images |
从 FNO 下载存档时,此参数指示要从文件系统装入容器映像并将其推送到指定的容器注册表。此选项只能用于气隙方式部署。 | 否 | |
-verbose |
生成与控制台中的部署相关的完整消息。 |
示例
本地 Kubernetes 部署:
> ./sast-service.sh -i -l -ih sast.appscan.com \
-cc ./config/appscan.crt -ck ./config/appscan.key \
-su https://asop.appscan.com:1234 -st ./config/server.token \
-ru appscan-user@hcl.com -rt ./config/registry.token \
-pwd ./config/sast.pwd --rabbitmq-password ./config/rabbitmq.pwd云 (Azure) 部署:
> az login ...
> ./sast-service.sh --install \
--cloud azure \
--ingress-host test.sast.appscan.com \
--cert ./AppScan360_RootCA.crt \
--cert-key ./AppScan360_RootCA.key \
--server-url https://test.asop.appscan.com:5000 \
--auth-token ./AgentsApiKey.txt \
--rabbitmq-password ./rabbitmq-pwd.txt \
--registry appscanregistry.azurecr.io
--registry-user registryuser \
--registry-token ./registry-token.txt \
--ingress-class nginx \
--storage-class azurefile部署后访问容器
成功部署后,可以使用 swager-ui 访问 AppScan 360° SAST REST API:
> https://<appscan sast url>/swagger-ui/index.htmlAppScan 360° SAST 使用部署
auth-token 时指定的基于令牌的认证。可以使用以下命令访存令牌:> kubectl get secrets -n hcl-appscan-sast sast-service-secret -o jsonpath="{.data.SAST_AUTH_TOKEN}" | base64 -d