View a markdown version of this page

安全性和存取控制 - Amazon Bedrock AgentCore

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

安全性和存取控制

該機制為您提供與 AgentCore 其他部分相同的安全基本概念,以組態連接。

  • 隔離的執行。每個工作階段都會在 AgentCore 執行期中的自己的 Firecracker microVM 中執行。 AgentCore 無共用狀態,無共用檔案系統。

  • IAM 執行角色。繫帶會擔任您擁有的 IAM 角色,可設定為包含 Bedrock、ECR、CloudWatch 及其觸及的 AgentCore 基本概念。請參閱以下範例執行角色政策。

    注意

    如果您的帳戶已啟用角色管理員,AgentCore 會為您連接角色,此處所述的角色選擇步驟會取代為自訂選項。若要使用不同的角色,請選擇自訂。如需詳細資訊,請參閱《IAM 使用者指南》中的建立 IAM 角色。

  • IAM 許可模型。繫留 APIs 需要繫留資源和基礎 AgentCore 執行期資源的許可。例如,呼叫 InvokeHarness需要集合 ARN 的 bedrock-agentcore:InvokeHarness和 bedrock-agentcore:InvokeAgentRuntime許可。相同的模式適用於控制平面操作: UpdateHarness需要 bedrock-agentcore:UpdateAgentRuntime、 DeleteHarness需要 bedrock-agentcore:DeleteAgentRuntime等。如需完整清單,請參閱執行角色政策。

  • 傳入 OAuth 支援。JWT 設定的 Harness 資源要求發起人出示由已設定的身分提供者發出的有效 JWT,然後才能叫用該集合。AgentCore Identity 透過代理程式執行最終使用者身分,因此下游工具可以使用範圍使用者憑證呼叫 APIs,而不是共用服務帳戶。

  • VPC。將繫帶工作階段連接至您的 VPC,以私有存取內部資源。

  • Gateway 上的政策。透過 AgentCore Gateway 提供工具時,可以設定以 Cedar 為基礎的政策來閘道每個呼叫:誰可以呼叫哪些工具、哪些條件、哪些引數。

注意

SigV4 和每個使用者身分。當呼叫者向 SigV4 (AWS IAM) 進行身分驗證時,繫帶不會將每個使用者身分傳播到下游工具呼叫中。這表示 AgentCore Identity Token Vault 中的每個使用者憑證範圍功能 - 例如使用者範圍的 OAuth 字符儲存和on-behalf-of權杖交換 - 只有在呼叫者透過 OAuth 傳入路徑向承載 JWT 進行身分驗證時才能使用。如果您的使用案例需要下游工具的每個使用者登入資料範圍,請在繫帶上設定傳入 OAuth。預計未來版本會支援每個使用者身分的 SigV4。

共同責任模型

繫帶是以 AgentCore 執行期為基礎,且安全界限相同:IAM 或 JWT 身分驗證與 microVM 隔離結合。任何傳遞該閘道的委託人都會到達在集合上設定的工具和功能,這使得發起人授權和輸入驗證成為客戶的責任。

AWS 責任:
  • 在硬體層級保護基礎設施和microVM隔離

  • 作業系統核心修補

  • 適用於直接程式碼部署的語言執行期修補

  • 受管繫帶執行期程式碼,包括驗證請求結構InvokeHarness接受

  • 網路基礎設施安全性

  • 服務可用性和彈性

您的責任:
  • 代理程式程式碼安全性和相依性管理

  • IAM 存取控制和資源政策

  • 在執行階段工作階段中執行命令的安全性

  • Session-to-user映射強制執行

  • 輸入驗證和提示注入預防 - 包括驗證所有InvokeHarness輸入 (請參閱 信任界限和輸入驗證)

  • 模型組態驗證 - 例如 additionalParams、 apiBase和 modelId 欄位 (請參閱 模型組態參數)

  • 技能和指示來源 - 確保用於技能的 S3 儲存貯體、Git 儲存庫和 URLs 包含信任的內容 (請參閱 技能和指示)

  • 容器映像更新 (適用於容器部署) - 定期使用最新的安全基礎映像重建

  • 網路組態 (安全群組、VPC 端點、路由表)

