本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Terraform 在 Amazon Bedrock 上使用 CrewaI 框架部署代理系统
Vanitha Dontireddy,亚马逊 Web Services
摘要
这种模式演示了如何使用与 A mazon Bedrock
先决条件和限制
先决条件
AWS 账户 拥有适当权限访问 Amazon Bedrock 基础模型的活跃人士
已安装
Python 版本 3.9 或更高版本
限制
代理交互受模型上下文窗口的限制。
大规模部署的 Terraform 状态管理注意事项适用于这种模式。
有些 AWS 服务 并非全部可用 AWS 区域。有关区域可用性,请参阅按地区划分的AWS 服务
。有关特定终端节点,请参阅服务终端节点和配额,然后选择服务的链接。
架构
在这种模式下,会发生以下相互作用:
Amazon Bedrock 通过其基础模型套件为特工情报奠定了基础 (FMs)。它为 AI 代理提供自然语言处理 (NLP)、推理和决策能力,同时保持高可用性和可扩展性。
CrewaI 框架是创建和管理 AI 代理的核心编排层。它可以在与 Amazon Bedrock 集成的同时处理代理通信协议、任务委派和工作流程管理。
Terraform 通过代码管理整个基础设施堆栈,包括计算资源、网络、安全组和 AWS Identity and Access Management (IAM) 角色。它可确保跨环境进行一致的、受版本控制的部署。Terraform 部署创建了以下内容:
AWS Lambda 运行 CrewaI 应用程序的函数
用于存储代码和报告的亚马逊简单存储服务 (Amazon S3) Service 存储桶
具有适当权限的 IAM 角色
Amazon CloudWatch 日志
由亚马逊计划执行 EventBridge
下图说明了使用 Amazon Bedrock 和 Terraform 部署 Crewai 多代理系统的架构。

