Introducción
Este documento describe cómo un administrador de la interfaz de programación de aplicaciones (API) puede enviar objetos de red, puerto y URL de forma masiva a Firepower Management Center (FMC).
Prerequisites
Requirements
Cisco recomienda que tenga conocimiento sobre estos temas:
Componentes Utilizados
- Firepower Management Center que admite API REST (versión 6.1 o superior) con API REST habilitada
- Interacciones API REST con Python.
Limitaciones
- El CSP no acepta que el nombre del objeto tenga más de 64 caracteres.
- El nombre del objeto no debe tener espacios al principio del nombre del objeto ni punto y coma al final.
- La carga útil no puede contener más de 1000 entradas en una única transferencia masiva.
- El tamaño de la carga útil no puede ser superior a 2 MB en una sola transferencia masiva.
Antecedentes
Las API REST son cada vez más populares debido al enfoque programable ligero que los administradores de red pueden utilizar para configurar y administrar sus redes. FMC admite la configuración y la gestión mediante cualquier cliente REST y también mediante el explorador de API integrado.
El ejemplo de este documento toma un archivo CSV como entrada y envía los objetos a FMC a través de la interfaz API REST. El documento cubre solamente la inserción masiva de la red de host y se puede extender una lógica similar para los otros objetos. Se adjunta un código de ejemplo al documento para los objetos URL y Port.
Aquí está la referencia de la API para el POST en los hosts de red que se utilizan, como se muestra en la imagen:

Configurar
Paso 1. Habilite la API REST y genere el token de autenticación. Para ver los pasos y ejemplos de configuración detallados, consulte Generar token de autenticación en 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"]
Paso 2.Convierta el archivo CSV proporcionado en un diccionario para utilizarlo como carga JSON para la solicitud. Se adjunta al documento un archivo CSV de ejemplo para cada tipo de objeto.

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)
El host_payload en esta etapa tiene el mismo aspecto que se muestra en la imagen:
[{
"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"
}
]
Paso 3.Cree la solicitud a partir de los datos recibidos de pasos anteriores y envíela si la carga no está vacía.
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")
Verificación
- Imprima el código de estado de la respuesta para comprobar si la solicitud se ha realizado correctamente o no, como se muestra aquí.
if response.status_code == 201 or response.status_code == 202:
print("Host Objects successfully pushed")
else:
print("Host Object creation failed")
- Inicie sesión en FMC Navegue hasta Object > Object Management > Network y verifique los Objetos Host, como se muestra en la imagen:

Troubleshoot
- Al utilizar el cliente REST, es posible que vea errores relacionados con el problema del certificado SSL debido a un certificado autofirmado. Puede desactivar esta validación en función del cliente que esté utilizando.
- Los tokens de autenticación de la API REST de FMC son válidos durante 30 minutos y pueden actualizarse hasta tres veces.
- El error relacionado con la solicitud se puede extraer del cuerpo de la respuesta. Esto se puede recopilar como un archivo de registro para ayudar con la resolución de problemas.
logfile = "requestlog.txt"
log = open(logfile,"w+")
log.write(response.text)
log.close
- Todas las solicitudes REST se registran en estos dos archivos de registro en FMC. Busque su URL (p. ej. .../object/hosts) con la operación correcta(Si está buscando un error para la operación GET, asegúrese de que su registro inicia algo como GET ...objeto/hosts)
tail -f /var/opt/CSCOpx/MDC/tomcat/logs/stdout.logs
tail -f /var/opt/CSCOpx/MDC/log/operation/usmsharedsvcs.log