AgentCore で ポリシーで AgentCore Gateway を使用する
ゲートウェイの認可と認証ガイドに従って、ゲートウェイへのアクセスに必要な認証情報を取得します。
ポリシー評価は MCP ツールにのみ適用されます。ポリシー評価モードに関係なく、ゲートウェイは常に MCP プロンプト (prompts/list、prompts/get) とリソース (resources/list、resources/read、) を許可しますresources/templates/list。
ツールのリストはメタアクション として扱われます。プリンシパルが使用可能なツールを一覧表示する場合、ポリシーエンジンは特定のツール呼び出しの完全なコンテキスト (入力パラメータなど) を評価しません。
プリンシパルは、ポリシーによって呼び出すことが許可されるツールをリストにのみ表示できます。ツール呼び出しの完全なコンテキストは一覧表示中に使用できないため、プリンシパルは、そのツールへの呼び出しが許可される一連の状況が存在する場合にツールを一覧表示できることを意味します。
その結果、リストにツールが表示されても、そのツールへの後続の呼び出しが承認されるとは限りません。実際のツール呼び出しの承認決定は、入力パラメータを含む完全なリクエストコンテキストを使用して個別に評価されます。
次のいずれかの方法を選択します。
例
- curl
-
-
curl -X POST \
https://mygateway-abcdefghij.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-d '{
"jsonrpc": "2.0",
"id": "list-tools-request",
"method": "tools/list"
}'
- Python requests package
-
-
import requests
import json
def list_tools(gateway_url, access_token):
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {access_token}"
}
payload = {
"jsonrpc": "2.0",
"id": "list-tools-request",
"method": "tools/list"
}
response = requests.post(gateway_url, headers=headers, json=payload)
return response.json()
# Example usage
gateway_url = "https://mygateway-abcdefghij.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp"
access_token = "YOUR_ACCESS_TOKEN"
tools = list_tools(gateway_url, access_token)
print(json.dumps(tools, indent=2))
レスポンスは、ポリシーで表示できるツールのみを返します。ポリシーによって拒否されたツールはリストに表示されません。
ゲートウェイにツール呼び出しを行います。ポリシー評価は、呼び出しを許可または拒否するかどうかを決定します。
次のいずれかの方法を選択します。
例
- curl
-
-
# Call a tool to test policy enforcement
curl -X POST \
https://mygateway-abcdefghij.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-d '{
"jsonrpc": "2.0",
"id": "test-policy",
"method": "tools/call",
"params": {
"name": "tool_name",
"arguments": {arguments}
}
}'
- Python requests package
-
-
import requests
import json
def call_gateway_tool(gateway_url, access_token, tool_name, arguments):
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {access_token}"
}
payload = {
"jsonrpc": "2.0",
"id": "test-policy",
"method": "tools/call",
"params": {
"name": tool_name,
"arguments": arguments
}
}
response = requests.post(gateway_url, headers=headers, json=payload)
return response.json()
# Example usage
gateway_url = "https://mygateway-abcdefghij.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp"
access_token = "YOUR_ACCESS_TOKEN"
result = call_gateway_tool(
gateway_url,
access_token,
"RefundTool___process_refund",
{
"orderId": "12345",
"amount": 450,
"reason": "Defective product"
}
)
print(json.dumps(result, indent=2))
ポリシーレスポンス
ポリシーがリクエストを許可する場合:
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"isError": false,
"content": [
{
"type": "text",
"text": "ToolResult"
}
]
}
}
ポリシーがリクエストを拒否する場合:
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"content": [
{
"type": "text",
"text": "AuthorizeActionException - Tool Execution Denied: Tool call not allowed due to policy enforcement [No policy applies to the request (denied by default).]"
}
],
"isError": true
}
}