图表显示了以下工作流:
用户克隆存储库。
用户运行命令
terraform apply来部署 AWS 资源。Amazon Bedrock 模型配置包括指定用于配置 CrewaI 代理的基础模型 (FM)。
已建立 EventBridge 规则,根据定义的计划触发 Lambda 函数。
当触发(通过计划或手动触发)时,Lambda 函数将初始化并担任具有访问权限和 A AWS 服务 mazon Bedrock 权限的 IAM 角色。
CrewaI 框架从 YAML 文件加载代理配置,并创建专门的 AI 代理(AWS 基础设施安全审计组)。Lambda 函数按顺序执行这些代理来扫描 AWS 资源、分析安全漏洞并生成全面的审计报告。
CloudWatch 日志从 Lambda 函数中捕获详细的执行信息,保留期为 365 天,并且 AWS Key Management Service (AWS KMS) 加密以满足合规性要求。这些日志提供了对代理活动、错误跟踪和性能指标的可见性,从而可以对安全审计过程进行有效的监控和故障排除。
安全审计报告会自动生成并存储在指定的 Amazon S3 存储桶中。自动设置有助于保持一致的安全监控,同时最大限度地减少运营开销。
初始部署后,该工作流程无需人工干预即可为您的 AWS 基础架构提供持续的安全审计和报告。
AI 代理概述
这种模式会创建多个 AI 代理,每个代理都有独特的角色、目标和工具:
安全分析师代理收集和分析 AWS 资源信息。
渗透测试器代理可识别 AWS 资源中的漏洞。
合规专家代理根据合规性标准检查配置。
报告撰写者代理将调查结果汇编成综合报告。
这些代理人协作完成一系列任务,利用他们的集体技能进行安全审计并生成全面的报告。(该config/agents.yaml文件概述了该团队中每个特工的能力和配置。)
安全分析处理包括以下操作:
安全分析师代理会检查收集到的有关 AWS 资源的相关数据,例如:
亚马逊弹性计算云 (Amazon EC2) 实例和安全组
亚马逊 S3 存储桶和配置
IAM 角色、策略和权限
虚拟私有云 (VPC) 配置和网络设置
Amazon RDS 数据库和安全设置
Lambda 函数和配置
审计范围 AWS 服务 内的其他
渗透测试器代理可识别潜在的漏洞。
代理商通过 CrewaI 框架进行协作以分享调查结果。
报告生成包括以下操作:
报告撰写者代理汇编所有其他代理的调查结果。
安全问题按服务、严重程度和合规性影响进行分类。
针对每个已发现的问题生成补救建议。
将以 markdown 格式创建一份全面的安全审计报告,并上传到指定的 Amazon S3 存储桶。保留历史报告,用于合规性跟踪和安全态势改进。
记录和监控活动包括:
CloudWatch 日志会捕获执行细节和任何错误。
Lambda 执行指标会被记录下来以供监控。
注意
的代码来自 GitHub 3P-agentic_F aws-security-auditor-crew rameworks 存储库,该存储库可在示例
可用性和规模
您可以将可用代理扩展到四个以上的核心代理。要使用其他专业代理进行扩展,请考虑以下新的代理类型:
威胁情报专家代理可以执行以下操作:
监控外部威胁源并与内部发现进行关联
提供与您的基础架构相关的新出现威胁的背景信息
根据野外主动利用情况对漏洞进行优先级排序
合规框架代理人可以专注于特定的监管领域,例如:
支付卡行业数据安全标准 (PCI DSS) 合规代理
1996 年 Health Insurance 流通与责任法案 (HIPAA) 合规代理人
系统和组织控制 2 (SOC 2) 合规代理
《通用数据保护条例》(GDPR) 合规代理
通过深思熟虑地扩展可用代理,该解决方案可以提供更深入、更专业的安全见解,同时保持大型 AWS 环境的可扩展性。有关实现方法、工具开发和扩展注意事项的更多信息,请参阅其他信息。
工具
AWS 服务
Amazon Bedrock 是一项完全托管的人工智能服务,可通过统一的 API 提供高性能基础模型 (FMs) 以供使用。
Amazon CloudWatch Lo gs 可帮助您集中所有系统和应用程序的日志, AWS 服务 这样您就可以监控它们并安全地将其存档。
Amazon EventBridge 是一项无服务器事件总线服务,可帮助您将应用程序与来自各种来源的实时数据连接起来。例如, AWS Lambda 函数、使用 API 目的地的 HTTP 调用端点或其他 AWS 账户目的地的事件总线。在这种模式中,它用于安排和协调代理工作流程。
AWS Identity and Access Management (IAM) 通过控制谁经过身份验证并有权使用 AWS 资源,从而帮助您安全地管理对资源的访问权限。
AWS Lambda 是一项计算服务,可帮助您运行代码,无需预置或管理服务器。它仅在需要时运行您的代码,并且能自动扩缩,因此您只需为使用的计算时间付费。
适用于 Python (Boto3) 的 AWS SDK
是一个软件开发套件,可帮助您将 Python 应用程序、库或脚本与集成 AWS 服务。 Amazon Simple Storage Service (Amazon S3) 是一项基于云的对象存储服务,可帮助您存储、保护和检索任意数量的数据。在这种模式中,它为代理工件和状态管理提供对象存储。
其他工具
代码存储库
此模式的代码可在 GitHub deploy-crewai-agents-terraform
最佳实践
操作说明
| Task | 描述 | 所需技能 |
|---|---|---|
克隆存储库。 | 要在本地计算机上克隆此模式的存储库,请运行以下命令:
| DevOps 工程师 |
编辑环境变量。 | 要编辑环境变量,请执行以下操作:
| DevOps 工程师 |
创建基础架构。 | 要创建基础架构,请运行以下命令:
仔细审查执行计划。如果计划的更改可以接受,则运行以下命令:
| DevOps 工程师 |
| Task | 描述 | 所需技能 |
|---|---|---|
访问代理。 | AWS 基础设施安全审计和报告团队中的代理是作为 Lambda 函数部署的。要访问代理,请使用以下步骤:
| DevOps 工程师 |
(可选)配置代理的手动执行。 | 代理配置为按每日计划(UTC 时间午夜)自动运行。但是,您可以使用以下步骤手动触发它们:
有关更多详细信息,请参阅 Lambda 文档中的在控制台中测试 Lambda 函数。 | DevOps 工程师 |
访问代理日志以进行调试。 | CrewaI 代理在 Lambda 环境中运行,他们拥有执行安全审计和在 Amazon S3 中存储报告的必要权限。输出是一份降价报告,可对您的 AWS 基础架构进行全面的安全分析。 要帮助对代理行为进行详细调试,请执行以下操作:
| DevOps 工程师 |
查看代理执行的结果。 | 要查看代理执行的结果,请执行以下操作:
报告以基于时间戳的文件名存储,如下所示: | DevOps 工程师 |
监控代理的执行情况。 | 要通过 CloudWatch 日志监控代理的执行情况,请执行以下操作:
| DevOps 工程师 |
自定义代理行为。 | 要修改代理或其任务,请执行以下操作:
| DevOps 工程师 |
| Task | 描述 | 所需技能 |
|---|---|---|
删除已创建的资源。 | 要删除由此模式创建的所有基础架构,请运行以下命令:
警告以下命令将永久删除由此模式创建的所有资源。在删除任何资源之前,该命令将提示您进行确认。 仔细审查销毁计划。如果计划的删除是可以接受的,则运行以下命令:
| DevOps 工程师 |
故障排除
| 事务 | 解决方案 |
|---|---|
代理行为 | 有关此问题的信息,请参阅 Amazon Bedrock 文档中的测试代理行为并对其进行故障排除。 |
Lambda 网络问题 | 有关这些问题的信息,请参阅 Lambda 文档中的 Lambda 中的网络问题疑难解答。 |
IAM 权限 | 有关这些问题的信息,请参阅 IAM 文档中的 IAM 疑难解答。 |
相关资源
AWS 博客
AWS 文档
其他资源
其他信息
本节包含有关实现方法、工具开发和扩展注意事项的信息,这些注意事项与之前在《自动化与规模》中讨论的内容有关。
实施方法
请考虑使用以下方法来添加代理:
代理配置:
向
config/agents.yaml文件中添加新的代理定义。为每位代理定义专门的背景故事、目标和工具。
根据代理专业配置内存和分析功能。
任务编排:
更新
config/tasks.yaml文件以包含新的代理特定任务。在任务之间创建依赖关系,以帮助确保正确的信息流。
在适当的情况下实现并行任务执行。
技术实施
以下是拟议的威胁情报专家代理agents.yaml文件中的新增内容:
Example new agent configuration in agents.yaml threat_intelligence_agent: name: "Threat Intelligence Specialist" role: "Cybersecurity Threat Intelligence Analyst" goal: "Correlate AWS security findings with external threat intelligence" backstory: "Expert in threat intelligence with experience in identifying emerging threats and attack patterns relevant to cloud infrastructure." verbose: true allow_delegation: true tools: - "ThreatIntelligenceTool" - "AWSResourceAnalyzer"
工具开发
借助 CrewaI 框架,您可以采取以下措施来提高安全审计人员的效率:
为新代理创建自定义工具。
与外部集成 APIs 以获取威胁情报。
针对不同的 AWS 服务情况开发专门的分析仪。
扩展注意事项
在扩展您的 AWS 基础设施安全审计和报告系统以处理更大的环境或更全面的审计时,请考虑以下扩展因素:
计算资源
增加 Lambda 内存分配以处理其他代理。
考虑将代理工作负载分成多个 Lambda 函数。
成本管理
随着代理数量的增加,监控 Amazon Bedrock API 的使用情况。
根据审计范围实施选择性代理激活。
协作效率
优化代理之间的信息共享。
为复杂的环境实现分层代理结构。
知识库增强
为代理提供其领域的专业知识库。
使用新的安全最佳实践定期更新代理知识。