View a markdown version of this page

AgentCore IAM 許可中的 AgentCore Gateway 和政策 - Amazon Bedrock AgentCore

AgentCore IAM 許可中的 AgentCore Gateway 和政策

本指南提供將 Amazon Bedrock AgentCore Gateway 與 AgentCore 中的政策搭配使用的必要 IAM 許可,以便使用 Cedar 政策進行精細的授權控制。

概觀

在 AgentCore 中整合 Amazon Bedrock AgentCore Gateway 與政策時,需要兩個不同的 IAM 角色:

  1. 閘道執行角色 - Amazon Bedrock AgentCore Gateway 在執行階段擔任的 IAM 角色,用於叫用目標並評估 Cedar 政策

  2. 資源管理角色 - 管理員用來在 AgentCore 資源中建立和管理 Amazon Bedrock AgentCore Gateway 和政策的 IAM 角色

這兩個角色都有不同的用途,需要特定的許可。閘道執行角色需要執行 Amazon Bedrock AgentCore Gateway 操作的許可,而資源管理角色則需要在 AgentCore 資源中設定和管理 Amazon Bedrock AgentCore Gateway 和政策的許可。

閘道執行角色

處理請求時,Amazon Bedrock AgentCore Gateway 服務會擔任閘道執行角色。此角色需要下列許可:

  • 透過 AgentCore 中的政策評估 Cedar 政策

  • 叫用 Lambda 函數和 API Gateway 端點等目標

  • 將日誌和追蹤寫入 CloudWatch 和 X-Ray

  • 身分驗證組態的存取秘密

重要

執行角色必須包含這三個許可,才能在 AgentCore 中使用 Amazon Bedrock AgentCore Gateway 搭配 政策:。 bedrock-agentcore:AuthorizeAction- 評估授權決策的 Cedar 政策。 bedrock-agentcore:PartiallyAuthorizeActions- 列出呼叫者獲授權叫用 的工具。 bedrock-agentcore:GetPolicyEngine- 擷取政策引擎組態 如果沒有這些許可,閘道無法執行政策授權。此資訊清單有兩種方式:將政策引擎連接至現有閘道會導致 InternalServerException,而且即使您已設定允許政策,所有工具叫用都將預設為拒絕。

信任政策

閘道執行角色必須信任bedrock-agentcore.amazonaws.com服務主體。

重要

將下列預留位置取代為:* us-east-1 取代為 AWS 區域 * 123456789012 取代為 AWS 帳戶 ID

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowBedrockAgentCoreAssumeRole", "Effect": "Allow", "Principal": { "Service": "bedrock-agentcore.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:bedrock-agentcore:us-east-1:123456789012:*" } } } ] }

許可政策

此政策授予 Amazon Bedrock AgentCore Gateway 透過 AgentCore 中的政策評估 Cedar 政策的必要許可。許可會依照最低權限原則分成兩個陳述式。

重要

將這些預留位置取代為:* us-east-1 取代為 AWS 區域 * 123456789012 取代為 AWS 帳戶 ID * <gateway-id> 取代為閘道 ID (或使用 * 取代所有閘道) * <policy-engine-id> 取代為政策引擎 ID (或使用 * 取代所有政策引擎)

