Inleiding
In dit document wordt beschreven hoe een API-beheerder (Application Programming Interface) Network-, Port- en URL-objecten in bulk naar Firepower Management Center (FMC) kan duwen.
Voorwaarden
Vereisten
Cisco raadt kennis van de volgende onderwerpen aan:
Gebruikte componenten
- Firepower Management Center dat REST API's (versie 6.1 of hoger) ondersteunt met REST API ingeschakeld
- REST API-interacties met Python.
Beperkingen
- De naam van het object mag niet meer dan 64 tekens bevatten.
- Objectnaam mag geen spatie bevatten aan het begin van de objectnaam en een puntkomma aan het einde.
- De payload mag niet meer dan 1.000 items bevatten in één bulkpush.
- De payload kan niet groter zijn dan 2 MB in één bulkpush.
Achtergrondinformatie
REST API's worden steeds populairder vanwege de lichtgewicht programmeerbare aanpak die netwerkbeheerders kunnen gebruiken om hun netwerken te configureren en te beheren. FMC ondersteunt configuratie en beheer met behulp van elke REST-client en ook met behulp van de ingebouwde API-verkenner.
In het voorbeeld in dit document wordt een CSV-bestand als invoer gebruikt en worden de objecten via de REST API-interface naar FMC geduwd. Het document heeft alleen betrekking op de Host Network Bulk-push en een vergelijkbare logica kan worden uitgebreid voor de andere objecten. Er is een voorbeeldcode aan het document gekoppeld voor URL- en Port-objecten.
Hier is de API-referentie voor de POST op netwerkhosts die worden gebruikt, zoals weergegeven in de afbeelding:

Configureren
Stap 1. Schakel REST API in en genereer Authentication Token. Zie Authenticatie-token genereren op FMC voor gedetailleerde configuratiestappen en voorbeelden.
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"]
Stap 2.Converteer het CSV-bestand dat is geleverd naar een woordenboek om te worden gebruikt als JSON Payload voor het verzoek. Voorbeeld van een CSV-bestand voor elk objecttype is aan het document gekoppeld.

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)
De host_payload ziet er in dit stadium hetzelfde uit als in de afbeelding:
[{
"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"
}
]
Stap 3.Maak de aanvraag op basis van de invoer die u hebt ontvangen van eerdere stappen en verzend de aanvraag als de lading niet leeg is.
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")
Verifiëren
- Druk de statuscode van het antwoord af om te controleren of het verzoek is geslaagd of mislukt, zoals hier wordt weergegeven.
if response.status_code == 201 or response.status_code == 202:
print("Host Objects successfully pushed")
else:
print("Host Object creation failed")
- Meld u aan bij FMC Navigeer naar Object > Objectbeheer > Netwerk en controleer de hostobjecten, zoals in de afbeelding wordt weergegeven:

Problemen oplossen
- Wanneer u de REST-client gebruikt, ziet u mogelijk fouten met betrekking tot het SSL-certificaatprobleem als gevolg van een zelf ondertekend certificaat. U kunt deze validatie uitschakelen, afhankelijk van de client die u gebruikt.
- De FMC REST API-verificatietokens zijn 30 minuten geldig en kunnen tot drie keer worden vernieuwd.
- De fout met betrekking tot het verzoek kan worden geëxtraheerd uit het antwoordorgaan. Dit kan worden verzameld als een logbestand om te helpen bij het oplossen van problemen.
logfile = "requestlog.txt"
log = open(logfile,"w+")
log.write(response.text)
log.close
- Alle REST-verzoeken worden aangemeld bij deze twee logbestanden op FMC. Zoek naar uw URL (bijv. .../object/hosts) met de juiste bewerking (Als u op zoek bent naar een fout voor de GET-bewerking, moet u ervoor zorgen dat uw log zoiets start als GET ...object/hosts)
tail -f /var/opt/CSCOpx/MDC/tomcat/logs/stdout.logs
tail -f /var/opt/CSCOpx/MDC/log/operation/usmsharedsvcs.log