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, 上游代理, 代码审查, 反取证, 域名验证, 安全, 安全审查, 安全评估, 特权提升, 自动化部署, 超时处理, 靶场