imperva/terraform-provider-incapsula
GitHub: imperva/terraform-provider-incapsula
Terraform提供商插件,用于通过基础设施即代码自动化管理Incapsula的Web应用防火墙站点配置。
Stars: 47 | Forks: 93
# Terraform `Incapsula` 提供程序
- 网站:https://www.terraform.io
- [](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. 更新本文档
## 维护者
此提供商插件由 [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配置, 云基础设施, 可观测性, 安全防护, 提供者插件, 日志审计, 特权提升, 程序破解, 站点管理, 自动化运维, 自动化部署, 蓝队分析