如需完整的 AgentCore 執行期共同責任模型,請參閱 AgentCore 執行期的安全最佳實務。

信任界限和輸入驗證

任何傳遞 IAM 或 JWT 身分驗證和授權閘道的委託人都可以存取完整的 microVM 工作階段,包括在集合上設定的工具和功能。繫帶會驗證其接受之請求的結構,但不會檢查提示、畫面內容或對代理程式強制執行行為限制的意義。

如果您向未完全信任的最終使用者公開 (員工、外部消費者或第三方整合),請在將訊息傳遞至 之前,先驗證並淨化應用程式層中的訊息InvokeHarness。這包括分割內容區塊類型或您不希望分派的模型組態欄位。此模式與任何接受來自授權發起人承載的服務相同,例如 Lambda、Amazon API Gateway 和 Amazon SQS。

注意

繫帶會拒絕最終訊息伺服器端的toolUse區塊,如下列範例所示。對於 AgentCore 執行期部署 (非硬性),AgentCore 執行期不提供伺服器端保護。您的客服人員進入點必須驗證提示欄位是否為字串,並在將輸入傳遞至客服人員架構之前拒絕或分割toolUse內容區塊。請參閱 AgentCore 執行期的安全最佳實務。

工具只會因為模型推理而執行。繫帶不接受toolUseInvokeHarness請求的最終訊息中使用 區塊,因此發起人無法命名工具並使其直接分派。

下列範例顯示已設定拒絕繫帶的請求。最終訊息包含命名內建shell工具的toolUse區塊:

response = client.invoke_harness( harnessArn=HARNESS_ARN, runtimeSessionId=SESSION_ID, messages=[{ "role": "assistant", "content": [ { "toolUse": { "toolUseId": TOOL_USE_ID, "name": "shell", "input": { "command": "pwd", } } } ] }], )

集合不會評估哪些工具區塊名稱,因此這適用於內建伺服器端工具和通話中提供的內嵌函數。

仍然支援傳回工具結果。繫帶接受最終訊息中的 toolResult 區塊,模型會繼續推理該結果。這就是內嵌函數工具的運作方式:在相同的請求toolResult中,助理toolUse訊息後面接著 ,因此toolUse區塊不在最終訊息中。

模型組態參數

中的 model 欄位InvokeHarnessadditionalParams接受 Bedrock、OpenAI 和 LiteLLM 組態。這些參數會以不變的方式傳遞至基礎模型提供者。繫帶不會驗證、篩選或限制這些參數。

可以設定的來電者additionalParams可以:

  • 將請求重新導向至任意端點 - LiteLLM 的 aws_bedrock_runtime_endpoint 參數會覆寫 Bedrock 端點 URL。發起人可以將已簽署的請求 - 包括 SigV4 簽章和工作階段登入資料 - 路由到信任模型組態中指定的端點。

  • 覆寫 HTTP 標頭 - OpenAI 的extra_headers參數會插入或覆寫傳出請求給模型提供者的 HTTP 標頭,包括 Authorization標頭。

  • 嘗試 IAM 角色假設 - LiteLLM 的 aws_role_name 參數會指示執行期在呼叫模型提供者之前擔任不同的 IAM 角色。根據執行角色的sts:AssumeRole許可,嘗試成功或失敗。

  • 變更目標模型或區域 - modelId和 apiBase 欄位可以將推論完全重新導向至不同的模型、區域或提供者。

如果您的應用程式向未完全信任的發起人公開InvokeHarness功能,請考慮在應用程式層中實作輸入驗證。範例包括:

  • 在轉送請求之前分割或允許列出model欄位

  • 驗證或移除 additionalParams、 apiBase和 modelId

  • 如果不需要角色切換,sts:AssumeRole則拒絕執行角色

  • 使用 VPC 安全群組來擴展繫帶網路存取

