部署 AppScan 360° 靜態分析 叢集

AppScan 360° 靜態分析 叢集可部署 Azure。圖表可從 Harbor 存取,或從 tar.gz 封存檔案的本端安裝存取。任一套件組合都包含指令碼 (sast-service.sh),以簡化部署步驟。

從 Helm 圖表部署 AppScan 360° 靜態分析

從 Harbor 下載 Helm 圖表後:
  1. 請確保您連接到正確的 Kubernetes。

    驗證 .kube 資料夾中有正確的叢集配置檔。

  2. 取得 ASCP 伺服器的 agents-api 服務 URL。

    例如,https://ascp.appscan.com:5000

  3. 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
  4. 從 HCL Harbor 取得使用者帳戶的 CLI 憑證,並將其儲存至檔案。

    例如 registry-token.txt

  5. 建立檔案以儲存 RabbitMQ 密碼。
    例如 rabbitmq-pwd.txt。此密碼是在安裝時於 RabbitMQ 配置。
    註: 此密碼一旦配置後即無法變更。
  6. 執行 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
  7. 確認部署作業已順利完成:
    > kubectl get pods -n <NAMESPACE>
    其中 <NAMESPACE> 是安裝 AppScan 360° SAST 的名稱空間。預設值是 hcl-appscan-sast
  8. 確認所有與 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-0 1/1 執行中 X X
    scan-manager-<pod-id> 1/1 執行中 X X
    workflow-manager--<pod-id> 1/1 執行中 X X
  9. 請確定 AppScan 360° SAST 可透過 URL https://<sast-ingress-fqdn> 從瀏覽器連線。

    (例如,https://sast.appscan.com

從保存檔部署 AppScan 360° 靜態分析

下載並解壓縮 tar.gz 檔案後:
  1. 若要將儲存器映像上傳至 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
  2. 請確保您連接到正確的 Kubernetes。

    驗證 .kube 資料夾中有正確的叢集配置檔。

  3. 取得 ASCP 伺服器的 agents-api 服務 URL。

    例如,https://ascp.appscan.com:5000

  4. 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
  5. 建立檔案以儲存 RabbitMQ 密碼。
    例如 rabbitmq-pwd.txt。此密碼是在安裝時於 RabbitMQ 配置。
    註: 此密碼一旦配置後即無法變更。
  6. 執行 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
    註: 使用此選項 -f 指定 Yaml 檔案的檔案路徑,並如 部署配置參數 中所述自訂。例如 -f values.yaml
  7. 確認部署作業已順利完成:
    > kubectl get pods -n <NAMESPACE>
    其中 <NAMESPACE> 是安裝 AppScan 360° SAST 的名稱空間。預設的 hcl-appscan-sast
  8. 確認所有與 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-0 1/1 執行中 X X
    scan-manager-<pod-id> 1/1 執行中 X X
    workflow-manager--<pod-id> 1/1 執行中 X X
  9. 請確定 AppScan 360° SAST 可透過 URL https://<sast-ingress-fqdn> 從瀏覽器連線。

    (例如,https://sast.appscan.com

配置 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, --local: 部署到本端叢集
  • -c, --cloud: 部署至雲端 Kubernetes 叢集。在參數中指定雲端平台。例如 azure
-l
-n--namespace 儲存器的名稱空間。 hcl-appscan-sast
-f--config-file yaml-file-path 使用指定配置細節的 yaml 檔案來配置或自訂儲存器部署。如需配置 yaml 檔案的相關資訊,請參閱 部署配置參數 不適用 否(N)
-ih|--ingress-host hostname 可供存取的主機名稱,以供輸入。AppScan 360° SAST 需要在叢集上執行的輸入控制器。針對雲端叢集,是在雲端供應商主機區域上設定的可公開存取主機名稱。

在本機部署中,可使用任何 DNS 合格名稱。附註:若為本端安裝,請將 dns 名稱新增至 /etc/hosts file

-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 登錄存取的登錄,以確保部署期間能進行映像提取。
  • -x 指定為映像載入時。
  • 使用封存部署進行部署時。
-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 儲存需求。

azurefile 用於 Azure 部署。

-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.html
AppScan 360° SAST 使用 auth-token 部署時指定的記號型鑑別。記號可使用下列指令提取:
> kubectl get secrets -n hcl-appscan-sast sast-service-secret -o jsonpath="{.data.SAST_AUTH_TOKEN}" | base64 -d