darkhonor/terraform-provider-technitium
GitHub: darkhonor/terraform-provider-technitium
面向 Technitium DNS Server 的 Terraform Provider,内置 DISA STIG 合规验证和 NIST SP 800-53 可追溯性,实现 DNS 基础设施即代码与安全合规的一体化管理。
Stars: 1 | Forks: 0
# Technitium DNS Server 的 Terraform Provider
[](https://registry.terraform.io/providers/darkhonor/technitium/latest)
[](https://go.dev/)
[](LICENSE)
[](https://scorecard.dev/viewer/?uri=github.com/darkhonor/terraform-provider-technitium)
## 概述
[Technitium DNS Server](https://technitium.com/dns/) 是一款开源、跨平台、自托管的 DNS 服务器,配备了功能完备的 Web 控制台。它支持权威区域、递归解析、DNSSEC、DNS-over-HTTPS/TLS、屏蔽等功能,是生产环境 DNS 基础设施的绝佳选择。
该 Provider 使您能够通过 Terraform 以基础设施即代码的方式全面管理 Technitium DNS Server。在声明式 HCL 中定义区域 (zone)、记录 (record)、TSIG 密钥、DNSSEC 配置以及服务器级设置,然后使用与您管理其他基础设施相同的工作流程进行规划、审查和应用更改。
该 Provider 的独特之处在于其内置了 [DISA STIG](https://www.cyber.mil/stigs) 合规性验证,并提供完整的 [NIST SP 800-53 Rev. 5](https://csrc.nist.gov/pubs/sp/800-53/r5/upd1/final) 可追溯性。系统会在 `terraform validate` 和 `terraform plan` 阶段评估 28 项 DNS 安全要求,在错误配置到达您的 DNS 服务器之前将其拦截。
**支持的 STIG:**
| STIG | 版本 | 发布日期 |
|---|---|---|
| [BIND 9.x STIG](https://www.cyber.mil/stigs) | V3R1 | 2025-07-14 |
| [Windows Server 2022 DNS STIG](https://www.cyber.mil/stigs) | V2R3 | 2025-04-02 |
## 功能
- DNS 区域管理(Primary、Secondary、Stub、Forwarder)
- DNS 记录管理(A、AAAA、CNAME、MX、TXT、SRV、PTR、NS、CAA),支持多记录配置,适用于轮询、多个 MX 交换器以及其他多值配置
- DNSSEC 签名配置
- 用于认证区域传输的 TSIG 密钥管理
- 服务器级 DNS 设置
- 域名屏蔽和允许
- 内置 DISA STIG 合规性验证(28 项 DNS 安全要求)
- [NIST SP 800-53 Rev. 5](https://csrc.nist.gov/pubs/sp/800-53/r5/upd1/final) 控制项可追溯性和基线分类
- 支持 NSS/[CNSSI 1253](https://www.cnss.gov/CNSS/issuances/Instructions.cfm) 以适用于涉密环境
- TLS 配置,支持自定义 CA 和环境变量回退
- 客户端 DNS 记录输入验证
## 快速开始
配置 Provider,创建一个区域,并添加一条记录:
```
terraform {
required_providers {
technitium = {
source = "darkhonor/technitium"
version = "~> 1.0"
}
}
}
provider "technitium" {
server_url = "https://dns.example.com"
api_token = var.technitium_api_token
}
resource "technitium_zone" "example" {
name = "example.com"
type = "Primary"
}
resource "technitium_record" "web" {
zone = technitium_zone.example.name
name = "www.example.com"
type = "A"
value = "192.168.1.100"
}
```
完全支持在同一名称和类型下拥有多条记录 —— 设置 `overwrite = false` 以管理 RRset 中的单个记录:
```
resource "technitium_record" "web1" {
zone = technitium_zone.example.name
name = "www.example.com"
type = "A"
value = "192.168.1.100"
overwrite = false
}
resource "technitium_record" "web2" {
zone = technitium_zone.example.name
name = "www.example.com"
type = "A"
value = "192.168.1.101"
overwrite = false
}
```
也可以使用环境变量来配置 Provider:
```
export TECHNITIUM_SERVER_URL="https://dns.example.com"
export TECHNITIUM_API_TOKEN="your-api-token"
```
对于私有或自定义 CA 颁发的证书,Provider 支持以下 TLS 选项:
```
provider "technitium" {
server_url = "https://dns.example.com"
api_token = var.technitium_api_token
ca_cert_file = "/etc/ssl/certs/internal-ca.pem"
tls_server_name = "dns.example.com"
tls_min_version = "1.3"
}
```
## STIG 合规性
该 Provider 内置了源自 DISA STIG 的 28 项 DNS 安全要求,并在 `terraform validate` 和 `terraform plan` 阶段进行验证 —— 无需外部工具或事后扫描。每项发现都包含 STIG 规则 ID、严重性以及映射的 NIST SP 800-53 Rev. 5 控制项,以提供完整的审计可追溯性。
提供三种执行模式:
| 模式 | 行为 |
|---|---|
| **strict**(默认) | 错误将阻止 `terraform apply` |
| **warn** | 警告会显示在计划输出中,但不会阻止操作 |
| **silent** | 抑制所有 STIG 诊断信息 |
对于涉密环境,NSS 模式会将控制项映射到 [CNSSI 1253](https://www.cnss.gov/CNSS/issuances/Instructions.cfm) 基线(低、中、高),并仅执行适用于所选分类级别的要求。
有关完整详情,请参阅 [STIG 合规性指南](docs/guides/stig-compliance.md) 和 [DISA STIG 库](https://www.cyber.mil/stigs)。
## 系统要求
| 要求 | 版本 |
|---|---|
| [Terraform](https://www.terraform.io/downloads.html) | >= 1.0 |
| [Go](https://go.dev/dl/) (用于构建) | >= 1.26 |
| [Technitium DNS Server](https://technitium.com/dns/) | >= 13.x |
## 安装
### Terraform Registry(推荐)
```
terraform {
required_providers {
technitium = {
source = "darkhonor/technitium"
version = "~> 1.0"
}
}
}
```
然后运行 `terraform init`。
### 本地开发
克隆仓库并将 Provider 二进制文件安装到您的本地插件目录:
```
git clone https://github.com/darkhonor/terraform-provider-technitium.git
cd terraform-provider-technitium
make install
```
## 文档
- [Terraform Registry 文档](https://registry.terraform.io/providers/darkhonor/technitium/latest/docs)
- [STIG 合规性指南](docs/guides/stig-compliance.md)
## 开发
### 构建
```
git clone https://github.com/darkhonor/terraform-provider-technitium.git
cd terraform-provider-technitium
make build
```
### 测试
运行单元测试:
```
make test
```
运行完整的验收测试套件(需要 Docker):
```
make testacc-up
```
这将启动一个 Technitium DNS Server 容器,配置一个新的 API token,并运行所有验收测试。容器将保持运行状态以便您进行迭代。完成后将其拆除:
```
make testacc-down
```
### FIPS 构建
使用 BoringCrypto 构建以满足 FIPS 140-2 合规性:
```
make build-fips
```
也提供 FIPS 模式测试:
```
make test-fips
```
### 生成文档
Registry 格式的文档使用
[tfplugindocs](https://github.com/hashicorp/terraform-plugin-docs) 生成:
```
make docs
```
### Linting
```
make lint
```
## 许可证
MPL-2.0。详见 [LICENSE](LICENSE)。
标签:BIND STIG, CNSSI 1253, DISA STIG, DNS over HTTPS, DNS over TLS, DNSSEC, DNS 管理, EC2, EVTX分析, Go 语言, IaC, NIST SP 800-53, STIG, Technitium DNS, Terraform Provider, 区域管理, 域名系统, 安全合规, 安全基线, 教学环境, 日志审计, 私有化部署, 网络代理, 网络安全, 自动化运维, 自托管 DNS, 请求拦截, 资源记录, 防御性安全, 防御规避, 隐私保护