技能和指示

技能是在調用時從 Amazon S3 或 Git 擷取的 Markdown 和指令碼套件,並注入代理程式的內容。繫帶會將所有技能內容視為信任的輸入。在將技能的內容或來源提供給客服人員之前,不會對其進行驗證、淨化或檢查。

您負責:

  • 確保技能來源 (S3 儲存貯體、Git 儲存庫、URLs) 受到信任和存取控制

  • 檢閱技能內容 - 包括 Markdown 說明和任何內嵌指令碼 - 之後再設定在工具上

  • 控制哪些委託人可以覆寫每次調用skills的欄位,因為發起人可以將繫帶指向任意 S3 或 Git 來源

每個InvokeHarness呼叫都可以覆寫技能。如果您的應用程式轉送發起人提供的輸入到 InvokeHarness,發起人可以提供自己的技能來源,其中包含任意指示或指令碼。緩解措施的範例包括:

  • 從來電者提供的請求中分割或忽略skills欄位

  • 允許列出允許的 S3 字首或 Git 儲存庫

可觀測性和追蹤相互關聯性

該機制會自動將相互關聯識別符傳播到下游 AgentCore 基本概念 (閘道、記憶體、程式碼解譯器、瀏覽器),以在 CloudWatch 中啟用統一追蹤檢視。這些識別符僅用於可觀測性,絕不會用於授權或資料存取決策。

網路組態

根據預設,掛載工作階段會在公有網路上執行。若要存取私有資源 (資料庫、內部 APIs、私有子網路),請在 VPC 中部署繫帶。

範例
AWS CLI/boto3
aws bedrock-agentcore-control create-harness \ --harness-name "VpcHarness" \ --execution-role-arn "arn:aws:iam::123456789012:role/MyHarnessRole" \ --environment '{"agentCoreRuntimeEnvironment": {"networkConfiguration": {"networkMode": "VPC", "vpcConfig": {"securityGroupIds": ["sg-0abc1234def56789a"], "subnetIds": ["subnet-0abc1234def56789a"]}}}}'
AgentCore CLI
agentcore add harness --name internal-agent \ --network-mode VPC \ --subnets subnet-0abc1234def56789a \ --security-groups sg-0abc1234def56789a agentcore deploy
重要

在 VPC 模式下,每個工作階段開始時,繫帶會從繫帶區域中的私有 Amazon ECR 儲存庫提取其受管應用程式容器。您的 VPC 不需要 NAT 閘道或網際網路存取即可執行此提取。反之,請為 com.amazonaws.<region>.ecr.dkr和 建立介面 VPC 端點com.amazonaws.<region>.ecr.api,並為 建立閘道 VPC 端點com.amazonaws.<region>.s3,讓映像及其層在您的 VPC 內解析。如果您的代理程式呼叫 Amazon Bedrock 進行推論,也請為 建立介面端點com.amazonaws.<region>.bedrock-runtime。如果沒有所需的端點,由於映像提取逾時,工作階段無法啟動。執行角色必須允許從私有儲存庫提取 。請參閱執行角色政策。

如需其他網路組態指引,請參閱設定 AgentCore 執行期和內建工具 VPC 組態。如需透過 PrivateLink 的傳入 API 連線,請參閱 VPC 介面端點。

傳入 OAuth

要求發起人出示由已設定身分提供者發出的有效 JWT,然後才能叫用該集合。AgentCore Identity 透過代理程式執行最終使用者身分,因此下游工具可以使用範圍使用者憑證呼叫 APIs,而不是共用服務帳戶。

