Gunakan AgentCore Gateway dengan Kebijakan di AgentCore
Ikuti panduan otorisasi dan otentikasi gateway untuk mendapatkan kredensional yang diperlukan untuk akses gateway.
Evaluasi kebijakan hanya berlaku untuk alat MCP. Terlepas dari mode evaluasi kebijakan, gateway selalu memungkinkan permintaan MCP (prompts/list,prompts/get) dan sumber daya (resources/list,resources/read,resources/templates/list).
Daftar alat diperlakukan sebagai tindakan meta. Ketika prinsipal mencantumkan alat yang tersedia, mesin kebijakan tidak mengevaluasi konteks lengkap dari pemanggilan alat tertentu (misalnya, parameter input).
Seorang kepala sekolah hanya diizinkan untuk melihat alat dalam daftar yang akan diizinkan untuk dihubungi oleh kebijakan. Karena konteks lengkap panggilan alat tidak tersedia selama daftar, ini berarti prinsipal diizinkan untuk membuat daftar alat jika ada serangkaian keadaan di mana panggilan ke alat itu akan diizinkan.
Akibatnya, alat yang muncul dalam daftar tidak menjamin bahwa panggilan berikutnya ke alat itu akan diotorisasi. Keputusan otorisasi untuk pemanggilan alat aktual dievaluasi secara terpisah menggunakan konteks permintaan lengkap, termasuk parameter input.
Pilih salah satu metode berikut:
contoh
- 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))
Respons hanya menampilkan alat yang dapat dilihat oleh kebijakan Anda. Alat yang ditolak oleh kebijakan tidak akan muncul dalam daftar.
Lakukan panggilan alat ke gateway Anda. Evaluasi kebijakan menentukan apakah panggilan diizinkan atau ditolak.
Pilih salah satu metode berikut:
contoh
- 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))
Tanggapan kebijakan
Saat kebijakan mengizinkan permintaan:
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"isError": false,
"content": [
{
"type": "text",
"text": "ToolResult"
}
]
}
}
Ketika kebijakan menolak permintaan:
{
"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
}
}