{ "Version": "2012-10-17", "Statement": [ { "Sid": "PolicyEngineConfiguration", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetPolicyEngine" ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:123456789012:policy-engine/<policy-engine-id>" ] }, { "Sid": "PolicyEngineAuthorization", "Effect": "Allow", "Action": [ "bedrock-agentcore:AuthorizeAction", "bedrock-agentcore:PartiallyAuthorizeActions" ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:123456789012:policy-engine/<policy-engine-id>", "arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/<gateway-id>" ] } ] }
注意

* 視 Amazon Bedrock AgentCore Gateway 整合類型 (例如 Lambda 函數、API Gateway 端點) 而定,可能需要其他許可。此處不會包含這些許可,因為這些許可會根據特定整合而有所不同。* 針對生產:將預留位置取代為特定資源 IDs(例如,policy-engine/my-policy-engine-id而非 policy-engine/<policy-engine-id> ),以遵循最低權限原則,或使用萬用字元 ( * ) 來允許存取該類型的所有資源。

資源管理角色

管理員使用 資源管理角色來建立和管理 AgentCore 資源中的 Amazon Bedrock AgentCore Gateway 和政策。此角色需要下列許可:

  • 建立、更新和刪除閘道和閘道目標

  • 建立、更新和刪除政策引擎和 Cedar 政策

  • 在政策建立期間呼叫閘道 (InvokeGateway),以便 AgentCore 中的政策可以根據目標閘道的功能驗證 Cedar 陳述式中的動作

  • 在建立期間將閘道執行角色傳遞至 Amazon Bedrock AgentCore Gateway 資源

  • 標記組織和管理的資源

  • 讀取 IAM 角色資訊以驗證執行角色組態

此角色與閘道執行角色不同,只有在設定或修改 AgentCore 組態中的 Amazon Bedrock AgentCore Gateway 和政策時才需要。

許可政策

重要

以 AWS 帳戶 ID 取代這些預留位置:* us-east-1 為 AWS 區域 * 123456789012

{ "Version": "2012-10-17", "Statement": [ { "Sid": "GatewayManagement", "Effect": "Allow", "Action": [ "bedrock-agentcore:CreateGateway", "bedrock-agentcore:UpdateGateway", "bedrock-agentcore:GetGateway", "bedrock-agentcore:DeleteGateway", "bedrock-agentcore:ListGateways", "bedrock-agentcore:InvokeGateway", "bedrock-agentcore:CreateGatewayTarget", "bedrock-agentcore:UpdateGatewayTarget", "bedrock-agentcore:GetGatewayTarget", "bedrock-agentcore:DeleteGatewayTarget", "bedrock-agentcore:ListGatewayTargets" ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/*" ] }, { "Sid": "PolicyEngineManagement", "Effect": "Allow", "Action": [ "bedrock-agentcore:CreatePolicyEngine", "bedrock-agentcore:UpdatePolicyEngine", "bedrock-agentcore:GetPolicyEngine", "bedrock-agentcore:DeletePolicyEngine", "bedrock-agentcore:ListPolicyEngines" ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:123456789012:policy-engine/*" ] }, { "Sid": "PolicyManagement", "Effect": "Allow", "Action": [ "bedrock-agentcore:CreatePolicy", "bedrock-agentcore:UpdatePolicy", "bedrock-agentcore:GetPolicy", "bedrock-agentcore:DeletePolicy", "bedrock-agentcore:ListPolicies" ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:123456789012:policy-engine/*/policy/*" ] }, { "Sid": "PolicyGeneration", "Effect": "Allow", "Action": [ "bedrock-agentcore:StartPolicyGeneration", "bedrock-agentcore:GetPolicyGeneration", "bedrock-agentcore:ListPolicyGenerations", "bedrock-agentcore:ListPolicyGenerationAssets" ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:123456789012:policy-engine/*/policy-generation/*" ] }, { "Sid": "IAMPassRole", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::123456789012:role/*BedrockAgentCore*" ], "Condition": { "StringEquals": { "iam:PassedToService": "bedrock-agentcore.amazonaws.com" } } }, { "Sid": "IAMReadAccess", "Effect": "Allow", "Action": [ "iam:GetRole", "iam:GetRolePolicy", "iam:ListAttachedRolePolicies", "iam:ListRolePolicies" ], "Resource": [ "arn:aws:iam::123456789012:role/*" ] }, { "Sid": "PolicyScopeManagement", "Effect": "Allow", "Action": [ "bedrock-agentcore:ManageResourceScopedPolicy", "bedrock-agentcore:ManageAdminPolicy" ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/*" ] } ] }
重要

bedrock-agentcore:InvokeGateway 需要建立或更新 Cedar 政策,而不只是在執行時間叫用閘道。 CreatePolicy 並根據閘道 ARN InvokeGateway 上授權為 的 操作 Gateway,驗證 Cedar 陳述式中的UpdatePolicy動作。如果沒有它,政策會使用 轉換為 CREATE_FAILED Insufficient permissions to call gateway with ID <gateway-id>

重要

ManageResourceScopedPolicyManageAdminPolicy動作是僅限許可的閘道,可控制管理員可以建立的 Cedar 政策類型:* ManageResourceScopedPolicy - 准許建立以特定閘道 ARNs 為目標的 Cedar 政策 (例如,套用至 gateway/my-gateway-123 的政策) * ManageAdminPolicy - 准許使用萬用字元建立 Cedar 政策 (例如,套用至閘道/* 的政策) 完整政策管理功能需要這兩個許可。這些不是 API 操作,而是決定可透過政策管理 APIs 建立之 Cedar 政策範圍的授權檢查。

注意

雖然包含資源欄位是為了一致性,但這些僅限許可的動作主要是在動作層級而非資源層級切換功能。

何時需要角色更新?

根據 Amazon Bedrock AgentCore Gateway 的建立方式,判斷是否需要將 AgentCore 許可中的政策新增至 Amazon Bedrock AgentCore Gateway 執行角色。

案例 1:使用 AgentCore CLI 建立的閘道

狀態:需要動作

AgentCore CLI 會建立閘道執行角色,其具有目標調用和傳出身分驗證的範圍許可,但不在 AgentCore 許可中包含政策。您必須手動將本指南中記錄的 AuthorizeActionPartiallyAuthorizeActionsGetPolicyEngine許可新增至閘道執行角色。

案例 2:自訂執行角色

狀態:需要動作

自訂 IAM 角色需要手動新增本指南中記載的 AgentCore 許可中的政策。請遵循上述章節中的許可政策。

案例 3:生產最低權限組態

狀態:需要動作

對於生產環境,請將 AgentCore 許可中的政策範圍限定為特定資源 ARNs而不是使用萬用字元。將 policy-engine/* 和 gateway/* 取代為許可政策中的特定政策引擎和閘道 IDs。

疑難排解

本節涵蓋使用 AgentCore 中的政策設定 Amazon Bedrock AgentCore Gateway 的 IAM 許可時的常見問題。

政策評估期間的 InternalServerException

徵狀:閘道在將政策引擎連接至現有閘道InternalServerException - Policy evaluation failed時傳回 ,且即使已設定允許政策,所有工具叫用也會預設為拒絕。

根本原因:AgentCore 許可中缺少閘道執行角色所需的政策。如果沒有這些許可,閘道就無法執行政策授權。

解決方案:確保閘道執行角色包含這三個許可:

{ "Effect": "Allow", "Action": [ "bedrock-agentcore:PartiallyAuthorizeActions", "bedrock-agentcore:AuthorizeAction", "bedrock-agentcore:GetPolicyEngine" ], "Resource": [ "arn:aws:bedrock-agentcore:REGION:ACCOUNT:policy-engine/*", "arn:aws:bedrock-agentcore:REGION:ACCOUNT:gateway/*" ] }
注意

如果您使用政策引擎主控台將政策引擎連接到現有的閘道,IAM 許可可能不會自動更新。您必須手動將這些許可新增至閘道的服務連結角色。

CreatePolicy 上的「呼叫閘道的許可不足」

徵狀: CreatePolicy傳回 policyId,但政策接著CREATE_FAILED會使用 轉換為 Insufficient permissions to call gateway with ID <gateway-id>,即使閘道執行角色具有 AuthorizeActionPartiallyAuthorizeActionsGetPolicyEngine

根本原因:差距位於呼叫 的資源管理角色上CreatePolicy,而不是閘道執行角色。政策驗證會呼叫閘道 (授權為 bedrock-agentcore:InvokeGateway);錯誤名稱為閘道,但修正是在政策建立角色上。

解決方案:bedrock-agentcore:InvokeGateway(範圍限定為閘道 ARN) 新增至資源管理角色:

{ "Effect": "Allow", "Action": [ "bedrock-agentcore:InvokeGateway" ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/<gateway-id>" ] }

LOG_ONLY 模式下的靜音失敗

徵狀:政策引擎似乎在 LOG_ONLY 模式下運作,但在無適當錯誤訊息的情況下無提示地失敗。

根本原因:缺少bedrock-agentcore:GetPolicyEngine許可會導致靜音失敗,只有在切換到 ENFORCED 模式時才會顯示。

解決方案:一律在閘道執行角色bedrock-agentcore:GetPolicyEngine中包含 ,即使使用 LOG_ONLY 模式進行測試也一樣。

找不到政策引擎錯誤

徵狀:Amazon Bedrock AgentCore Gateway 傳回錯誤,表示找不到或存取政策引擎。

根本原因:閘道執行角色的政策使用不正確的 ARN 模式,或缺少政策引擎資源。

解決方案:確保政策引擎和閘道 ARNs都包含在資源陣列中:

"Resource": [ "arn:aws:bedrock-agentcore:us-east-1:123456789012:policy-engine/<policy-engine-id>", "arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/<gateway-id>" ]
注意

AuthorizeAction 和 都需要PartiallyAuthorizeActions存取政策引擎和閘道資源。

偵錯秘訣

  1. 啟用 CloudWatch Logs - 設定 Amazon Bedrock AgentCore Gateway 的詳細記錄,以擷取政策評估詳細資訊

  2. 檢閱 X-Ray 追蹤 - 檢查 AWS X-Ray 追蹤以識別授權檢查失敗的位置

  3. LOG_ONLY 模式開始 - 一開始使用 LOG_ONLY 模式來測試 Cedar 政策,而不會封鎖請求

  4. 驗證所有四個許可 - 確定 AuthorizeActionPartiallyAuthorizeActionsGetPolicyEngine 都存在

  5. 切換到 ENFORCED 模式 - 只有在驗證所有許可在 LOG_ONLY 模式中運作之後,才能切換到 ENFORCED 模式

範例:建立兩個 IAM 角色

下列範例示範如何使用 CLI 建立兩個必要的 IAM AWS 角色。

步驟 1:建立閘道執行角色

# Create the trust policy file cat > gateway-trust-policy.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "bedrock-agentcore.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "123456789012" }, "ArnLike": { "aws:SourceArn": "arn:aws:bedrock-agentcore:us-east-1:123456789012:*" } } } ] } EOF # Create the IAM role aws iam create-role \ --role-name MyGatewayExecutionRole \ --assume-role-policy-document file://gateway-trust-policy.json

步驟 2:將許可連接至閘道執行角色

# Create the permission policy file cat > gateway-permissions.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Sid": "PolicyEngineConfiguration", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetPolicyEngine" ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:123456789012:policy-engine/*" ] }, { "Sid": "PolicyEngineAuthorization", "Effect": "Allow", "Action": [ "bedrock-agentcore:AuthorizeAction", "bedrock-agentcore:PartiallyAuthorizeActions" ], "Resource": [ "arn:aws:bedrock-agentcore:us-east-1:123456789012:policy-engine/*", "arn:aws:bedrock-agentcore:us-east-1:123456789012:gateway/*" ] } ] } EOF # Attach the policy to the role aws iam put-role-policy \ --role-name MyGatewayExecutionRole \ --policy-name GatewayPolicyEnginePermissions \ --policy-document file://gateway-permissions.json
注意

此範例僅顯示 AgentCore 許可中的 政策。Amazon Bedrock AgentCore Gateway 目標 (Lambda、API Gateway 等) 的其他許可應根據您的特定整合需求新增。

步驟 3:後續步驟

在 AgentCore 許可中使用所需的政策設定執行角色之後,請繼續建立和設定政策資源。如需詳細指引,請參閱:

最佳實務

  1. 使用個別角色 - 維護 Amazon Bedrock AgentCore Gateway 執行和資源管理的不同角色

  2. 套用最低權限 - 從生產環境中的特定資源 ARNs 開始,而不是萬用字元

  3. 使用 LOG_ONLY 模式進行測試 - 在強制執行政策之前,一律在 LOG_ONLY 模式中測試政策引擎整合

  4. 啟用監控 - 設定 CloudWatch Logs 和 X-Ray 追蹤以進行故障診斷和可觀測性

  5. 版本控制政策 - 將 Cedar 政策與基礎設施程式碼一起存放在版本控制中

  6. 使用資源標籤 - 在 AgentCore 資源中套用標籤來組織和管理 Amazon Bedrock AgentCore Gateway 和政策

  7. 定期安全稽核 - 定期檢閱 IAM 政策,以確保其遵循最低權限原則