在 Kubernetes 上为微服务部署 IAST 代理程序
AppScan 支持在 Kubernetes 集群上自动安装 IAST 代理程序。使用 MutatingAdmissionWebhook 可以将 IAST 代理程序自动安装在任何启动 Pod 中。您可以使用 Helm 或 Webhook 脚本安装或删除代理程序。
关于此任务

常规说明
过程
-
下载代理程序:
按照此处所述的方法下载 ASoC Kubernetes IAST 代理程序,并解压缩 ZIP 文件的内容。
- 在集群中安装 IAST 代理程序:
-
重新启动现有 Pod:
完成安装后,重新启动目标命名空间中任何正在运行的 Pod,以确保注入 IAST 代理程序。
-
查看问题中的 Pod 名称:
已报告问题的 Pod 名称可在问题详细信息选项卡中的其他信息下找到。
- 可选: 提供了以下可选功能:
基于 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。
将标签
skip-iast-webhook="true"添加到 Pod 的 YAML 配置中。IAST 突变 webhook 将忽略使用此标签创建的任何新 Pod。 - 要再次包含该 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
