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 [![Terraform Registry](https://img.shields.io/badge/terraform-registry-blueviolet)](https://registry.terraform.io/providers/darkhonor/technitium/latest) [![Go Version](https://img.shields.io/badge/go-1.26-blue)](https://go.dev/) [![License: MPL-2.0](https://img.shields.io/badge/license-MPL--2.0-orange)](LICENSE) [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/darkhonor/terraform-provider-technitium/badge)](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, 请求拦截, 资源记录, 防御性安全, 防御规避, 隐私保护