imperva/terraform-provider-incapsula

GitHub: imperva/terraform-provider-incapsula

Terraform提供商插件,用于通过基础设施即代码自动化管理Incapsula的Web应用防火墙站点配置。

Stars: 47 | Forks: 93

# Terraform `Incapsula` 提供程序 - 网站:https://www.terraform.io - [![Gitter 聊天](https://badges.gitter.im/hashicorp-terraform/Lobby.png)](https://gitter.im/hashicorp-terraform/Lobby) - 邮件列表:[谷歌论坛](http://groups.google.com/group/terraform-tool) ## 维护者 此提供商插件由 [Imperva](https://www.imperva.com/) 团队维护。 ## 要求 ## 构建提供商 将仓库克隆至:`$GOPATH/src/github.com/terraform-providers/terraform-provider-incapsula` ``` $ git clone git@github.com:imperva/terraform-provider-incapsula $GOPATH/src/github.com/terraform-providers/terraform-provider-incapsula ``` 进入提供商目录并构建提供商 ``` $ cd $GOPATH/src/github.com/imperva/terraform-provider-incapsula $ make build ``` ## 使用提供商 ## 开发提供商 如果您希望参与提供商的开发,您首先需要在机器上安装 [Go](http://www.golang.org)(*需要* 1.11 或更高版本)。您还需要正确设置 [GOPATH](http://golang.org/doc/code.html#GOPATH),并将 `$GOPATH/bin` 添加到您的 `$PATH` 环境变量中。 要编译提供商,请运行 `make build`。此命令将构建提供商,并将提供商二进制文件放入 `$GOPATH/bin` 目录。 ``` $ make bin ... $ $GOPATH/bin/terraform-provider-incapsula ... ``` 要测试提供商,您可以简单运行 `make test`。 ``` $ make test ``` 要运行完整的验收测试套件,请运行 `make testacc`。 *注意:* 验收测试会创建真实资源,并且通常需要付费运行。 ``` $ make testacc ``` 提供了一个适用于基于 Mac darwin 64amd 开发者的自动化脚本,该脚本封装了初始设置以及 make 描述的命令。 请注意,在 GNUmakefile 中,OS_ARCH=darwin_amd64 默认处于取消注释状态,适用于 Mac 用户。如果 Linux 用户需要,请将其注释掉,并取消 OS_ARCH=linux_amd64 的注释。 此脚本的主要前提是安装 Brew,它是用于安装依赖库(如 Golang、Terraform 和 Git)的主包管理器。 更多关于此脚本的详细信息在内部代码注释和描述中提供。 脚本位置:**/scripts/tf-provider-incap-orch.sh**。 脚本安装命令的第一步会将此仓库克隆到 /workspace 文件夹,后续运行将从 git 拉取更新。 建议将脚本下载到本地机器的某个目录,并从执行安装命令开始。 ``` ./tf-provider-incap-orch.sh -i "youApiID" "youApiKey" ``` ## 用于测试的模拟服务器 提供了一个模拟的 Imperva API 服务器,用于在没有真实 API 凭据的情况下运行测试。这使得 CI/CD 管道和本地开发无需访问实时 Imperva 环境即可进行。 ### 启动模拟服务器 ``` make server ``` 这会在端口 19443 上启动模拟服务器。服务器输出所需的环境变量: ``` export INCAPSULA_API_ID=mock-api-id export INCAPSULA_API_KEY=mock-api-key export INCAPSULA_BASE_URL=http://localhost:19443 export INCAPSULA_BASE_URL_REV_2=http://localhost:19443 export INCAPSULA_BASE_URL_REV_3=http://localhost:19443 export INCAPSULA_BASE_URL_API=http://localhost:19443 export INCAPSULA_CUSTOM_TEST_DOMAIN=.mock.incaptest.com ``` ### 使用模拟服务器运行测试 ``` # 终端 1: 启动模拟服务器 make server # 终端 2: 运行测试 (需要模拟服务器运行) make test ``` ### 已实现的端点 模拟服务器实现了以下 Imperva API 端点: #### 账户管理 ([Cloud v1 API 文档](https://docs-cybersec-be.thalesgroup.com/api/bundle/api-docs/page/cloud-v1-api-definition.htm)) | 端点 | 方法 | 描述 | | ----------------------------------------- | ------ | ------------------------ | | `/accounts/add` | POST | 创建账户 | | `/account` | POST | 获取账户状态 | | `/accounts/configure` | POST | 更新账户 | | `/accounts/delete` | POST | 删除账户 | | `/accounts/data-privacy/show` | POST | 获取数据隐私设置 | | `/accounts/data-privacy/set-region-default` | POST | 设置默认数据区域 | #### 站点管理 ([Cloud v1 API 文档](https://docs-cybersec-be.thalesgroup.com/api/bundle/api-docs/page/cloud-v1-api-definition.htm)) | 端点 | 方法 | 描述 | | ------------------ | ------ | -------------- | | `/sites/add` | POST | 创建站点 | | `/sites/status` | POST | 获取站点状态 | | `/sites/configure` | POST | 更新站点 | | `/sites/delete` | POST | 删除站点 | #### CSP 预批准域名 ([CSP API 文档](https://docs-cybersec-be.thalesgroup.com/api/bundle/api-docs/page/csp-api-definition.htm)) | 端点 | 方法 | 描述 | | ----------------------------------------------------------------- | ----------------- | ---------------- | | `/csp-api/v1/sites/{siteId}/preapprovedlist` | GET | 列出预批准域名 | | `/csp-api/v1/sites/{siteId}/preapprovedlist` | POST | 添加预批准域名 | | `/csp-api/v1/sites/{siteId}/preapprovedlist/{domainRef}` | GET | 获取特定域名 | | `/csp-api/v1/sites/{siteId}/preapprovedlist/{domainRef}` | DELETE | 移除域名 | | `/csp-api/v1/sites/{siteId}/domains/{domainRef}/status` | GET/PUT | 域名状态 | | `/csp-api/v1/sites/{siteId}/domains/{domainRef}/notes` | GET/POST/DELETE | 域名备注 | ### 响应格式 ``` { "res": 0, "res_message": "OK", "debug_info": {...}, "account|site|data": {...} } ``` 错误响应使用非零的 `res` 代码,如 [API 文档](https://docs-cybersec-be.thalesgroup.com/api/bundle/api-docs/page/cloud-v1-api-definition.htm) 中所述。 ### 添加新端点 要向模拟服务器添加新端点: 1. 在 `mock_server.go` 的 `router()` 函数中添加路由 2. 按照现有模式实现处理函数 3. 在 `mock_server_test.go` 中添加测试 4. 更新本文档
标签:API集成, CDN, ECS, EVTX分析, Go语言, Imperva, Incapsula, Terraform, WAF, Web安全, YAML配置, 云基础设施, 可观测性, 安全防护, 提供者插件, 日志审计, 特权提升, 程序破解, 站点管理, 自动化运维, 自动化部署, 蓝队分析