配置了一个人工智能智能体,赋予了它调整模型的权限,给予了它读取简单存储服务的权限,授予了它写入数据库的权限。投入使用后发觉它在凌晨三点自行跑去扫描了一回简单存储服务存储桶列表。并非遭受攻击,而是智能体“认为有必要”。怎样预防这种情况发生呢?
那就是,AI Agent 不一样,它和传统应用有着根本区别,此区别在于,其行为不是完全能够被预测的,传统应用,是写了什么样的代码就会去执行什么样的,而 Agent 则是依据 prompt 以及上下文来进行动态决策的。
因此,安全策略单单依靠「审查代码」是不行的,还需要「运行时约束」,以及「事后审计」。
这篇讲四个层面的防护方案,全部基于亚马逊云科技的原生服务。
第一层:IAM 最小权限
为 Agent 配置专门的 IAM Role,其权限依照最小化原则来遵循。
举例:一个只需要调 Bedrock 推理的 Agent:
{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": ["bedrock:InvokeModel"],
"Resource": "arn:aws-cn:bedrock:*::foundation-model/anthropic.claude-*"
}]
}
要点:
第二层:VPC 网络隔离
Agent 运行于私有子网之中,并非暴露于公网,借由 VPC Endpoint 去访问 Bedrock、S3 等服务。
利处在于,即便 Agent 遭受 prompt injection 攻击,进而尝试去访问外部 URL,然而网络层会直接予以拒绝。
位于第三层的是,CloudTrail与CloudWatch共同进行的审计。
CloudTrail 会记录 Agent 的每一次 API 调用,并且配合 CloudWatch 进行实时告警。
致使 Bedrock 模型援引记录开始运行,将每一回模型运用的详尽资讯予以记载。
第四层:Bedrock Guardrails
在模型层面加安全策略:
调用时传入 guardrailIdentifier:
response = client.invoke_model(
modelId='anthropic.claude-3-sonnet-20240229-v1:0',
guardrailIdentifier='my-guardrail',
guardrailVersion='1',
body=request_body
)
四层组合
IAM(权限) + VPC(网络) + CloudTrail(审计) + Guardrails(内容)
每层独立工作,任何一层被绕过,其他层仍然有效。
关键思维
从「代码是被信任的Agent」转变为「行为是受到约束的Agent」。
智能体有可能去做任何其拥有权限能够做的事情,安全策略需要假定它会如此,紧跟着运用技术手段去保证它仅仅做你所准许的事情。
亚马逊的Bedrock,其链接为:https://aws.amazon.com/cn/bedrock/。
基岩护栏:https://aws.amazon.com/cn/基岩/护栏/。这里就是指这个链接所对应的具体内容呀,是关于基岩护栏的相关介绍等,通过这个链接呈现出来。
CloudTrail,其链接为,https://aws.amazon.com/cn/cloudtrail/。
