

# 在 Amazon Bedrock AgentCore Gateway 中使用 IAM
<a name="security-gateway-condition-keys"></a>

使用 Amazon Bedrock AgentCore-specific 条件密钥控制如何在组织中创建和配置网关和网关目标。这些条件键适用于控制平面操作。它们在服务控制策略 (SCP) 中特别有用，可以强制执行组织安全要求。

例如，您可以：
+ 要求所有网关都使用特定的身份提供商进行身份验证。
+ 限制可以创建的目标类型。
+ 强制目标使用特定的凭证提供者类型。
+ 要求网关目标通过经批准的子网和安全组进行连接。

## 网关条件密钥
<a name="gateway-condition-keys"></a>

以下条件键适用于`CreateGateway`和`UpdateGateway`操作。


| 条件键 | Type | API 操作 | 说明 | 
| --- | --- | --- | --- | 
|  `bedrock-agentcore:DiscoveryUrl`  | 字符串 |  `CreateGateway`, `UpdateGateway`  | 通过网关上配置的发现 URL 筛选访问权限。使用它来确保网关使用特定的身份提供商。 | 
|  `bedrock-agentcore:KmsKeyArn`  | 字符串 |  `CreateGateway`, `UpdateGateway`  | 按用于加密网关资源的 KMS 密钥 ARN 筛选访问权限。 | 
|  `bedrock-agentcore:PolicyEngineArn`  | 字符串 |  `CreateGateway`, `UpdateGateway`  | 按与网关关联的策略引擎配置的 ARN 筛选访问权限。 | 
|  `bedrock-agentcore:PolicyEngineMode`  | 字符串 |  `CreateGateway`, `UpdateGateway`  | 按与网关关联的策略引擎配置模式筛选访问权限。 | 
|  `bedrock-agentcore:ProtocolType`  | 字符串 |  `CreateGateway`, `UpdateGateway`  | 按网关的协议类型筛选访问权限。 | 
|  `bedrock-agentcore:GatewayAuthorizerType`  | 字符串 |  `CreateGateway`, `UpdateGateway`  | 按网关上配置的授权者类型筛选访问权限。有效值包括 `AWS_IAM`、`CUSTOM_JWT` 和 `NONE`。 | 

## 网关目标条件密钥
<a name="gateway-target-condition-keys"></a>

以下条件键适用于`CreateGatewayTarget`和`UpdateGatewayTarget`操作。


| 条件键 | Type | API 操作 | 说明 | 
| --- | --- | --- | --- | 
|  `bedrock-agentcore:McpTargetConfigurationType`  | 字符串 |  `CreateGatewayTarget`, `UpdateGatewayTarget`  | 按 MCP 目标的类型筛选访问权限。有效值包括 `apiGateway`、`lambda`、`mcpServer`、`openApiSchema`、`smithyModel` 和 `connector`。 | 
|  `bedrock-agentcore:HttpTargetConfigurationType`  | 字符串 |  `CreateGatewayTarget`, `UpdateGatewayTarget`  | 按 HTTP 目标的类型筛选访问权限。有效值包括 `agentcoreRuntime` 和 `passthrough`。 | 
|  `bedrock-agentcore:InferenceTargetConfigurationType`  | 字符串 |  `CreateGatewayTarget`, `UpdateGatewayTarget`  | 按推理目标的类型筛选访问权限。有效值包括 `connector` 和 `provider`。 | 
|  `bedrock-agentcore:CredentialProviderType`  | 字符串 |  `CreateGatewayTarget`, `UpdateGatewayTarget`  | 按目标上配置的凭证提供者类型筛选访问权限。有效值包括 `GATEWAY_IAM_ROLE`、`OAUTH`、`API_KEY`、`CALLER_IAM_CREDENTIALS` 和 `JWT_PASSTHROUGH`。 | 
|  `bedrock-agentcore:PrivateEndpointType`  | 字符串 |  `CreateGatewayTarget`, `UpdateGatewayTarget`  | 按目标的私有端点类型筛选访问权限。有效值包括 `managedVpcResource` 和 `selfManagedLatticeResource`。 | 
|  `bedrock-agentcore:ResourceConfigurationIdentifier`  | 字符串 |  `CreateGatewayTarget`, `UpdateGatewayTarget`  | 按目标私有端点的资源配置标识符筛选访问权限。 | 
|  `bedrock-agentcore:subnets`  | ArrayOfString |  `CreateGatewayTarget`, `UpdateGatewayTarget`  | 按为目标的托管 VPC 资源配置的子网筛选访问权限。请参阅在 [ AgentCore VPC 设置中使用 IAM 条件密钥](security-vpc-condition.md)。 | 
|  `bedrock-agentcore:securityGroups`  | ArrayOfString |  `CreateGatewayTarget`, `UpdateGatewayTarget`  | 按为目标的托管 VPC 资源配置的安全组筛选访问权限。 | 
|  `bedrock-agentcore:AllowedQueryParameters`  | ArrayOfString |  `CreateGatewayTarget`, `UpdateGatewayTarget`  | 按目标元数据配置中允许的查询参数筛选访问权限。 | 
|  `bedrock-agentcore:AllowedRequestHeaders`  | ArrayOfString |  `CreateGatewayTarget`, `UpdateGatewayTarget`  | 按目标元数据配置中允许的请求标头筛选访问权限。 | 
|  `bedrock-agentcore:AllowedResponseHeaders`  | ArrayOfString |  `CreateGatewayTarget`, `UpdateGatewayTarget`  | 按目标元数据配置中允许的响应标头筛选访问权限。 | 
|  `bedrock-agentcore:CredentialProviderScope`  | ArrayOfString |  `CreateGatewayTarget`, `UpdateGatewayTarget`  | 按在 OAuth 凭据提供商上为目标配置的范围筛选访问权限。 | 

