View a markdown version of this page

設定 AgentCore Gateway 的許可 - Amazon Bedrock AgentCore

設定 AgentCore Gateway 的許可

若要使用 Amazon Bedrock AgentCore Gateway 及其功能,您需要考慮下列許可:

  1. 閘道建置器/使用者許可 – 提供給閘道建置器或使用者的許可,以允許它建立、管理和/或使用 AgentCore 閘道。

  2. 閘道服務角色許可 – 提供給您為閘道建立之服務角色的許可。這些許可允許 Amazon Bedrock AgentCore 服務代表叫用閘道的身分執行動作。

  3. 以資源為基礎的許可 – 連接到 資源的許可,以允許閘道服務角色存取它。您將在以資源為基礎的政策Principal中包含閘道服務角色的 Amazon Resource Name (ARN) 做為 。

  4. 閘道資源型政策 – 直接連接到閘道資源的政策,以控制哪些主體可以叫用它們。如需詳細資訊,請參閱 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 函數,請選取下列其中一種方法
    Console
    1. ======= 在 AWS 管理主控台中將資源型政策連接至 Lambda 函數

    2. 請遵循在 Lambda 中檢視資源型 IAM 政策主控台索引標籤中的步驟。

    3. 資源型政策陳述式區段中,選擇新增許可

    4. 選取 AWS 帳戶並填寫下列欄位:

      • 陳述式 ID – 陳述式的唯一識別符,提供閘道服務角色存取 函數的許可。

      • Principal – 指定閘道服務角色的 ARN。

      • 動作 – 選取 lambda:InvokeFunction

    CLI
    1. 若要使用 CLI 將資源型政策連接至 Lambda AWS 函數,請遵循授予 Lambda 函數存取 AWS 服務的步驟,並將閘道服務角色指定為 principal

      您可以在終端機中執行下列程式碼,以新增閘道服務角色存取 us-east-1 中函數的許可:

      aws lambda add-permission \ --function-name "MyFunction" \ --statement-id "GatewayInvoke" \ --action "lambda:InvokeFunction" \ --principal "arn:aws:iam::123456789012:role/MyGatewayServiceRole" --region us-east-1
    範例

    如果您計劃從 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 限制進行管理操作