

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 最佳实践
<a name="best-practices"></a>

我们推荐这些最佳实践，以便在 AI 代理应用程序中有效使用 AgentCore 内存。

**Topics**
+ [加密你的内存](#encrypting-your-memory)
+ [内存中毒或提示注入](#memory-poisoning-prevention)
+ [Least-privilege 原理](#least-privilege-principle)

## 加密你的内存
<a name="encrypting-your-memory"></a>

存储在 AgentCore 内存中的数据始终使用 Amazon KMS 密钥进行静态加密。默认情况下，加密使用 Amazon自有和托管的 KMS 密钥。您可以选择使用自己的 Amazon 账户配置客户管理的 KMS 密钥，通过指定创建内存`encryptionKeyArn`来进一步控制加密。

## 内存中毒或提示注入
<a name="memory-poisoning-prevention"></a>

在通过 CreateEvent API 处理对话数据并通过 LLM 提取长期内存时，重要的是要防范可能危害数据完整性或系统行为的内存中毒和即时注入攻击。这些安全问题至关重要，因为它们可能导致内存存储损坏和系统响应被操纵。

遵循责任 Amazon 共担模式， Amazon 负责保护亚马逊 Bedrock AgentCore 基础设施。但是，客户有责任进行安全的应用程序开发、输入验证和防止内存提取服务中的即时注入漏洞。这与 Amazon 提供 RDS 等安全数据库引擎的方式类似，但客户必须防止在其应用程序中注入 SQL。

 **威胁 ** 
+  **内存中毒**是一种威胁，攻击者在对话中嵌入虚假信息以破坏长期内存存储。这可能表现为上下文污染，误导性上下文会影响未来的内存检索，或者表现为蓄意的数据完整性攻击，旨在随着时间的推移降低服务质量。
+  **当用户在内存提取期间尝试覆盖系统提示时，或者当对话数据中的恶意内容操纵 LLM 行为时，就会发生提示注入**攻击。这些攻击还可能涉及权限升级尝试访问或修改超出用户权限的内存。

 **预防技巧 ** 
+  **输入验证**构成 `CreateEvent` API 级别保护的基础。在保存到内存之前，使用护栏对用户输入数据进行消毒
+  **安全测试 ** — 使用渗透测试、静态代码分析和动态应用程序安全测试 (DAST) 等技术，定期测试应用程序是否存在即时注入和其他安全漏洞。

## Least-privilege 原理
<a name="least-privilege-principle"></a>

Identity-based 政策决定您是否可以在账户中创建、访问或删除亚马逊 Bedrock AgentCore 资源。这些操作可能会为您的 Amazon 账户带来费用。创建或编辑基于身份的策略时，请遵循以下指南和建议：
+  **开始使用 Amazon 托管策略并转向最低权限权限 ** — 要开始向用户和工作负载授权，请使用为许多常见用例授予权限的 Amazon 托管策略。它们可以在您的 Amazon 账户中找到。我们建议您通过定义特定于您的用例的 Amazon 客户管理策略来进一步减少权限。
+  **应用最低权限**：在使用 IAM 策略设置权限时，请仅授予执行任务所需的权限。为此，您可以定义在特定条件下可以对特定资源执行的操作，也称为最低权限许可。
+  **使用 IAM 策略中的条件进一步限制访问权限**：您可以向策略添加条件来限制对操作和资源的访问。例如，您可以编写策略条件来指定服务角色只能由特定的 AgentCore 内存资源代入。
+  **使用 IAM 访问分析器验证您的 IAM 策略以维护安全和功能权限 ** — [ IAM 访问分析器](https://docs.amazonaws.cn/IAM/latest/UserGuide/what-is-access-analyzer.html)会验证新的和现有的策略，以便这些策略符合 IAM 策略语言 (JSON) 和 IAM 最佳实践。IAM Access Analyzer 提供 100 多项策略检查和可操作的建议，以帮助您制定安全且功能性强的策略。