## 策略示例
<a name="gateway-condition-key-examples"></a>

以下示例说明如何使用 IAM 策略和 SCP 中的条件密钥对网关配置实施组织控制。

### 要求网关使用特定的身份提供商
<a name="example-require-specific-idp"></a>

当网关不使用贵组织批准的身份提供商发现 URL 时，使用以下 SCP 拒绝网关的创建或更新。

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "EnforceGatewayIdP",
            "Effect": "Deny",
            "Action": [
                "bedrock-agentcore:CreateGateway",
                "bedrock-agentcore:UpdateGateway"
            ],
            "Resource": "*",
            "Condition": {
                "StringNotEquals": {
                    "bedrock-agentcore:DiscoveryUrl": "https://login.example.com/.well-known/openid-configuration"
                }
            }
        }
    ]
}
```

### 限制目标的凭证提供者类型
<a name="example-restrict-target-credential-types"></a>

使用以下 SCP 将网关目标限制为经批准的凭证提供商类型。在此示例中，您可以将网关目标限制为仅使用网关的 IAM 角色或调用者 IAM 证书。目标不能使用外部管理的 API 密钥或 OAuth 令牌。

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "RestrictTargetCredentialTypes",
            "Effect": "Deny",
            "Action": [
                "bedrock-agentcore:CreateGatewayTarget",
                "bedrock-agentcore:UpdateGatewayTarget"
            ],
            "Resource": "*",
            "Condition": {
                "StringNotEquals": {
                    "bedrock-agentcore:CredentialProviderType": [
                        "GATEWAY_IAM_ROLE",
                        "CALLER_IAM_CREDENTIALS"
                    ]
                }
            }
        }
    ]
}
```

### 限制可以创建的 MCP 目标的类型
<a name="example-restrict-target-types"></a>

使用以下策略拒绝创建使用某些配置类型的 MCP 目标。此示例禁止目标使用直接 MCP 服务器 URL。

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "DenyDirectMcpServerTargets",
            "Effect": "Deny",
            "Action": [
                "bedrock-agentcore:CreateGatewayTarget",
                "bedrock-agentcore:UpdateGatewayTarget"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "bedrock-agentcore:McpTargetConfigurationType": "mcpServer"
                }
            }
        }
    ]
}
```

### 要求目标使用私有端点
<a name="example-enforce-private-endpoints"></a>

使用以下 SCP 拒绝创建未指定私有终端节点类型的目标。这样可以确保所有目标流量都保持在私有网络内。

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "EnforcePrivateEndpoints",
            "Effect": "Deny",
            "Action": [
                "bedrock-agentcore:CreateGatewayTarget",
                "bedrock-agentcore:UpdateGatewayTarget"
            ],
            "Resource": "*",
            "Condition": {
                "Null": {
                    "bedrock-agentcore:PrivateEndpointType": "true"
                }
            }
        }
    ]
}
```

### 要求网关使用客户托管的 KMS 密钥
<a name="example-require-encryption"></a>

使用此 SCP 要求所有网关都使用客户托管的 KMS 密钥进行加密，而不是服务默认密钥。

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "EnforceCustomerManagedKey",
            "Effect": "Deny",
            "Action": [
                "bedrock-agentcore:CreateGateway",
                "bedrock-agentcore:UpdateGateway"
            ],
            "Resource": "*",
            "Condition": {
                "Null": {
                    "bedrock-agentcore:KmsKeyArn": "true"
                }
            }
        }
    ]
}
```

### 为网关目标强制使用经批准的子网
<a name="example-enforce-approved-subnets-for-targets"></a>

使用以下策略将网关目标限制为已批准的子网。有关更多信息，请参阅[将 IAM 条件密钥与 AgentCore VPC 设置一起使用](security-vpc-condition.md)。

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "EnforceApprovedSubnets",
            "Effect": "Deny",
            "Action": [
                "bedrock-agentcore:CreateGatewayTarget",
                "bedrock-agentcore:UpdateGatewayTarget"
            ],
            "Resource": "*",
            "Condition": {
                "ForAnyValue:StringNotEquals": {
                    "bedrock-agentcore:subnets": [
                        "subnet-0123456789abcdef0",
                        "subnet-0123456789abcdef1"
                    ]
                }
            }
        }
    ]
}
```