简介
本文档介绍应用编程接口(API)管理员如何将网络、端口和URL对象批量推送到Firepower管理中心(FMC)。
先决条件
要求
Cisco 建议您了解以下主题:
使用的组件
- 支持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导航至对象>对象管理>网络并验证主机对象,如图所示:
故障排除
- 使用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