簡介
本文檔介紹應用程式設計介面(API)管理員如何批次將網路、埠和URL對象推送到Firepower管理中心(FMC)。
必要條件
需求
思科建議您瞭解以下主題:
採用元件
- 支援REST API(6.1版或更高版本)並啟用REST API的Firepower管理中心
- 使用Python的REST API互動。
限制
- FMC不接受對象名稱大於64個字元。
- 對象名稱在對象名稱開頭不應有空格,在結尾不應有分號。
- 負載在一個批次推送中不能包含超過1,000個條目。
- 單個批次推送中的負載大小不能超過2MB。
背景資訊
REST API日益流行,因為網路管理員可以使用輕量級的可程式設計方法配置和管理其網路。FMC支援使用任何REST客戶端以及使用內建API資源管理器的配置和管理。
本文檔中的示例將CSV檔案作為輸入,並通過REST API介面將對象推送到FMC。本文檔僅介紹主機網路批次推送,並且可以為其他對象擴展類似邏輯。示例代碼附加到URL和埠對象的文檔。
以下是所使用網路主機上的POST的API參考,如下圖所示:
設定
步驟1.啟用REST API並生成身份驗證令牌。如需詳細設定步驟和範例,請參閱在FMC上產生驗證權杖。
import requests
import csv
import json
from requests.auth import HTTPBasicAuth
from getpass import getpass
address = input("Enter IP Address of the FMC: ")
username = input ("Enter Username: ")
password = getpass("Enter Password: ")
api_uri = "/api/fmc_platform/v1/auth/generatetoken"
url = "https://" + address + api_uri
response = requests.request("POST", url, verify=False, auth=HTTPBasicAuth(username, password))
accesstoken = response.headers["X-auth-access-token"]
refreshtoken = response.headers["X-auth-refresh-token"]
DOMAIN_UUID = response.headers["DOMAIN_UUID"]
步驟2.將提供的CSV檔案轉換為要用作請求的JSON負載的字典。每個對象型別的示例CSV檔案將附加到文檔。
csvFilePath = input("Please enter the CSV Filepath (For eg. : path/to/file/objects.csv) :")
host = []
with open(csvFilePath, encoding='utf-8-sig') as csvf:
csvReader = csv.DictReader(csvf)
for rows in csvReader:
if rows['type'] == "Host":
host.append(rows)
host_payload = json.dumps(host)
此階段的host_payload看起來與圖中所示相同:
[{
"name": "Host-1",
"description": "Host-1",
"type": "Host",
"value": "10.10.10.10"
},
{
"name": "Host-2",
"description": "Host-2",
"type": "Host",
"value": "10.10.10.1"
},
{
"name": "Host-3",
"description": "Host-3",
"type": "Host",
"value": "10.10.10.2"
}
]
步驟3.根據從前面步驟收到的輸入建立請求,如果負載不為空,則傳送請求。
host_api_uri = "/api/fmc_config/v1/domain/" + DOMAIN_UUID + "/object/hosts?bulk =true"
host_url = "https://" + address + host_api_uri
headers = { 'Content-Type': 'application/json', 'x-auth-access-token': accesstoken }
if host != []:
response = requests.request("POST", host_url, headers=headers, data = host_payload, verify = False)
else :
print("Please Validate that the CSV file provided is correct or at correct location")
驗證
- 列印響應的狀態代碼以驗證請求是否成功或失敗,如下圖所示。
if response.status_code == 201 or response.status_code == 202:
print("Host Objects successfully pushed")
else:
print("Host Object creation failed")
- 登入FMC 導覽至Object > Object Management > Network,然後驗證主機對象,如下圖所示:
疑難排解
- 使用REST客戶端時,您可能會看到由於自簽名證書而導致與SSL證書問題有關的錯誤。您可以根據所使用的客戶端關閉此驗證。
- FMC REST API身份驗證令牌有效期為30分鐘,最多可刷新三次。
- 可以從響應正文中提取與請求相關的錯誤。可以將其收集為日誌檔案以幫助進行故障排除。
logfile = "requestlog.txt"
log = open(logfile,"w+")
log.write(response.text)
log.close
- 所有REST請求都記錄到FMC上的這兩個日誌檔案中。搜尋您的URL(例如.../object/hosts),以及正確的操作(如果您在GET操作中查詢錯誤,請確保您的日誌啟動了GET ...對象/主機)
tail -f /var/opt/CSCOpx/MDC/tomcat/logs/stdout.logs
tail -f /var/opt/CSCOpx/MDC/log/operation/usmsharedsvcs.log