はじめに
このドキュメントでは、アプリケーションプログラミングインターフェイス(API)管理者がネットワーク、ポート、およびURLオブジェクトをFirepower Management Center(FMC)に一括でプッシュする方法について説明します。
前提条件
要件
次の項目に関する知識があることが推奨されます。
使用するコンポーネント
- REST API(バージョン6.1以降)をサポートし、REST APIが有効なFirePOWER Management Center
- Pythonを使用したREST APIインタラクション
制限事項
- FMCでは、64文字を超えるオブジェクト名は受け付けません。
- オブジェクト名の先頭にスペースを、末尾にセミコロンを含めることはできません。
- 1回の一括プッシュで、ペイロードに1,000を超えるエントリを含めることはできません。
- 1回の一括プッシュでペイロードサイズを2 MB以下にすることはできません。
背景説明
REST APIは、ネットワーク管理者がネットワークの設定と管理に使用できる軽量でプログラム可能なアプローチであるため、ますます普及しています。FMCは、任意のRESTクライアントと組み込みのAPIエクスプローラを使用した設定と管理をサポートしています。
このドキュメントの例では、CSVファイルを入力として受け取り、REST APIインターフェイスを介してオブジェクトをFMCにプッシュします。このドキュメントでは、Host Network Bulk Pushのみを取り上げ、他のオブジェクトについても同様のロジックを拡張できます。URLオブジェクトとPortオブジェクトのサンプルコードがドキュメントに添付されています。
次の図に、使用されるネットワークホストでの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にログインします。図に示すように、Object > Object Management > Networkの順に選択し、Host Objectsを確認します。

トラブルシュート
- RESTクライアントを使用すると、自己署名証明書が原因のSSL証明書の問題に関連するエラーが表示される場合があります。使用しているクライアントに応じて、この検証を無効にすることができます。
- FMC REST API認証トークンの有効期間は30分で、最大3回の更新が可能です。
- リクエストに関するエラーは、レスポンス本文から抽出することができる。これは、トラブルシューティングに役立つログファイルとして収集できます。
logfile = "requestlog.txt"
log = open(logfile,"w+")
log.write(response.text)
log.close
- すべてのREST要求は、FMC上のこれらの2つのログファイルに記録されます。正しい操作でURL (例…/object/hosts)を検索します(GET操作のエラーを探している場合は、ログがGET ...object/hostsのような名前で始まっていることを確認します)
tail -f /var/opt/CSCOpx/MDC/tomcat/logs/stdout.logs
tail -f /var/opt/CSCOpx/MDC/log/operation/usmsharedsvcs.log