尝试使用他们的 tetpyclient 在 Cisco 的 Tetration API 中发出 POST 请求。使用 get 请求时,我收到 200 响应,但使用 json 过滤器发出 POST 请求来查询流时,收到 403 响应。是我的 json 数据语法不正确还是我的 python 中存在语法错误?
from tetpyclient import RestClient
import urllib3
import json
import requests
from datetime import datetime
from flask import *
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
API_ENDPOINT = "https://"
restclient = RestClient(API_ENDPOINT, credentials_file = 'path/to/credentials.json', verify = False)
get = restclient.get("/flowsearch/metrics")
print (get.status_code) ##to test if api can be reached
req_payload = {"t0": "2020-08-01T09:00:00-0700",
"t1": "2020-08-01T10:00:00-0700",
"scopeName": "Default",
"limit": 10,
"filter": {
"type": "and",
"filters": [
{"type": "eq", "field": "src_address","value": "00.000.0.000" },
{"type": "eq", "field": "dst_address","value": "000.000.00.00" }
]
}
}
resp = restclient.post('/flowsearch', json_body=json.dumps(req_payload))
print(resp.content)
print (resp.status_code)
if resp.status_code == 200:
parsed_resp = json.loads(resp.content)
print (json.dumps(parsed_resp, indent=4, sort_keys=True))
我感谢任何和所有的反馈! 以下是 tetration api 文档的链接:https://www.cisco.com/c/en/us/td/docs/security/workload_security/tetration-analytics/sw/config/b_Tetration_OpenAPI/m_flow-search.html
HTTP 403 是 HTTP 状态代码,表示由于某种原因禁止访问所请求的资源
您使用的凭据似乎不允许调用
/flowsearch