

# Amazon Bedrock AgentCore Gateway で IAM 条件キーを使用する
<a name="security-gateway-condition-keys"></a>

Amazon Bedrock AgentCore 固有の条件キーを使用して、組織内のゲートウェイとゲートウェイターゲットの作成方法と設定方法を制御します。これらの条件キーは、コントロールプレーンオペレーションに適用されます。これらは、組織のセキュリティ要件を適用するためにサービスコントロールポリシー (SCPsで特に役立ちます。

例えば、以下のことが可能です:
+ すべてのゲートウェイで認証に特定の ID プロバイダーを使用する必要があります。
+ 作成できるターゲットのタイプを制限します。
+ ターゲットが特定の認証情報プロバイダータイプを使用するよう強制します。
+ ゲートウェイターゲットは、承認されたサブネットとセキュリティグループを介して接続する必要があります。

## ゲートウェイ条件キー
<a name="gateway-condition-keys"></a>

`CreateGateway` および `UpdateGateway`オペレーションには、次の条件キーが適用されます。


| 条件キー | タイプ | API オペレーション | 説明 | 
| --- | --- | --- | --- | 
|  `bedrock-agentcore:DiscoveryUrl`  | 文字列 |  `CreateGateway`, `UpdateGateway`  | ゲートウェイで設定された検出 URL でアクセスをフィルタリングします。これを使用して、ゲートウェイが特定の ID プロバイダーを使用していることを確認します。 | 
|  `bedrock-agentcore:KmsKeyArn`  | String |  `CreateGateway`, `UpdateGateway`  | ゲートウェイリソースの暗号化に使用される KMS キー ARN でアクセスをフィルタリングします。 | 
|  `bedrock-agentcore:PolicyEngineArn`  | String |  `CreateGateway`, `UpdateGateway`  | ゲートウェイに関連付けられたポリシーエンジン設定の ARN でアクセスをフィルタリングします。 | 
|  `bedrock-agentcore:PolicyEngineMode`  | String |  `CreateGateway`, `UpdateGateway`  | ゲートウェイに関連付けられたポリシーエンジン設定のモードによってアクセスをフィルタリングします。 | 
|  `bedrock-agentcore:ProtocolType`  | String |  `CreateGateway`, `UpdateGateway`  | ゲートウェイのプロトコルタイプでアクセスをフィルタリングします。 | 
|  `bedrock-agentcore:GatewayAuthorizerType`  | String |  `CreateGateway`, `UpdateGateway`  | ゲートウェイで設定されたオーソライザータイプでアクセスをフィルタリングします。有効な値は、`AWS_IAM`、`CUSTOM_JWT`、`NONE` です。 | 

## ゲートウェイターゲット条件キー
<a name="gateway-target-condition-keys"></a>

`CreateGatewayTarget` および `UpdateGatewayTarget`オペレーションには、次の条件キーが適用されます。


| 条件キー | タイプ | API オペレーション | 説明 | 
| --- | --- | --- | --- | 
|  `bedrock-agentcore:McpTargetConfigurationType`  | 文字列 |  `CreateGatewayTarget`, `UpdateGatewayTarget`  | MCP ターゲットのタイプでアクセスをフィルタリングします。有効な値には、`apiGateway`、`lambda`、`mcpServer`、`openApiSchema`、`smithyModel`、および `connector` があります。 | 
|  `bedrock-agentcore:HttpTargetConfigurationType`  | String |  `CreateGatewayTarget`, `UpdateGatewayTarget`  | HTTP ターゲットのタイプでアクセスをフィルタリングします。有効な値は、`agentcoreRuntime` および `passthrough` です。 | 
|  `bedrock-agentcore:InferenceTargetConfigurationType`  | String |  `CreateGatewayTarget`, `UpdateGatewayTarget`  | 推論ターゲットのタイプでアクセスをフィルタリングします。有効な値は、`connector` および `provider` です。 | 
|  `bedrock-agentcore:CredentialProviderType`  | String |  `CreateGatewayTarget`, `UpdateGatewayTarget`  | ターゲットで設定された認証情報プロバイダータイプでアクセスをフィルタリングします。有効な値には、`GATEWAY_IAM_ROLE`、`OAUTH`、`API_KEY`、`CALLER_IAM_CREDENTIALS`、および `JWT_PASSTHROUGH` があります。 | 
|  `bedrock-agentcore:PrivateEndpointType`  | String |  `CreateGatewayTarget`, `UpdateGatewayTarget`  | ターゲットのプライベートエンドポイントタイプでアクセスをフィルタリングします。有効な値は、`managedVpcResource` および `selfManagedLatticeResource` です。 | 
|  `bedrock-agentcore:ResourceConfigurationIdentifier`  | String |  `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 ポリシーと SCPs で条件キーを使用して、ゲートウェイ設定に組織制御を適用する方法を示しています。

### ゲートウェイに特定の ID プロバイダーの使用を要求する
<a name="example-require-specific-idp"></a>

次の SCP を使用して、ゲートウェイが組織の承認済み ID プロバイダー検出 URL を使用しない場合に、ゲートウェイの作成または更新を拒否します。

```
{
    "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 サーバー URLsを使用することを防ぎます。

```
{
    "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>

次のポリシーを使用して、ゲートウェイターゲットを承認されたサブネットに制限します。詳細については、[AgentCore VPC 設定で IAM 条件キー](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"
                    ]
                }
            }
        }
    ]
}
```