Introdução
Este documento descreve como um administrador de API (Application Programming Interface, Interface de programação de aplicativos) pode enviar objetos de rede, porta e URL em massa para o Firepower Management Center (FMC).
Pré-requisitos
Requisitos
A Cisco recomenda que você tenha conhecimento destes tópicos:
Componentes Utilizados
- Firepower Management Center que oferece suporte a APIs REST (versão 6.1 ou superior) com API REST habilitada
- Interações de API REST usando Python.
Limitações
- O FMC não aceita que o nome do objeto tenha mais de 64 caracteres.
- O nome do objeto não deve ter espaço no início do nome do objeto e ponto-e-vírgula no final.
- A carga não pode conter mais de 1.000 entradas em um único Envio em Massa.
- O tamanho da carga não pode ser maior que 2MB em um único Envio em Massa.
Informações de Apoio
As APIs REST são cada vez mais populares devido à abordagem programável leve que os gerentes de rede podem usar para configurar e gerenciar suas redes. O FMC oferece suporte à configuração e ao gerenciamento usando qualquer cliente REST e também o explorador de API integrado.
O exemplo neste documento pega um arquivo CSV como uma entrada e envia os objetos para o FMC por meio da interface da API REST. O documento abrange somente o envio em massa da rede do host e uma lógica similar pode ser estendida para os outros objetos. Um código de exemplo é anexado ao documento para objetos de URL e Porta.
Aqui está a referência de API para o POST nos hosts de rede que são usados, como mostrado na imagem:

Configurar
Etapa 1. Ative a API REST e gere o token de autenticação. Para obter etapas e exemplos de configuração detalhados, consulte Gerar token de autenticação no 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"]
Etapa 2.Converta o Arquivo CSV fornecido em um Dicionário para ser usado como Carga JSON para a solicitação. O arquivo CSV de exemplo para cada tipo de objeto é anexado ao documento.

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)
O host_payload neste estágio tem a mesma aparência mostrada na imagem:
[{
"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"
}
]
Etapa 3.Crie a solicitação a partir da entrada recebida das etapas anteriores e envie a solicitação se o payload não estiver vazio.
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")
Verificar
- Imprima o código de status da resposta para verificar se a solicitação foi bem-sucedida ou falhou, como mostrado aqui.
if response.status_code == 201 or response.status_code == 202:
print("Host Objects successfully pushed")
else:
print("Host Object creation failed")
- Faça login no FMC Navegue até Object > Object Management > Network e verifique os Host Objects, como mostrado na imagem:

Troubleshooting
- Ao usar o cliente REST, você pode ver erros relacionados ao problema de certificado SSL devido a um certificado autoassinado. Você pode desativar essa validação, dependendo do cliente que estiver usando.
- Os tokens de autenticação da API REST do FMC são válidos por 30 minutos e podem ser atualizados até três vezes.
- O erro relacionado à solicitação pode ser extraído do corpo da resposta. Isso pode ser coletado como um arquivo de log para ajudar na solução de problemas.
logfile = "requestlog.txt"
log = open(logfile,"w+")
log.write(response.text)
log.close
- Todas as solicitações REST são registradas nesses dois arquivos de log no FMC. Procure sua URL (por exemplo, ../object/hosts) com a operação correta (Se você estiver procurando por erro para a operação GET, certifique-se de que seu log inicie 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