はじめに
このドキュメントでは、API管理者がAPIエクスプローラを使用してネットワーク、ポート、およびURLオブジェクトをFMCに一括でプッシュする方法について説明します。
前提条件
要件
次の項目に関する知識があることが推奨されます。
使用するコンポーネント
- REST API(バージョン7.4以降)をサポートし、REST APIが有効なFirePOWER Management Center
- FMCに統合されたAPI Explorer
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
制限事項
- FMCでは、64文字を超えるオブジェクト名は受け付けません。
- オブジェクト名の先頭にスペースを、末尾にセミコロンを使用することはできません。
- 1回の一括プッシュで、ペイロードに1,000を超えるエントリを含めることはできません。
- 1回の一括プッシュでペイロードサイズを2 MB以下にすることはできません。
背景説明
REST APIは、ネットワーク管理者がネットワークの設定と管理に使用できる軽量でプログラム可能なアプローチであるため、ますます普及しています。FMCは、任意のRESTクライアントと組み込みのAPIエクスプローラを使用した設定と管理をサポートしています。
この記事では、Firepower Management Center(FMC)APIエクスプローラを使用してオブジェクトを作成するときに発生する問題を解決するためのトラブルシューティング手順について説明します。ネットワークオブジェクト、ホストオブジェクト、またはFTD設定のいずれを使用する場合でも、これらの手順は一般的な問題の特定と効果的なソリューションの実装に役立ちます。
すべてのネットワークオブジェクトタイプで共通のJSON属性は次のとおりです。
- Value:この属性は、CIDRを使用するネットワーク値のような情報を提供します。たとえば、ホストオブジェクトはIPとしてx.x.x.xを持つことができ、ネットワークはCIDRを使用するサブネットとしてx.x.x/<prefix>を持つことができます。
- Type:この属性は、オブジェクトの設定に使用されるオブジェクトタイプに関する情報(ホスト、ネットワーク、サービス、範囲、およびFQDN)を提供します。
- Name:この属性は、オブジェクト名に関する情報を提供します
- Description:この属性は、オブジェクトに関する有用な情報やコメントを提供するために使用できます
- オーバーライド可能:オブジェクトのオーバーライドにより、オブジェクトの代替値を定義できます。この値は、指定したデバイスにシステムで使用されます。これは、オブジェクトの作成に使用できるオプションの属性です。
コンフィギュレーション
FMCでAPIを有効にする
Cisco FMCでREST APIを有効にします。「REST APIを有効にする方法」と「ベストプラクティス」の詳細については、「Cisco FMCでREST APIを有効にする」を参照してください。
System > Configuration > REST API Preferences > Enable REST APIの順に選択します。
APIエクスプローラはManagement Centerにあり、Management Centerからアクセスできます。
https://<management_center_IP_or_name>:<https_port>/api/api-explorer
注:標準のHTTPSポートTCP 443を使用している場合は、URLから:<https_port"を安全に削除できます。
発生する一般的なエラー
ここでは、APIエクスプローラとPOSTメソッドを使用してオブジェクトを作成するときに発生する最も一般的なエラーについて説明します。各ネットワークオブジェクトの正しい形式については、後で説明します。
1. アクセストークンが無効です:
無効なアクセストークンのJSON応答
注:このエラーは、セッションの有効期限が切れている場合に発生します。FMC APIエクスプローラをリロードし、再認証します。
2. 無効な形式が使用されています:
{
"name": "API_1",
"type": "Host",
"value": "10.5.3.20"
"description": "Test Description"
}
オブジェクトを作成するためのサンプルJSON要求
コンマがないため、JSON応答に失敗しました
注:このエラーが発生するのは、ほとんどの場合、JSON形式でカンマが欠落している場合です。例(「value」:「10.5.3.20」)には、このエラーの原因となるカンマがありません。JSON形式の最後のAttributeのみにカンマを含めることはできません。カンマを含まないと、エラーが発生する可能性があります。
3. オブジェクトの作成で無効な入力が使用されました:
{
"name": "net2",
"value": "1.1.0.0/24",
"overridable": false,
"description": "Network obj 2",
"type": "Network"
}
無効な型のJSON応答に失敗しました
注:この例では、オブジェクトの作成がHostsカテゴリでNetworkオブジェクトのJSONペイロードを使用して試行され、エラー「Input type mismatch」が発生しました。 各ネットワークオブジェクトに指定された正しい形式を使用してください(ホスト、ネットワーク、FQDN、サービス、範囲)。
4. GETメソッド応答ペイロードを使用したオブジェクトの作成
{
"links": {
"self": "https://10.197.207.3/api/fmc_config/v1/domain/e276abec-e0f2-11e3-8169-6d9ed49b625f/object/hosts/00000000-0000-0ed3-0000-034359741703",
"parent": "https://10.197.207.3/api/fmc_config/v1/domain/e276abec-e0f2-11e3-8169-6d9ed49b625f/object/networkaddresses"
},
"type": "Host",
"name": "API_2",
"id": "00000000-0000-0ed3-0000-034359741703"
}
ホストオブジェクトを取得するためのGET要求
value属性がないため、JSON応答に失敗しました
オブジェクトが正しくない形式で作成されたJSON応答が失敗しました
注:この例では、GETメソッドを使用してフェッチされたJSONペイロードにValue属性が含まれておらず、expandedパラメータがデフォルトに設定されています。オブジェクト作成用のJSONペイロードには、ほとんどのネットワークオブジェクト(ホスト、ネットワーク、範囲、サービス、およびFQDN)のタイプ、名前、および値である必須の属性があります。 GETメソッドのJSONペイロードを使用してオブジェクトを作成する場合は、items属性内にあるオブジェクト関連情報のみを使用し、id属性を削除してUUID競合がないようにします。
ホストオブジェクトの作成
単一のホストオブジェクト
Object > /api/fmc_config/v1/domain/{domainUUID}/object/hosts > POSTの順に移動し、Try it Outをクリックします。
単一のホストオブジェクトのプッシュに使用されるJSON形式:
{
"name": "Obj_API_100.1.1.1",
"type": "Host",
"value": "100.1.1.1",
"description": "Host Object Pushed via API"
}
POST操作でホスト・オブジェクトを作成
注:単一のホストオブジェクトに対してPOST操作を使用するときは、デフォルトのバルクパラメータを使用してください。
Bulk Hostオブジェクト
Object > /api/fmc_config/v1/domain/{domainUUID}/object/hosts > POSTの順に移動し、Try it Outをクリックします。
バルクホストオブジェクトのプッシュに使用されるJSON形式:
[
{
"name": "Obj_API_172.16.0.1",
"type": "Host",
"value": "172.16.0.1",
"description": "Bulk API Operation"
},
{
"name": "Obj_API_172.16.0.2",
"type": "Host",
"value": "172.16.0.2",
"description": "Bulk API Operation"
}
]
バルクオブジェクトを作成するためのサンプルJSON要求
バルクオブジェクト作成後のサンプルJSON応答
注:バルクホストオブジェクトを作成する際には、Bulk Parameter as Trueを選択します。単一の一括プッシュでは、POST方式を使用して最大1000個のエントリを作成できます。
ネットワークオブジェクトの作成
単一のネットワークオブジェクト
Object > /api/fmc_config/v1/domain/{domainUUID}/object/networks > POSTに移動し、Try it Outをクリックします。
単一のネットワークオブジェクトのプッシュに使用されるJSON形式:
{
"name": "Obj_API_network",
"value": "7.0.0.0/24",
"overridable": false,
"description": "Single Network object created",
"type": "Network"
}
単一のネットワークオブジェクトを作成するためのサンプルJSON要求
バルクネットワークオブジェクト
Object > /api/fmc_config/v1/domain/{domainUUID}/object/networks > POSTに移動し、Try it Outをクリックします。
バルクネットワークオブジェクトのプッシュに使用されるJSON形式:
[
{
"name": "Obj_API_net1",
"value": "1.0.0.0/24",
"overridable": false,
"description": "Bulk Operation",
"type": "Network"
},
{
"name": "Obj_API_net2",
"value": "1.1.0.0/24",
"overridable": false,
"description": "Bulk Operation",
"type": "Network"
}
]
バルクネットワークオブジェクトを作成するためのサンプルJSON要求
注:バルクネットワークオブジェクトを作成する際には、Bulk ParameterをTrueとして選択します。単一の一括プッシュでは、POST方式を使用して最大1000個のエントリを作成できます。
ネットワーク範囲オブジェクトの作成
単一ネットワーク範囲オブジェクト
Object > /api/fmc_config/v1/domain/{domainUUID}/object/ranges > POSTの順に移動し、Try it Outをクリックします。
単一範囲オブジェクトのプッシュに使用されるJSON形式:
{
"name": "Obj_API_TestRange",
"value": "10.2.30.40-10.2.30.50",
"type": "Range",
"description": "Create Single Range Object"
}
Bulk Network Rangeオブジェクト
Object > /api/fmc_config/v1/domain/{domainUUID}/object/ranges > POSTの順に移動し、Try it Outをクリックします。
バルク範囲オブジェクトのプッシュに使用されるJSON形式:
[
{
"name": "Obj_API_TestRange1",
"value": "10.4.30.40-10.4.30.50",
"type": "Range",
"description": "Bulk Operation"
},
{
"name": "Obj_API_TestRange2",
"value": "10.5.30.40-10.5.30.50",
"type": "Range",
"description": "Bulk Operation"
}
]
注:バルク範囲オブジェクトを作成する場合は、Bulk ParameterをTrueとして選択します。単一の一括プッシュでは、POST方式を使用して最大1000個のエントリを作成できます。
FQDNオブジェクトの作成
単一FQDNオブジェクト
Object > /api/fmc_config/v1/domain/{domainUUID}/object/fqdns > POSTに移動し、Try it Outをクリックします。
単一のネットワークオブジェクトのプッシュに使用されるJSON形式:
{
"name": "TestFQDN",
"type": "FQDN",
"value": "cloud.cisco.com",
"dnsResolution": "IPV4_ONLY",
"description": "Create Single FQDN Object"
}
一括FQDNオブジェクト
Object > /api/fmc_config/v1/domain/{domainUUID}/object/fqdns > POSTに移動し、Try it Outをクリックします。
バルクネットワークオブジェクトのプッシュに使用されるJSON形式:
[
{
"name": "Obj_API_FQDN_1",
"type": "FQDN",
"value": "downloads.cisco.com",
"dnsResolution": "IPV4_ONLY",
"description": "Bulk Operation"
},
{
"name": "Obj_API_FQDN_2",
"type": "FQDN",
"value": "support.cisco.com",
"dnsResolution": "IPV4_ONLY",
"description": "Bulk Operation"
}
]
注:一括FQDNオブジェクトを作成する際には、Bulk ParameterをTrueとして選択します。単一の一括プッシュでは、POST方式を使用して最大1000個のエントリを作成できます。
サービスオブジェクトの作成
単一のサービスオブジェクト
Object > /api/fmc_config/v1/domain/{domainUUID}/object/protocolportobjects > POSTの順に移動し、Try it Outをクリックします。
単一のサービスオブジェクトのプッシュに使用されるJSON形式:
{
"name": "Obj_API_Telnet_Port",
"protocol": "TCP",
"port": 23,
"type": "ProtocolPortObject"
}
範囲を持つ単一のサービスオブジェクトをプッシュするために使用されるJSON形式:
{
"name": "Obj_API_obj1",
"protocol": "UDP",
"port": "1025-65535",
"type": "ProtocolPortObject"
}
注:JSON形式でポート範囲を定義する場合は、二重引用符を使用します。例: "port": "1111-1115" それ以外の場合は、エラーが発生することがあります。"description": "Unprocessable Entity - Unexpected character ('-' (code 45)): was expecting comma to separate Object entries at line: 4, column: 17"
Bulk Serviceオブジェクト
Object > /api/fmc_config/v1/domain/{domainUUID}/object/protocolportobjects > POSTの順に移動し、Try it Outをクリックします。
バルクサービスオブジェクトのプッシュに使用されるJSON形式:
[
{
"name": "Obj_API_UDP_Port",
"protocol": "UDP",
"port": 123,
"type": "ProtocolPortObject"
},
{
"name": "Obj_API_TCP_Range",
"protocol": "TCP",
"port": "1025-65535",
"type": "ProtocolPortObject"
}
]
注:バルクサービスオブジェクトを作成する場合は、Bulk ParameterをTrueとして選択します。単一の一括プッシュでは、POST方式を使用して最大1000個のエントリを作成できます。
トラブルシュート
- HTTPステータスコードについては、このドキュメントを参照してください(REST APIの基本)
- ユーザクレデンシャルは、REST APIとGUIの両方のインターフェイスに同時に使用することはできません。両方に使用すると、ユーザは警告なしでログアウトされます。
- すべての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