amjad489/tiaki
GitHub: amjad489/tiaki
Tiaki 是一款用 Go 编写的 AWS 只读安全扫描器,专门评估云环境是否符合 NZISM 和 PSR 信息安全控制要求。
Stars: 0 | Forks: 0
# Tiaki
**针对选定 NZISM 和 PSR 信息安全控制项的 AWS 只读技术就绪状态扫描器**
*Tiaki* — 毛利语:*守护、保护、照看。*
[](https://github.com/amjad489/tiaki/actions/workflows/ci.yml)
[](https://goreportcard.com/report/github.com/amjad489/tiaki)
[](LICENSE)
[](go.mod)
## 功能简介
Tiaki 使用 **只读** 凭证连接到 AWS 账户,并评估一系列精选的技术控制项,这些控制项摘自 **新西兰信息安全手册 (NZISM)** 和 **保护性安全要求 (PSR)**。它会生成结构化的报告,格式支持 **JSON、终端或 HTML**。每项发现都说明了其证据、修复建议、映射的控制项,并且至关重要的是,**说明了该自动化检查无法验证的内容**。
- 🔒 **只读,无凭证留存。** 没有 mutating API 调用;绝不存储任何凭证。Tiaki 使用标准的 AWS 凭证链 (env / shared config / SSO / IMDS)。
- 📦 **单一静态二进制文件。** 无需安装 runtime — 直接将其放入任何 shell 或 CI pipeline 中即可。
- 🧾 **带版本号的映射控制项。** 每个报告都会记录所使用的 NZISM/PSR 映射修订版本。
- 🧪 **设计诚实。** 报错的检查绝不会被计为通过;每项发现都附有明确的限制说明和误报提示。
## 快速开始
```
# 从源代码构建 (Go 1.24+)
git clone https://github.com/amjad489/tiaki.git
cd tiaki
make build # produces ./bin/tiaki
# 以常规方式配置只读 AWS credentials,然后:
./bin/tiaki scan --region ap-southeast-2 --format terminal
./bin/tiaki scan --region ap-southeast-2 --format json --output report.json
./bin/tiaki scan --region ap-southeast-2 --format html --output report.html
# 检查 control catalog / mappings
./bin/tiaki controls
./bin/tiaki controls --validate # CI guard: every check maps to a known control
```
无需连接 AWS 即可查看完全渲染的示例:[`examples/sample-report.json`](examples/sample-report.json)
和 [`examples/sample-report.html`](examples/sample-report.html) (合成数据 — 账户 `000000000000`)。
## 最小权限 IAM
Tiaki 仅需要 read/describe/list 权限。您可以附加 AWS 托管的 **`SecurityAudit`** 策略,或使用 [`docs/iam-policy.json`](docs/iam-policy.json) 中更严格的自定义策略。Tiaki 的任何调用都
无法修改您的账户。
## 检查内容 (MVP)
| Check ID | 领域 | 严重程度 | 映射至 |
|---|---|---|---|
| `iam-root-mfa` | Root 账户已启用 MFA | Critical | NZISM-16.6, PSR-INFOSEC-4 |
| `iam-root-access-keys` | 无 root access keys | Critical | NZISM-16.3, PSR-INFOSEC-4 |
| `iam-access-key-age` | IAM 密钥轮换 ≤ 90 天 | Medium | NZISM-16.1, PSR-INFOSEC-4 |
| `iam-password-policy` | 密码策略 ≥ 14 个字符 | Medium | NZISM-16.1, PSR-INFOSEC-4 |
| `s3-public-access-block` | Bucket 阻止公开访问 | High | NZISM-18.1, PSR-INFOSEC-1 |
| `s3-default-encryption` | Bucket 已进行静态加密 | Medium | NZISM-17.1, PSR-INFOSEC-2 |
| `ec2-ebs-default-encryption` | EBS 默认开启加密 | Medium | NZISM-17.1, PSR-INFOSEC-2 |
| `ec2-sg-open-sensitive-ports` | 没有面向 `0.0.0.0/0` 开放的敏感端口 | High | NZISM-18.4, PSR-INFOSEC-2 |
| `cloudtrail-multi-region` | 多区域 trail 日志记录 | High | NZISM-23.1, PSR-INFOSEC-2 |
| `guardduty-enabled` | 已启用 GuardDuty 威胁检测 | Medium | NZISM-23.1, PSR-GOV-5 |
完整的检查参考文档位于 [`docs/checks.md`](docs/checks.md)。计划中的检查项 (AWS Config,
Security Hub, RDS/backups, VPC Flow Logs, KMS rotation, CloudWatch retention, Secrets Manager,
多账户治理) 已在 [`docs/roadmap.md`](docs/roadmap.md) 中跟进 — Tiaki **不会**
默默声称其具备实际上并未实现的覆盖范围。
## 发现结果结构
每项发现都会准确报告以下字段:
```
Finding Root account has MFA enabled
Severity CRITICAL
Status FAIL
Affected resource account:123456789012
Observed evidence IAM account summary reports AccountMFAEnabled=0
Recommended fix Register a hardware/virtual MFA device on the root user
Relevant control NZISM-16.6, PSR-INFOSEC-4
Automated limit Detects MFA registration only; cannot verify the device is
held securely or that root login is genuinely avoided
```
## 🧭 范围与限制
Tiaki 仅评估 **AWS 技术配置**。它 **无法** 评估:
- 书面政策、程序或员工安全实践
- 数据分类和处理决策
- 物理和人员安全 (PSR PERSEC/PHYSEC 领域)
- 法律或法规合规性 (例如《2020年隐私法》)
- 架构对于其风险环境的 *正确性*
控制项映射是 **指示性** 的,并非权威的法律解释,并且 **带有版本号**
(`nzism-psr-map-x.y.z`),因此历史报告仍可复现。`PASS` 仅意味着观察到了特定的技术
设置 — 并不代表底层的控制目标已完全满足。请将 Tiaki 的输出视为 **待审查的证据**,
绝不能直接视为最终验收。
## 文档
- [架构设计](docs/architecture.md) — 设计、数据流和图表
- [检查项参考](docs/checks.md) — 每个检查项的逻辑及其限制
- [IAM 策略](docs/iam-policy.json) — 最小权限的只读权限
- [路线图](docs/roadmap.md) — 计划的检查项和配置文件
- [安全政策](SECURITY.md) — 负责任的披露
- [贡献指南](CONTRIBUTING.md) — 如何添加检查项
## 贡献
欢迎提供新的检查项 — 每个检查项都是单个自注册文件。请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。
## 许可证
采用 [Apache License 2.0](LICENSE) 授权。Tiaki 是一个独立的开源项目,
**不隶属于、不受认可,也不是** 新西兰政府、GCSB
或 PSR 的官方产品。"NZISM" 和 "PSR" 指代公开发布的框架,此处仅作描述性使用。标签:AWS, DPI, EVTX分析, Go, Ruby工具, 关系图谱, 合规扫描, 图探索, 基线检查, 日志审计, 聊天机器人