目录

简介

先决条件

要求

使用的组件

限制

背景信息

配置

验证

故障排除

简介

本文档介绍应用编程接口(API)管理员如何将网络、端口和URL对象批量推送到Firepower管理中心(FMC)。

先决条件

要求

Cisco 建议您了解以下主题：

- 了解各种REST API调用。(什么是REST API?)

- FMC API快速入门指南回顾

- FMC可重用对象研究

- Python请求库的基本知识

使用的组件

- 支持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