範例
AWS CLI/boto3
aws bedrock-agentcore-control create-harness \ --harness-name "OAuthHarness" \ --execution-role-arn "arn:aws:iam::123456789012:role/MyHarnessRole" \ --authorizer-configuration '{"customJWTAuthorizer": {"discoveryUrl": "https://cognito-idp.us-west-2.amazonaws.com/<POOL_ID>/.well-known/openid-configuration", "allowedClients": ["<CLIENT_ID>"]}}'

使用承載字符而非 SigV4 登入資料叫用:

curl -X POST "https://bedrock-agentcore.us-west-2.amazonaws.com/harnesses/invoke?harnessArn=${HARNESS_ARN}" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${ID_TOKEN}" \ -H "X-Amzn-Bedrock-AgentCore-Runtime-Session-Id: $(uuidgen)" \ -d '{"messages": [{"role": "user", "content": [{"text": "Hi"}]}]}'
AgentCore CLI
agentcore add harness --name MyNewHarness \ --authorizer-type CUSTOM_JWT \ --discovery-url {DISCOVERY_URL} \ --allowed-clients {CLIENT_ID} agentcore deploy

使用承載字符調用:

agentcore invoke --harness MyNewHarness --bearer-token "{token}" "Hello"

當您的身分提供者的 OIDC 探索端點只能透過 PrivateLink 存取時,請將私有端點旗標新增至 CUSTOM_JWT 授權方。使用服務受管 VPC 端點:

agentcore add harness --name MyNewHarness \ --authorizer-type CUSTOM_JWT \ --discovery-url {DISCOVERY_URL} \ --allowed-clients {CLIENT_ID} \ --private-endpoint-vpc-id vpc-0abc1234def56789a \ --private-endpoint-subnets subnet-0abc1234def56789a,subnet-0def5678abc12349b \ --private-endpoint-ip-type IPV4 \ --private-endpoint-security-groups sg-0abc1234def56789a agentcore deploy

或指向現有的 VPC Lattice 資源組態,而非受管 VPC 端點:

agentcore add harness --name MyNewHarness \ --authorizer-type CUSTOM_JWT \ --discovery-url {DISCOVERY_URL} \ --allowed-clients {CLIENT_ID} \ --private-endpoint-lattice-arn rcfg-0abc1234def56789a agentcore deploy
注意

私有端點旗標僅適用於 --authorizer-type CUSTOM_JWT。 --private-endpoint-vpc-id和 --private-endpoint-lattice-arn是互斥的,請選擇一個。使用 --private-endpoint-vpc-id時,需要 --private-endpoint-subnets和 --private-endpoint-ip-type(IPV4 或 IPV6)。

如需完整的 OAuth 設定流程,請參閱傳入 JWT 授權方。

Interactive

agentcore 在專案目錄中執行,選取新增 ,選擇繫結 ,然後進入進階設定 。使用空格 啟用身分驗證 (以及 VPC 存取的網路),然後按 Enter 。

  1. 選擇授權方類型: AWS IAM (預設) 或 OIDC 承載字符身分驗證的自訂 JWT。

    選取繫帶授權方類型
  2. 針對自訂 JWT ,輸入 OIDC 探索 URL。

    設定自訂 JWT:探索 URL
  3. 選取要驗證的字符限制 - 允許對象、允許用戶端、允許範圍或自訂宣告。

    選取要設定的 JWT 限制條件
  4. 選擇繫帶如何到達 IdP 探索端點:無 (可公開連線)、VPC Lattice 資源 或受管 VPC 端點 (PrivateLink)。

    IdP 探索端點的 PrivateLink 選項
  5. 針對網路 ,選擇 VPC 模式並提供子網路 IDs和安全群組 IDs。

    輸入 VPC IDs

確認精靈,然後執行 agentcore deploy以套用。

進一步了解:AgentCore Identity · 傳入 JWT 授權方 · 傳出憑證

閘道政策

透過 AgentCore Gateway 提供工具時,以 Cedar 為基礎的政策會觸發每次呼叫:誰可以呼叫哪些工具、哪些條件、哪些引數。

