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

下图显示了如下工作流:
用户克隆存储库。
用户运行命令
terraform apply来部署 AWS 资源。Amazon Bedrock 模型配置包括指定用于配置 CrewAI 代理的基础模型(FM)。
已建立 EventBridge 规则,根据定义的计划触发 Lambda 函数。
当触发(通过计划或手动触发)时,Lambda 函数将初始化并担任具有访问权限和 A AWS 服务 mazon Bedrock 权限的 IAM 角色。
CrewAI 框架从 YAML 文件加载代理配置,并创建专门的人工智能代理(AWS 基础设施安全审计团队)。Lambda 函数按顺序执行这些代理来扫描 AWS 资源、分析安全漏洞并生成全面的审计报告。
CloudWatch 日志从 Lambda 函数中捕获详细的执行信息,保留期为 365 天,并且 AWS Key Management Service (AWS KMS) 加密以满足合规性要求。通过这些日志,可以了解代理活动、错误跟踪和性能指标,从而能够对安全审计流程进行有效的监控和问题排查。
安全审计报告将自动生成并存储在指定的 Amazon S3 存储桶中。自动设置有助于保持一致的安全监控,同时最大限度地减少运营开销。
初始部署后,该工作流程无需人工干预即可为您的 AWS 基础架构提供持续的安全审计和报告。
人工智能代理概述
此模式会创建多个人工智能代理,其中每个代理都具有唯一的角色、目标和工具:
安全分析师代理收集和分析 AWS 资源信息。
渗透测试器代理可识别 AWS 资源中的漏洞。
合规专家代理复杂根据合规性标准检查配置。
报告编写者代理负责将调查发现汇编成综合报告。
这些代理协作完成一系列任务,利用他们的集体技能执行安全审计并生成综合报告。(config/agents.yaml 文件概述了该团队中每个代理的能力和配置。)
安全分析处理包含以下操作:
安全分析师代理会检查收集到的有关 AWS 资源的相关数据,例如:
Amazon Elastic Compute Cloud(Amazon EC2)实例和安全组
Amazon 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 年版健康保险流通与责任法案(HIPAA)合规性代理
系统和组织控制(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 工程师 |
(可选)配置代理的手动执行。 | 代理配置为按每日时间表自动运行(世界标准时间午夜)。但是,您可以使用以下步骤手动触发:
有关更多详细信息,请参阅 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 的使用情况。
根据审计范围,实施选择性代理激活。
协作效率
优化代理之间的信息共享。
为复杂的环境实施分层代理结构。
知识库增强
为代理提供其所在领域的专业知识库。
使用新的安全最佳实践定期更新代理知识。