

# 設定 AgentCore Gateway 的許可
<a name="gateway-prerequisites-permissions"></a>

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

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

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

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

1.  **閘道資源型政策** – 直接連接到閘道資源的政策，以控制哪些主體可以叫用它們。如需詳細資訊，請參閱 [Amazon Bedrock AgentCore 的資源型政策](resource-based-policies.md)。

**注意**  
如果您不想設定自訂許可，您可以使用下列選項輕鬆設定：\* 將 [BedrockAgentCoreFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/BedrockAgentCoreFullAccess.html) 連接到 IAM 身分，以允許它建立、管理和叫用閘道。\* 使用 AWS 管理主控台或 AgentCore CLI 建立具有適當許可的 AgentCore 閘道服務角色，以及具有適當資源型政策的閘道目標，以允許服務角色存取它們。

選取主題以進一步了解：

**Topics**
+ [閘道建置器和使用者許可](#gateway-user-permissions)
+ [AgentCore Gateway 服務角色許可](#gateway-service-role-permissions)
+ [Gateway 許可的最佳實務](#gateway-prerequisites-best-practices)

## 閘道建置器和使用者許可
<a name="gateway-user-permissions"></a>

若要讓身分能夠建立、管理或使用閘道，您需要將身分型政策連接至 IAM 身分，以允許其執行 [Amazon Bedrock AgentCore 相關動作](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrockagentcore.html)。如需完整許可，您可以使用 [BedrockAgentCoreFullAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/BedrockAgentCoreFullAccess.html) 受管政策。

為了提高安全性和控制，您可以透過減少完整存取政策中的許可來建立自己的自訂政策。例如，下列政策允許身分執行與 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*"
    }
  ]
}
```

### 閘道存取許可 （傳入授權）
<a name="gateway-access-permissions"></a>

除了與閘道相關的許可之外，您也需要設定身分的許可，才能在調用期間存取閘道。您將在設定[傳入授權時設定](gateway-inbound-auth.md)這些許可。

## AgentCore Gateway 服務角色許可
<a name="gateway-service-role-permissions"></a>

建立閘道時，您需要具有許可的服務角色，以擔任 IAM 角色並代表 IAM 角色存取 AWS 資源和外部服務。您可以透過下列方式建立服務角色：
+ 如果您在 AWS 管理主控台中或透過 AgentCore CLI 建立閘道，您可以選擇讓 AgentCore 自動為您建立具有必要許可的服務角色。如果您偏好此方法，可以略過此先決條件。
+ 如果您偏好建立自己的服務角色以獲得更佳的自訂，則需要使用本主題中概述的許可來設定角色。若要了解如何建立服務角色並連接許可，請參閱[建立角色以將許可委派給 AWS 服務](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-service.html)。

服務角色所需的許可位於下列主題中：

**Topics**
+ [信任許可](#gateway-service-role-permissions-trust)
+ [傳出授權許可](#gateway-service-role-permissions-outbound-auth)
+ [存取 AWS 資源的許可](#gateway-service-role-permissions-resources)

### 信任許可
<a name="gateway-service-role-permissions-trust"></a>

服務角色必須連接[信任政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#term_trust_policy)，允許 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。

### 傳出授權許可
<a name="gateway-service-role-permissions-outbound-auth"></a>

根據您用於閘道目標的傳出授權類型，您需要將許可新增至服務角色，以允許它叫用目標。這些許可允許閘道服務角色擷取用於調用目標的授權憑證。您可以在[設定傳出授權](gateway-outbound-auth.md)的過程中執行此操作。

### 存取 AWS 資源的許可
<a name="gateway-service-role-permissions-resources"></a>

視您的閘道設定或您選擇新增至閘道的目標而定，您可能需要將許可新增至閘道服務角色，以允許它存取 AWS 資源。下列主題涵蓋閘道服務角色可能需要存取的一些資源：

#### 存取 Lambda 函數
<a name="gateway-lambda-permissions"></a>

如果您將 Lambda 目標連接至閘道，則需要新增 AgentCore Gateway 服務角色的許可，才能執行下列動作來叫用函數：
+ 將身分型政策連接至 AgentCore Gateway 服務角色，以允許 Lambda 函數資源上的 `lambda:InvokeFunction`動作。
+ （如果函數位於與閘道服務角色不同的帳戶中） 將資源型政策連接至 Lambda 函數，以允許閘道服務角色主體對 Lambda 函數資源執行`lambda:InvokeFunction`動作。

選取主題以了解如何設定許可：

**Topics**

<a name="gateway-lambda-identity-based-permissions"></a>===== 將身分型政策連接至閘道服務角色

若要允許閘道服務角色存取 Lambda 目標，請在[新增和移除與您的使用案例相關的 IAM 身分許可](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)中，選擇 主題，以將下列身分型政策連接至 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`清單。

<a name="gateway-lambda-resource-based-permissions"></a>===== （如果函數位於另一個帳戶中） 將資源型政策連接至 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 函數

1. 請遵循在 [Lambda 中檢視資源型 IAM 政策](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html)的**主控台**索引標籤中的步驟。

1. 在**資源型政策陳述**式區段中，選擇**新增許可**。

1. 選取** AWS 帳戶**並填寫下列欄位：
   +  **陳述式 ID** – 陳述式的唯一識別符，提供閘道服務角色存取 函數的許可。
   +  **Principal** – 指定閘道服務角色的 ARN。
   +  **動作** – 選取 `lambda:InvokeFunction`。

------
#### [ CLI ]

1. 若要使用 CLI 將資源型政策連接至 Lambda AWS 函數，請遵循[授予 Lambda 函數存取 AWS 服務](https://docs.aws.amazon.com/lambda/latest/dg/permissions-function-services.html)的步驟，並將閘道服務角色指定為 `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
   ```

------

**Example**  

#### 存取 Amazon S3 物件
<a name="gateway-s3-permissions"></a>

如果您計劃從 Amazon S3 URI 包含閘道目標工具定義，您將需要包含閘道服務角色存取儲存貯體的許可。[AmazonS3ReadOnlyAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonS3ReadOnlyAccess.html) 政策是您可以連接到服務角色的政策範例。您可以將 範圍`Resource`限制為 S3 位置，以提高安全性。

#### Smithy 模型許可
<a name="gateway-smithy-permissions"></a>

如果您打算新增 Smithy 目標，則需要新增閘道服務角色的許可，才能存取 Smithy 模型所參考 AWS 的服務。若要判斷哪些許可需要連接到服務角色，請參閱該服務的文件。

您可以透過選擇[新增和移除與您的使用案例相關的 IAM 身分](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)許可主題，並遵循步驟，將許可新增至服務角色。

例如，如果您的 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 許可的最佳實務
<a name="gateway-prerequisites-best-practices"></a>

 **遵循最低權限原則**   
+ 僅授予閘道運作所需的許可
+ 盡可能使用特定資源 ARNs，而非萬用字元
+ 定期檢閱和稽核許可

 **依函數分隔角色**   
+ 使用不同的角色進行管理和執行
+ 為具有不同目的的不同閘道建立個別角色

 **安全登入資料儲存**   
+ 在 AWS Secrets Manager 中存放 API 金鑰和 OAuth 登入資料
+ 定期輪換憑證

 **監控和稽核**   
+ 啟用閘道操作的 CloudTrail 記錄
+ 定期檢閱存取模式和許可用量

 **在政策中使用條件**   
+ 新增條件以限制何時及如何使用許可
+ 考慮使用來源 IP 限制進行管理操作