为 AgentCore 网关设置权限
要使用 Amazon Bedrock AgentCore Gateway 及其功能,您需要考虑以下权限:
-
网关 builder/user 权限-向网关构建者或用户提供的允许其创建、管理和/或使用 AgentCore 网关的权限。
-
网关服务角色权限-提供给您将为网关创建的服务角色的权限。这些权限允许 Amazon Bedrock AgentCore 服务代表调用网关的身份执行操作。
-
Resource-based 权限-附加到资源的权限,允许网关服务角色对其进行访问。您将在基于资源的策略中包含网关服务角色的 Amazon 资源名称 (ARN)。
Principal -
基于@@ 网关资源的策略 — 直接附加到网关资源的策略,用于控制哪些委托人可以调用它们。有关更多信息,请参阅 Amazon Bedrock Resource-based AgentCore 政策。
注意
如果您不想设置自定义权限,则可以使用以下选项进行轻松设置:* 将附加BedrockAgentCoreFullAccess到 IAM 身份,使其能够创建、管理和调用网关。* 使用 AWS 管理控制台或 AgentCore CLI 创建具有适当权限的 AgentCore 网关服务角色和具有适当基于资源的策略的网关目标,以允许服务角色访问它们。
选择一个主题以了解更多信息:
网关生成器和用户权限
为了使身份能够创建、管理或使用网关,您需要将基于身份的策略附加到 IAM 身份,以允许其执行 A mazon Bedro AgentCore-related ck 操作。要获得全面权限,您可以使用BedrockAgentCoreFullAccess托管策略。
为了提高安全性和控制力,您可以通过减少完全访问策略中的权限来创建自己的自定义策略。例如,以下策略允许身份执行与 Gate AgentCore way 相关的操作,但不允许执行与其他 AgentCore 服务(例如 AgentCore Runtime 或 B AgentCore rowser)相关的操作:
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "bedrock-agentcore:*Gateway*", "bedrock-agentcore:*WorkloadIdentity", "bedrock-agentcore:*CredentialProvider", "bedrock-agentcore:*Token*", "bedrock-agentcore:*Access*" ], "Resource": "arn:aws:bedrock-agentcore:*:*:*gateway*" } ] }
- 以下自定义策略限制性更强,仅允许对网关和网关目标进行读取访问
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "bedrock-agentcore:ListGateways", "bedrock-agentcore:GetGateway", "bedrock-agentcore:ListGatewayTargets", "bedrock-agentcore:GetGatewayTarget" ], "Resource": "arn:aws:bedrock-agentcore:*:*:*gateway*" } ] }
网关访问权限(入站授权)
除了与网关相关的权限外,您还需要为身份配置权限,以便能够在调用期间访问网关。您将在设置入站授权时配置这些权限。
AgentCore 网关服务角色权限
创建网关时,您需要一个有权代替 IAM 角色并有权代表该 IAM 角色访问 AWS 资源和外部服务的服务角色。您可以通过以下方式创建服务角色:
-
如果您在 AWS 管理控制台或通过 AgentCore CLI 创建网关,则可以选择允许 AgentCore 自动为您创建具有必要权限的服务角色。如果你更喜欢这种方法,你可以跳过这个先决条件。
-
如果您希望创建自己的服务角色以实现更高的自定义,则需要使用本主题中概述的权限配置该角色。要了解如何创建服务角色并向其附加权限,请参阅创建角色以向 AWS 服务委派权限。
以下主题中列出了服务角色所需的权限:
信任权限
服务角色必须附加信任策略,该策略允许该 AgentCore 服务假设 IAM 身份并代表其执行操作。
以下是您可以使用的信任策略示例。
{ "Version":"2012-10-17", "Statement": [ { "Sid": "GatewayAssumeRolePolicy", "Effect": "Allow", "Principal": { "Service": "bedrock-agentcore.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "ArnLike": { "aws:SourceArn": "arn:aws:bedrock-agentcore:us-east-1:111122223333:gateway/gateway-name-*" } } } ] }
注意
由于在创建网关 ARN 之前您不会知道它,因此可以在首次创建服务角色时省略该Condition字段。创建网关后,作为最佳安全实践,将该Condition字段重新添加到策略中,然后执行以下操作:* 将aws:SourceAccount条件键值替换为网关所属账户的 ID。* 将aws:SourceArn条件密钥替换为网关的 ARN。
出站授权权限
根据您对网关目标使用的出站授权类型,您需要为服务角色添加权限以允许其调用目标。这些权限允许网关服务角色检索用于调用目标的授权凭证。您可以在设置出站授权的过程中执行此操作。
访问权限 AWS 资源
根据您的网关设置或您选择添加到网关的目标,您可能需要向网关服务角色添加权限以允许其访问 AWS 资源。以下主题涵盖了您的网关服务角色可能需要访问的一些资源:
如果您将 Lambda 目标附加到网关,则需要为网 AgentCore 关服务角色添加权限,以便能够通过执行以下操作来调用该函数:
-
将基于身份的策略附加到允许对 Lambda 函数资源
lambda:InvokeFunction执行操作的 AgentCore 网关服务角色。 -
(如果该函数与网关服务角色位于不同的账户中)将基于资源的策略附加到 Lambda 函数,允许网关服务角色主体对 Lambda 函数资源执行操作
lambda:InvokeFunction。
选择一个主题以了解如何设置权限:
主题
===== 将基于身份的策略附加到网关服务角色
要允许网关服务角色访问 Lambda 目标,请将以下基于身份的策略附加到您的 AgentCore 网关服务角色,方法是选择添加和移除与您的用例相关的 IAM 身份权限中的主题并按照步骤操作。
{ "Version": "2012-10-17", "Statement": [{ "Sid": "AmazonBedrockAgentCoreGatewayLambdaProd", "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:us-east-1:123456789012:function:FunctionName" ] }] }
将Resource字段中的 ARN 替换为您的 Lambda 函数网关目标的 ARN。如果您的网关有多个 Lambda 目标,则可以将每个函数的 ARN 添加到列表中。Resource
=====(如果函数在另一个账户中)将基于资源的策略附加到 Lambda 函数
如果 Lambda 函数目标与网关服务角色位于不同的账户中,则需要附加基于资源的策略以允许网关服务角色对其进行访问。以下是您可以使用的策略示例:
{ "Version":"2012-10-17", "Statement": [ { "Sid": "LambdaAllowGatewayServiceRoleMyFunction", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/MyGatewayExecutionRole" }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:MyFunction" } ] }
替换以下字段的值:
-
AWS— 使用您的网关服务角色的 ARN。 -
Resource— 使用你的 Lambda 函数的 ARN。- 要了解如何将基于资源的策略附加到 Lambda 函数以允许您的网关服务角色访问该函数,请选择以下方法之一
例
如果您计划包含来自 Amazon S3 URI 的网关目标工具定义,则需要包括网关服务角色访问存储桶的权限。该AmazonS3ReadOnlyAccess策略是您可以附加到服务角色的策略的示例。为了提高安全性,您可以Resource将范围限定为 S3 位置。
如果您计划添加 Smithy 目标,则需要为网关服务角色添加访问您的 Smithy 模型所引用的 AWS 服务的权限。要确定需要将哪些权限附加到服务角色,请参阅该服务的文档。
您可以通过选择添加和移除与您的用例相关的 IAM 身份权限中的主题并按照步骤操作来为服务角色添加权限。
例如,如果您的 Smithy 模型目标访问一个 DynamoDB 表,则可以附加以下策略以允许该服务角色对该表执行 DynamoDB 操作:
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:Query", "dynamodb:Scan" ], "Resource": "arn:aws:dynamodb:*:*:table/*" } ] }
网关权限的最佳实践
- 遵循最低权限原则
-
-
仅授予网关运行所需的权限
-
尽可能使用特定的资源 ARN 而不是通配符
-
定期审查和审计权限
-
- 按职能区分角色
-
-
使用不同的角色进行管理和执行
-
为具有不同目的的不同网关创建单独的角色
-
- 安全的凭证存储
-
-
在 Secrets Manager 中 AWS 存储 API 密钥和 OAuth 凭证
-
定期轮换凭证
-
- 监控和审计
-
-
为网关操作启用 CloudTrail 日志记录
-
定期查看访问模式和权限使用情况
-
- 在政策中使用条件
-
-
添加条件以限制何时以及如何使用权限
-
考虑使用源 IP 限制进行管理操作
-