設定 AgentCore Gateway 的許可
若要使用 Amazon Bedrock AgentCore Gateway 及其功能,您需要考慮下列許可:
-
閘道建置器/使用者許可 – 提供給閘道建置器或使用者的許可,以允許它建立、管理和/或使用 AgentCore 閘道。
-
閘道服務角色許可 – 提供給您為閘道建立之服務角色的許可。這些許可允許 Amazon Bedrock AgentCore 服務代表叫用閘道的身分執行動作。
-
以資源為基礎的許可 – 連接到 資源的許可,以允許閘道服務角色存取它。您將在以資源為基礎的政策
Principal中包含閘道服務角色的 Amazon Resource Name (ARN) 做為 。 -
閘道資源型政策 – 直接連接到閘道資源的政策,以控制哪些主體可以叫用它們。如需詳細資訊,請參閱 Amazon Bedrock AgentCore 的資源型政策。
注意
如果您不想設定自訂許可,您可以使用下列選項輕鬆設定:* 將 BedrockAgentCoreFullAccess 連接到 IAM 身分,以允許它建立、管理和叫用閘道。* 使用 AWS 管理主控台或 AgentCore CLI 建立具有適當許可的 AgentCore 閘道服務角色,以及具有適當資源型政策的閘道目標,以允許服務角色存取它們。
選取主題以進一步了解:
閘道建置器和使用者許可
若要讓身分能夠建立、管理或使用閘道,您需要將身分型政策連接至 IAM 身分,以允許其執行 Amazon Bedrock AgentCore 相關動作。如需完整許可,您可以使用 BedrockAgentCoreFullAccess 受管政策。
為了提高安全性和控制,您可以透過減少完整存取政策中的許可來建立自己的自訂政策。例如,下列政策允許身分執行與 AgentCore Gateway 相關的動作,但不執行與其他 AgentCore 服務相關的動作,例如 AgentCore 執行期或 AgentCore 瀏覽器:
{ "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 Gateway 服務角色許可
建立閘道時,您需要具有許可的服務角色,以擔任 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 之前就不知道閘道 ARN,因此您可以在第一次建立服務角色時省略 Condition 欄位。建立閘道之後,請將 Condition 欄位新增回政策做為最佳實務,並執行下列動作:* 將aws:SourceAccount條件索引鍵值取代為閘道所屬的帳戶 ID。* 將aws:SourceArn條件索引鍵取代為閘道的 ARN。
傳出授權許可
根據您用於閘道目標的傳出授權類型,您需要將許可新增至服務角色,以允許它叫用目標。這些許可允許閘道服務角色擷取用於調用目標的授權憑證。您可以在設定傳出授權的過程中執行此操作。
存取 AWS 資源的許可
視您的閘道設定或您選擇新增至閘道的目標而定,您可能需要將許可新增至閘道服務角色,以允許它存取 AWS 資源。下列主題涵蓋閘道服務角色可能需要存取的一些資源:
如果您將 Lambda 目標連接至閘道,則需要新增 AgentCore Gateway 服務角色的許可,才能執行下列動作來叫用函數:
-
將身分型政策連接至 AgentCore Gateway 服務角色,以允許 Lambda 函數資源上的
lambda:InvokeFunction動作。 -
(如果函數位於與閘道服務角色不同的帳戶中) 將資源型政策連接至 Lambda 函數,以允許閘道服務角色主體對 Lambda 函數資源執行
lambda:InvokeFunction動作。
選取主題以了解如何設定許可:
主題
===== 將身分型政策連接至閘道服務角色
若要允許閘道服務角色存取 Lambda 目標,請在新增和移除與您的使用案例相關的 IAM 身分許可中,選擇 主題,以將下列身分型政策連接至 AgentCore Gateway 服務角色。
{ "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/*" } ] }
Gateway 許可的最佳實務
- 遵循最低權限原則
-
-
僅授予閘道運作所需的許可
-
盡可能使用特定資源 ARNs,而非萬用字元
-
定期檢閱和稽核許可
-
- 依函數分隔角色
-
-
使用不同的角色進行管理和執行
-
為具有不同目的的不同閘道建立個別角色
-
- 安全登入資料儲存
-
-
在 AWS Secrets Manager 中存放 API 金鑰和 OAuth 登入資料
-
定期輪換憑證
-
- 監控和稽核
-
-
啟用閘道操作的 CloudTrail 記錄
-
定期檢閱存取模式和許可用量
-
- 在政策中使用條件
-
-
新增條件以限制何時及如何使用許可
-
考慮使用來源 IP 限制進行管理操作
-