aws-samples/sample-terraform-for-security-agent
GitHub: aws-samples/sample-terraform-for-security-agent
使用 Terraform 和 AWSCC Provider 自动化部署 AWS Security Agent,实现 Web 应用安全风险评估和渗透测试基础设施的快速搭建。
Stars: 1 | Forks: 0
# AWS Security Agent Terraform 配置
此 Terraform 配置演示了如何使用 [AWSCC Terraform provider](https://registry.terraform.io/providers/hashicorp/awscc/latest/docs) 来配置 [AWS Security Agent](https://docs.aws.amazon.com/securityagent/) 资源。
## 概述
AWS Security Agent 通过自动化的设计审查、代码审查和渗透测试,帮助您分析 Web 应用程序的安全风险。此配置自动化了[入门指南](https://docs.aws.amazon.com/securityagent/latest/userguide/setup-security-agent.html)中描述的设置过程。
## 前置条件
- Terraform >= 1.0
- 配置了适当权限的 AWS CLI
- 具有创建 IAM roles 和 Security Agent 资源权限的 AWS 账户
## 本指南涵盖的内容
- **第 1 部分** — 部署应用程序、IAM roles 和 agent space。完成此部分后,您可以访问 Security Agent 控制台和 Web 应用程序。
- **第 2 部分(可选)** — 注册目标域名以进行验证。
- **第 3 部分(可选)** — 使用目标 endpoints 创建渗透测试。
## 创建的资源
### 第 1 部分:应用程序和 Agent Space
| 资源 | 名称 | 用途 |
|----------|------|---------|
| Application | 每个账户一个 | 代表具有其域名和应用程序 role 的 Security Agent Web 应用程序 |
| IAM Role | SecurityAgentAppRole-* | 具有托管策略 `AWSSecurityAgentWebAppPolicy` 的应用程序 role |
| IAM Role | SecurityAgentServiceRole-* | 具有 IAM 和 CloudWatch Logs 内联权限的渗透测试服务 role |
| Agent Space | 可配置 | 用于渗透测试的中央工作区 |
### 第 2 部分:目标域名(可选)
| 资源 | 名称 | 用途 |
|----------|------|---------|
| Target Domain | 可配置 | 注册用于验证的域名 |
### 第 3 部分:渗透测试(可选)
| 资源 | 名称 | 用途 |
|----------|------|---------|
| Pentest | 可配置 | 具有目标 endpoints 的渗透测试 |
## 使用方法
### 第 1 部分:部署应用程序和 Agent Space
1. **克隆并配置**
git clone
cd sample-terraform-for-security-agent
cp terraform.tfvars.example terraform.tfvars
2. **编辑 `terraform.tfvars`**,填入您的 agent space 名称和描述。
3. **部署**
./deploy.sh
或手动执行:
terraform init
terraform plan
terraform apply
4. **记录输出** — 记下 `agent_space_id` 和 `app_role_arn` 的值。
5. **验证**
./post-deploy.sh
### 第 2 部分(可选):注册目标域名
在运行渗透测试之前,您必须注册并验证目标域名的所有权。可以通过 DNS TXT record 或 HTTP route 进行验证。有关详细信息,请参阅[启用测试域名](https://docs.aws.amazon.com/securityagent/latest/userguide/enable-test-domain.html)。
1. **在 `terraform.tfvars` 中设置目标域名**:
target_domain = "your-domain.example.com"
您还可以选择验证方法(`DNS_TXT` 或 `HTTP_ROUTE`,默认为 `DNS_TXT`):
target_domain_verification_method = "DNS_TXT"
2. **部署**:
terraform apply
Terraform 将创建目标域名并返回验证详细信息。检查输出:
terraform output target_domain_verification_details
3. **使用验证 token 更新您的域名**:
- 对于 `DNS_TXT`:将 TXT record 添加到您的 DNS 中,并在 `dns_record_name` 处填入 `token` 值。
- 对于 `HTTP_ROUTE`:在您域名的 `route_path` 路径下提供 `token` 值。
4. **验证** — 一旦 DNS record 或 HTTP route 生效,即可验证域名:
aws securityagent verify-target-domain \
--target-domain-id \
--region
该域名必须达到 `VERIFIED` 状态,然后才能用于渗透测试。
### 第 3 部分(可选):创建渗透测试
1. **在 `terraform.tfvars` 中设置渗透测试变量**:
create_pentest = true
pentest_title = "Q2-Security-Review"
target_endpoints = ["https://your-domain.example.com"]
2. **再次部署**:
terraform apply
## 配置选项
| 变量 | 描述 | 默认值 |
|----------|-------------|---------|
| `aws_region` | 部署的 AWS 区域 | `us-east-1` |
| `agent_space_name` | agent space 的名称 | `MySecurityAgentSpace` |
| `agent_space_description` | agent space 的描述 | `Agent space for pentests` |
| `create_pentest` | 是否创建渗透测试 | `false` |
| `pentest_title` | 渗透测试的标题 | `My-Pentest` |
| `target_endpoints` | 要评估的 endpoint URI 列表 | `[]` |
| `target_domain` | 要注册的域名 | `""` |
| `target_domain_verification_method` | 验证方法(`DNS_TXT` 或 `HTTP_ROUTE`) | `DNS_TXT` |
| `name_postfix` | IAM role 名称的后缀 | `""` |
| `tags` | 所有资源的标签 | 见 `variables.tf` |
## IAM 角色
此配置会创建两个 IAM roles:
- **Application Role** — 受 `securityagent.amazonaws.com` 信任。使用 [`AWSSecurityAgentWebAppPolicy`](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AWSSecurityAgentWebAppPolicy.html) 托管策略(`arn:aws:iam::aws:policy/service-role/AWSSecurityAgentWebAppPolicy`)。Security Agent 服务承担此 role,以授予 Web 应用程序用户与 Security Agent APIs 交互的权限。
- **Penetration Test Service Role** — 受带有源账户条件的 `securityagent.amazonaws.com` 信任。具有授予 `iam:GetRole`、`iam:SimulatePrincipalPolicy`、`logs:CreateLogGroup`、`logs:CreateLogStream` 和 `logs:PutLogEvents` 权限的内联策略。该服务承担此 role 以便在渗透测试期间访问您的 AWS 资源。
有关更多详细信息,请参阅[为 AWS Security Agent 创建 IAM Role](https://docs.aws.amazon.com/securityagent/latest/userguide/create-iam-role.html)。
## 清理
```
./cleanup.sh
```
或手动执行:
```
terraform destroy
```
## 安全
有关更多信息,请参阅 [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications)。
## 许可证
本项目基于 MIT-0 许可证授权。有关详细信息,请参阅 [LICENSE](LICENSE) 文件。
标签:AWS, AWSCC Provider, CISA项目, CloudWatch, DevSecOps, DPI, EC2, ECS, IaC, IAM角色, OPA, Pentest, Terraform, 上游代理, 代码审查, 反取证, 域名验证, 安全, 安全审查, 安全评估, 特权提升, 自动化部署, 超时处理, 靶场