進一步了解:AgentCore 政策 · 常見模式

執行角色政策

繫帶會擔任您提供的 IAM 執行角色。角色的信任政策必須允許 AgentCore 服務主體擔任該角色:

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"Service": "bedrock-agentcore.amazonaws.com"}, "Action": "sts:AssumeRole" }] }

呼叫者所需的 IAM 許可

Harness APIs需要對集合資源和基礎 AgentCore 執行期和選用 AgentCore 記憶體資源的許可。下表列出每個 API 的必要動作:

API 必要的 IAM 動作

InvokeHarness

bedrock-agentcore:InvokeHarness, bedrock-agentcore:InvokeAgentRuntime

InvokeAgentRuntimeCommand

bedrock-agentcore:InvokeAgentRuntimeCommand, bedrock-agentcore:InvokeAgentRuntime

CreateHarness

bedrock-agentcore:CreateHarness, bedrock-agentcore:CreateAgentRuntime, bedrock-agentcore:CreateMemory

UpdateHarness

bedrock-agentcore:UpdateHarness, bedrock-agentcore:UpdateAgentRuntime, bedrock-agentcore:UpdateMemory

DeleteHarness

bedrock-agentcore:DeleteHarness, bedrock-agentcore:DeleteAgentRuntime, bedrock-agentcore:DeleteMemory

GetHarness

bedrock-agentcore:GetHarness

ListHarnesses

bedrock-agentcore:ListHarnesses

CreateHarnessEndpoint

bedrock-agentcore:CreateHarnessEndpoint, bedrock-agentcore:CreateAgentRuntimeEndpoint

UpdateHarnessEndpoint

bedrock-agentcore:UpdateHarnessEndpoint, bedrock-agentcore:UpdateAgentRuntimeEndpoint

DeleteHarnessEndpoint

bedrock-agentcore:DeleteHarnessEndpoint, bedrock-agentcore:DeleteAgentRuntimeEndpoint

GetHarnessEndpoint

bedrock-agentcore:GetHarnessEndpoint

ListHarnessEndpoints

bedrock-agentcore:ListHarnessEndpoints

ListHarnessVersions

bedrock-agentcore:ListHarnessVersions

大多數動作都會使用繫帶 ARN 做為資源範圍:arn:aws:bedrock-agentcore:<region>:<accountId>:harness/<id>。端點動作也會使用繫帶端點 ARN:arn:aws:bedrock-agentcore:<region>:<accountId>:harness/<id>/harness-endpoint/<endpointName>。

GetHarnessEndpoint、 UpdateHarnessEndpoint和 DeleteHarnessEndpoint動作需要繫帶 ARN 和端點 ARN。 CreateHarnessEndpoint只需要繫帶 ARN。端點尚不存在,因此不需要端點 ARN。當您叫用自訂端點時, InvokeHarness 會同時InvokeAgentRuntimeCommand需要繫帶 ARN 和端點 ARN。

範例執行角色政策

