部署 AppScan 360° 靜態分析 叢集
AppScan 360° 靜態分析 叢集可部署 Azure。圖表可從 Harbor 存取,或從 tar.gz 封存檔案的本端安裝存取。任一套件組合都包含指令碼 (sast-service.sh),以簡化部署步驟。
從 Helm 圖表部署 AppScan 360° 靜態分析
從 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° 靜態分析
下載並解壓縮
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° 靜態分析 輸入配置的註釋清單。
- 例子
nginx.ingress.kubernetes.io/backend-protocol: HTTPS
重新配置 AppScan 360° 靜態分析
初始部署 AppScan 360° 靜態分析 後,後續使用部署指令碼時,會使用最新指定的部署選項來重新配置 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 檔案的相關資訊,請參閱 部署配置參數 |
不適用 | 否(N) |
-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 |
ASCP SAST 服務的連線授權。它也有助於 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 儲存需求。 |
|
|
-x、--load-images |
從 FNO 下載封存時,此參數會指示要從檔案系統載入儲存器映像,並推送至指定的儲存器登錄。此選項僅應用於氣隙模式部署。 | 否(N) | |
-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部署後存取儲存器
成功部署後,AppScan 360° SAST 可使用 Swagger UI 存取 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