在 Kubernetes 上部署微服務 IAST 代理程式
AppScan 支援在 Kubernetes 叢集上自動安裝 IAST 代理程式。若使用 MutatingAdmissionWebhook,IAST 代理程式會自動安裝在任何啟動的 Pod 中。您可以使用 Helm 或 Webhook 指令碼安裝或移除代理程式。
執行這項作業的原因和時機

一般說明
程序
-
下載代理程式:
依此處說明下載 ASoC Kubernetes IAST 代理程式,並解壓縮 ZIP 檔案內容。
- 在叢集中安裝 IAST 代理程式:
-
重新啟動現有 Pod:
安裝完成後,重新啟動目標名稱空間中任何正在執行的 Pod,以確保 IAST 代理程式已成功注入。
-
在問題中檢視 Pod 名稱:
已回報問題的 Pod 名稱可在問題詳細資料標籤中的其他資訊下看到。
- 選擇性的:
提供下列選用功能:
- 自訂代理程式配置:可用此選項排除特定 Pod。
- 使用私有登錄。
- 使用以 Helm 為基礎或以指令碼為基礎的安裝方法,在不同的命名空間中部署多個代理程式。
-
IAST 分析工具:提供完整的服務圖形視圖,可協助減少誤報。目前僅支援 Node.js 和 .NET。

以 Helm 為基礎的安裝
執行這項作業的原因和時機
程序
-
安裝 IAST 代理程式:
-
在預設名稱空間中安裝:
helm install secagent helm-secagent --wait -
在一或多個名稱空間中安裝:
helm install secagent helm-secagent --wait --set config.namespaceConfig.namespaces={my-namespace1,my-namespace2} -
在同一個叢集中安裝多個代理程式(不同的名稱空間):
- 使用前面的步驟,在所需的名稱空間中安裝第一個代理程式。
- 若要安裝另一個代理程式,請下載不同的代理程式套件,然後使用相同的指令進行安裝。
helm upgrade secagent helm-secagent --wait --set config.namespaceConfig.namespaces={my-namespace3,my-namespace4}
- 選擇性的:
在啟用分析工具的情況下安裝:
helm install secagent helm-secagent --wait \ --set config.namespaceConfig.namespaces={my-namespace} \ --set analyzer.enabled=true
-
在預設名稱空間中安裝:
-
解除安裝 IAST 代理程式:執行此指令:
helm uninstall secagent此操作會移除名為 secagent 的 Helm 版本。接著,重新啟動所有正在執行的 Pod 以完成移除作業。
如需進階配置與完整文件,請參閱 helm-secagent/README.md。
以指令碼為基礎的安裝
執行這項作業的原因和時機
程序
-
安裝 IAST 代理程式:
-
在預設名稱空間中安裝:
./install-secagent-webhook.sh -
在一或多個名稱空間中安裝:
./install-secagent-webhook.sh -n my-namespace1 -n my-namespace2 -
在同一個叢集中安裝多個代理程式(不同的名稱空間):
- 使用前面的步驟,在所需的名稱空間中安裝第一個代理程式。
- 若要安裝另一個代理程式,請下載不同的代理程式套件,然後使用相同的指令進行安裝。
./install-secagent-webhook.sh -n my-namespace3 -n my-namespace4
- 選擇性的:
在啟用分析工具的情況下安裝:
./install-secagent-webhook.sh -n my-namespace --with-analyzer
-
在預設名稱空間中安裝:
-
解除安裝 IAST 代理程式:執行此指令:
./uninstall-secagent-webhook.sh指令碼執行完成後,重新啟動所有正在執行的 Pod 以完成移除作業。
從 IAST 安裝中排除 Pod
程序
-
在已納入的名稱空間中排除特定 Pod。
在 Pod 的 YAML 配置中新增
skip-iast-webhook="true"標籤。任何使用此標籤建立的新 Pod 都會被 IAST 變化 Webhook 忽略。 - 若要再次納入該 Pod,請移除此標籤或將其設為 false,然後重新啟動 Pod。
-
透過使用者配置排除 Pod:
如果無法存取或編輯 Kubernetes YAML 檔案,就可以運用使用者配置檔案,從 IAST 檢測中排除 Pod。下載的套件 examples 資料夾中,提供了一個範例 user-config.json 檔案。範例
{ "name": "demo-app-frontend", "namespace": "default", "ignore": true, "agents": ["java"] }欄位說明- 名稱(必填):Pod 的名稱。
- 名稱空間(必填):Pod 執行所在的名稱空間。
- 忽略(必填):設定為 true 時,IAST 會跳過對此 Pod 的檢測
- 代理程式(必填):指定 IAST 應嘗試安裝哪些代理程式。如果未提供,IAST 將會嘗試所有支援的代理程式類型。值: [java, net-core, nodejs]
使用私有登錄
執行這項作業的原因和時機
程序
-
從公開 IAST 登錄中提取映像:
docker pull iastappscan.azurecr.io/webhook-certificate:latest docker pull iastappscan.azurecr.io/webhook-server:latest docker pull iastappscan.azurecr.io/secagent-sidecar:latest -
將映像推送到您的私有登錄。
Example: docker tag iastappscan.azurecr.io/secagent-sidecar:latest my.registry.com/secagent-sidecar:latest Docker push my.registry.com/secagent-sidecar:latest -
使用下列參數來執行移轉指令碼:
./install-secagent-webhook.sh -n my-namespace --registry=my.registry.com或者,使用 Helm 圖表進行安裝:helm install secagent helm-secagent --wait \ --set config.namespaceConfig.namespaces={test-ns1,test-ns2,test-ns3} \ --set registry=my.registry.com -
如果私有登錄需要身分鑑別,請按照下列步驟操作:
-
建立 JSON 機密文件:

-
執行指令碼或 Helm 圖表,如下所示:
Script: ./install-secagent-webhook.sh -n my-namespace --registry=my.registry.com --registry-config-file=/path/to/registry-credentials.jsonHelm chart: helm install secagent helm-secagent --wait \ --set config.namespaceConfig.namespaces={test-ns1,test-ns2,test-ns3} \ --set registry=my.registry.com \ --set-file registryConfigFile
-
建立 JSON 機密文件:
在受限環境中安裝
執行這項作業的原因和時機
secagent 名稱空間,在其中部署了MutatingAdmissionWebhook。在某些受限制的環境中,不允許自動建立名稱空間。例如:
- 託管式 Kubernetes 平台,例如企業或雲端管理的叢集,只有管理員才能建立名稱空間。
- 具備 RBAC 策略的嚴格環境,這些策略會阻止服務帳戶或指令碼建立名稱空間。
- 已預先配置名稱空間的叢集,必須按現狀使用。
程序
- 提前手動建立並配置名稱空間。
-
使用前面的步驟,在所需的名稱空間中安裝代理程式。如果名為
secagent的命名空間已經存在,安裝指令碼會檢測並使用它,但不嘗試重新建立它。 -
若要解除安裝,請注意在預設情況下,解除安裝指令碼會刪除
secagent名稱空間和所有關聯資源。若要解除安裝 Webhook 但不刪除名稱空間和相關 RBAC 配置,請使用:./uninstall-secagent-webhook.sh --keep-namespace