下列範例涵蓋公有網路上的繫帶,這會從 Amazon ECR Public 提取其受管容器映像。VPC 模式中的繫帶會從繫帶區域中的私有 Amazon ECR 儲存庫提取受管映像,因此其執行角色也需要私有 ECR 提取許可。在 VPC 模式中新增陳述式:從私有 ECR 提取受管映像到 VPC 模式繫帶的執行角色。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "BedrockModelInvocation", "Effect": "Allow", "Action": [ "bedrock:InvokeModel", "bedrock:InvokeModelWithResponseStream" ], "Resource": [ "arn:aws:bedrock:*::foundation-model/*", "arn:aws:bedrock:<region>:<accountId>:*" ] }, { "Sid": "EcrPublicTokenAccess", "Effect": "Allow", "Action": [ "ecr-public:GetAuthorizationToken" ], "Resource": "*" }, { "Sid": "StsForEcrPublicPull", "Effect": "Allow", "Action": [ "sts:GetServiceBearerToken" ], "Resource": "*" }, { "Sid": "XRayTracingAccess", "Effect": "Allow", "Action": [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", "xray:GetSamplingRules", "xray:GetSamplingTargets" ], "Resource": "*" }, { "Sid": "CloudWatchLogsGroup", "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:DescribeLogStreams" ], "Resource": "arn:aws:logs:<region>:<accountId>:log-group:/aws/bedrock-agentcore/runtimes/*" }, { "Sid": "CloudWatchLogsDescribeGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": "arn:aws:logs:<region>:<accountId>:log-group:*" }, { "Sid": "CloudWatchLogsStream", "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:<region>:<accountId>:log-group:/aws/bedrock-agentcore/runtimes/*:log-stream:*" }, { "Sid": "CloudWatchLogsPutResourcePolicy", "Effect": "Allow", "Action": [ "logs:PutResourcePolicy" ], "Resource": "*" }, { "Sid": "CloudWatchMetricsPublish", "Effect": "Allow", "Resource": "*", "Action": "cloudwatch:PutMetricData", "Condition": { "StringEquals": { "cloudwatch:namespace": "bedrock-agentcore" } } }, { "Sid": "AgentCoreWorkloadIdentity", "Effect": "Allow", "Action": [ "bedrock-agentcore:GetWorkloadAccessToken", "bedrock-agentcore:GetWorkloadAccessTokenForJWT" ], "Resource": [ "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default/workload-identity/harness_<agentName>-*" ] }, { "Sid": "AgentCoreBrowserDefault", "Effect": "Allow", "Action": [ "bedrock-agentcore:StartBrowserSession", "bedrock-agentcore:StopBrowserSession", "bedrock-agentcore:GetBrowserSession", "bedrock-agentcore:ListBrowserSessions", "bedrock-agentcore:UpdateBrowserStream", "bedrock-agentcore:ConnectBrowserAutomationStream", "bedrock-agentcore:ConnectBrowserLiveViewStream" ], "Resource": "arn:aws:bedrock-agentcore:<region>:aws:browser/*" }, { "Sid": "AgentCoreCodeInterpreterDefault", "Effect": "Allow", "Action": [ "bedrock-agentcore:StartCodeInterpreterSession", "bedrock-agentcore:StopCodeInterpreterSession", "bedrock-agentcore:GetCodeInterpreterSession", "bedrock-agentcore:ListCodeInterpreterSessions", "bedrock-agentcore:InvokeCodeInterpreter" ], "Resource": "arn:aws:bedrock-agentcore:<region>:aws:code-interpreter/*" }, { "Sid": "AgentCoreMemory", "Effect": "Allow", "Action": [ "bedrock-agentcore:CreateEvent", "bedrock-agentcore:DeleteEvent", "bedrock-agentcore:GetEvent", "bedrock-agentcore:ListEvents", "bedrock-agentcore:RetrieveMemoryRecords" ], "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:memory/harness_<agentNameAbbrv>_*" } ] }

當您堆疊繫帶專案時,AgentCore CLI 會自動建立具有這些許可的角色。上述政策適用於您自己建立角色的情況。

注意

上述BedrockModelInvocation範例陳述式允許調用您帳戶中所有區域和所有 Bedrock 資源的所有基礎模型。若要縮小範圍,請將資源 ARNs 取代為特定推論描述檔,這可讓您使用單一 ARN 跨模型和區域路由請求。例如:與所有允許的區域 arn:aws:bedrock:<destination_regions>:<accountId>:inference-profile/<profileId>配對arn:aws:bedrock:<region>:<accountId>:foundation-model/<modelId>。

對於生產工作負載,將Resource值範圍縮小到您設備所需的特定 ARNs,而不是使用 "*"。

選用功能的其他許可

以下是範例政策,您可以根據您繫帶使用的功能,將其附加到您的執行角色。遵循最低權限原則 - 僅授予您的繫帶代理程式推論所需的特定工具和登入資料。如需預留位置定義預留位置參考,請參閱 。

私有 ECR 存取 (自訂容器映像)

當您的繫帶使用自訂容器的私有 ECR 映像時,請新增此政策。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ECRImageAccess", "Effect": "Allow", "Action": [ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "arn:aws:ecr:<ecrRegion>:<ecrAccountId>:repository/<ecrRepoName>" }, { "Sid": "ECRTokenAccess", "Effect": "Allow", "Action": "ecr:GetAuthorizationToken", "Resource": "*" } ] }

VPC 模式:從私有 ECR 提取受管映像

當您的繫帶在 VPC 模式下執行時,請新增此政策。在 VPC 模式下,繫帶會從繫帶區域中的私有 Amazon ECR 儲存庫提取其受管應用程式容器 (名為 harness-<region>)。此提取使用私有 ECR 而非 Amazon ECR Public,因此執行角色需要私有 ECR 提取許可。此政策與自訂容器映像許可分開,即使您未提供自己的容器,也會套用至 AWS 受管映像。

儲存庫由 AWS 服務帳戶擁有,因此儲存庫 ARN 中的帳戶是萬用字元。提取許可範圍限定為 繫帶區域。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EcrManagedImagePull", "Effect": "Allow", "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer", "ecr:BatchCheckLayerAvailability" ], "Resource": "arn:aws:ecr:<region>:*:repository/harness-*" }, { "Sid": "EcrManagedImageToken", "Effect": "Allow", "Action": "ecr:GetAuthorizationToken", "Resource": "*" } ] }

確定所需的 VPC 端點存在於您的 VPC 中 (請參閱網路組態):適用於 com.amazonaws.<region>.ecr.dkr和 的介面端點com.amazonaws.<region>.ecr.api,以及適用於 的閘道端點com.amazonaws.<region>.s3。

AgentCore 記憶體

當您的繫帶使用客戶擁有的記憶體執行個體時,請新增此政策。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreMemory", "Effect": "Allow", "Action": [ "bedrock-agentcore:CreateEvent", "bedrock-agentcore:DeleteEvent", "bedrock-agentcore:GetEvent", "bedrock-agentcore:ListEvents", "bedrock-agentcore:RetrieveMemoryRecords" ], "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:memory/<memoryId>" } ] }

AgentCore 瀏覽器 (自訂)

當您的繫帶使用客戶擁有的自訂瀏覽器資源時,請新增此政策。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreBrowserCustom", "Effect": "Allow", "Action": [ "bedrock-agentcore:StartBrowserSession", "bedrock-agentcore:StopBrowserSession", "bedrock-agentcore:GetBrowserSession", "bedrock-agentcore:ListBrowserSessions", "bedrock-agentcore:UpdateBrowserStream", "bedrock-agentcore:ConnectBrowserAutomationStream", "bedrock-agentcore:ConnectBrowserLiveViewStream" ], "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:browser-custom/<browserCustomId>" } ] }

AgentCore Code Interpreter (自訂)

當您的繫帶使用客戶擁有的自訂程式碼解譯器時,請新增此政策。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreCodeInterpreterCustom", "Effect": "Allow", "Action": [ "bedrock-agentcore:StartCodeInterpreterSession", "bedrock-agentcore:StopCodeInterpreterSession", "bedrock-agentcore:GetCodeInterpreterSession", "bedrock-agentcore:ListCodeInterpreterSessions", "bedrock-agentcore:InvokeCodeInterpreter" ], "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:code-interpreter-custom/<codeInterpreterCustomId>" } ] }

AgentCore 閘道

當您的繫帶使用以 SigV4 傳入身分驗證設定的閘道時,請新增此政策。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreGatewayAccess", "Effect": "Allow", "Action": "bedrock-agentcore:InvokeGateway", "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:gateway/<gatewayId>" } ] }

Amazon S3 和 Git 中的技能來源

當您的繫帶從 Amazon S3 來源擷取技能時,請新增此政策。執行角色會列出並下載儲存貯體字首下的技能物件。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreSkillS3Access", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::<skillBucket>", "arn:aws:s3:::<skillBucket>/*" ] } ] }

若要從私有 Git 儲存庫擷取技能,繫帶會從 API 金鑰登入資料提供者讀取個人存取字符。針對保存字符的登入資料提供者,授予如下所示的 API 金鑰登入資料提供者政策。

API 金鑰登入資料提供者 (OpenAI、Gemini、LiteLLM 或 MCP 標頭 ARN 參考)

當您的繫帶針對 OpenAI、Gemini 或 LiteLLM 等模型提供者使用 API 金鑰登入資料提供者時,請新增此政策。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreApiKeyTokenVaultDefault", "Effect": "Allow", "Action": "bedrock-agentcore:GetResourceApiKey", "Resource": [ "arn:aws:bedrock-agentcore:<region>:<accountId>:token-vault/default", "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default/workload-identity/harness_<agentName>-*" ] }, { "Sid": "AgentCoreApiKeyTokenVaultPerKey", "Effect": "Allow", "Action": "bedrock-agentcore:GetResourceApiKey", "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:token-vault/default/apikeycredentialprovider/<apiKeyName>" }, { "Sid": "AgentCoreApiKeySecret", "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:<region>:<accountId>:secret:bedrock-agentcore-identity!default/apikey/<apiKeyName>-*" } ] }

OAuth2 登入資料提供者 (OAuth 保護的閘道)

當您的繫帶使用 OAuth2 憑證提供者進行 OAuth 保護的閘道工具時,請新增此政策。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AgentCoreOAuth2TokenVaultDefault", "Effect": "Allow", "Action": "bedrock-agentcore:GetResourceOauth2Token", "Resource": [ "arn:aws:bedrock-agentcore:<region>:<accountId>:token-vault/default", "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default", "arn:aws:bedrock-agentcore:<region>:<accountId>:workload-identity-directory/default/workload-identity/harness_<agentName>-*" ] }, { "Sid": "AgentCoreOAuth2TokenVaultPerProvider", "Effect": "Allow", "Action": "bedrock-agentcore:GetResourceOauth2Token", "Resource": "arn:aws:bedrock-agentcore:<region>:<accountId>:token-vault/default/oauth2credentialprovider/<oauthProviderName>" }, { "Sid": "AgentCoreOAuth2Secret", "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "arn:aws:secretsmanager:<region>:<accountId>:secret:bedrock-agentcore-identity!default/oauth2/<oauthProviderName>-*" } ] }

預留位置參考

將上述政策中的下列預留位置取代為您的環境特有的值:

預留位置 說明

<region>

部署資源 AWS 的區域。

<accountId>

AWS 您的帳戶 ID。

<agentName>

您的繫帶代理程式的名稱。

<agentNameAbbrv>

在預設 AgentCore 記憶體資源名稱中使用的繫帶代理程式名稱縮寫形式。

<memoryId>

AgentCore 記憶體資源的 ID。

<browserCustomId>

自訂瀏覽器資源的 ID。

<codeInterpreterCustomId>

自訂程式碼解譯器資源的 ID。

<gatewayId>

AgentCore Gateway 資源的 ID。

<apiKeyName>

API 金鑰登入資料提供者的名稱。

<skillBucket>

存放技能檔案的 S3 儲存貯體名稱。

<oauthProviderName>

OAuth2 登入資料提供者的名稱。

<ecrRegion>

託管 ECR 儲存庫的區域。

<ecrAccountId>

擁有 ECR 儲存庫 AWS 的帳戶 ID。

<ecrRepoName>

ECR 儲存庫的名稱。

注意

Secrets Manager 資源-*的結尾會考量 Secrets Manager 附加至秘密 ARNs 的隨機尾碼。