Inhalt

Einleitung

Voraussetzungen

Anforderungen

Verwendete Komponenten

Hintergrundinformationen

Konfigurieren

Netzwerkdiagramm

Konfiguration auf der ISE

Python-Beispiele

Device Admin - Liste der Richtliniensätze

Geräteadministrator - Authentifizierungsregeln abrufen

Geräteadministrator - Autorisierungsregeln abrufen

Netzwerkzugriff - Liste von Richtliniensätzen

Netzwerkzugriff - Authentifizierungsregeln abrufen

Netzwerkzugriff - Autorisierungsregeln abrufen

Fehlerbehebung

Einleitung

In diesem Dokument wird das Verfahren zur Verwendung von OpenAPI zur Verwaltung Cisco Identity Services Engine (ISE) Richtlinie.

Voraussetzungen

Anforderungen

Cisco empfiehlt, dass Sie über Kenntnisse in folgenden Bereichen verfügen:

- Cisco Identity Services Engine (ISE)

- REST-API

- Python

Verwendete Komponenten

- ISE 3.3

- Python 3.10.0

Die Informationen in diesem Dokument beziehen sich auf Geräte in einer speziell eingerichteten Testumgebung. Alle Geräte, die in diesem Dokument benutzt wurden, begannen mit einer gelöschten (Nichterfüllungs) Konfiguration. Wenn Ihr Netzwerk in Betrieb ist, stellen Sie sicher, dass Sie die möglichen Auswirkungen aller Befehle kennen.

Hintergrundinformationen

Ab Cisco ISE 3.1 sind neuere APIs im OpenAPI-Format verfügbar. Die Managementrichtlinien optimieren die Netzwerksicherheit und das Netzwerkmanagement, indem sie die Interoperabilität verbessern, die Effizienz der Automatisierung verbessern, die Sicherheit stärken, Innovationen fördern und die Kosten senken. Diese Richtlinie ermöglicht der ISE die nahtlose Integration in andere Systeme, eine automatisierte Konfiguration und Verwaltung, eine präzise Zugriffskontrolle, die Förderung von Innovationen von Drittanbietern und die Vereinfachung von Managementprozessen. Auf diese Weise werden Wartungskosten gesenkt und die Investitionsrendite insgesamt gesteigert.

Konfigurieren

Netzwerkdiagramm

Topologie

Konfiguration auf der ISE

Schritt 1: Fügen Sie ein OpenAPI-Administratorkonto hinzu.

Um einen API-Administrator hinzuzufügen, navigieren Sie zu Administration > System > Admin Access > Administrators > Admin Users > Add.

API-Administrator

Schritt 2: Aktivieren Sie OpenAPI auf der ISE.

Die offene API ist auf der ISE standardmäßig deaktiviert. Navigieren Sie zu Administration > System > Settings > API Settings > API Service Settings. Schalten Sie die OpenAPI-Optionen um. Klicken Sie auf  Speichern.

OpenAPI aktivieren

Schritt 3: Erkunden der ISE OpenAPI

Navigieren Sie zu  Administration > System > Settings > API Settings > Overview. Klicken Sie auf OpenAPI, um den Link aufzurufen.

OpenAPI aufrufen

Python-Beispiele

Device Admin - Liste der Richtliniensätze

Diese API ruft Informationen zu den Admin-Richtliniensätzen des Geräts ab.

Schritt 1: Erforderliche Informationen für einen API-Aufruf.

Methode

HOLEN

URL

https://<ISE-PAN-IP>/api/v1/policy/device-admin/policy-set

Anmeldeinformationen

OpenAPI-Kontoinformationen verwenden.

Header

Akzeptieren :  application/json

Inhaltstyp :  application/json

Schritt 2: Suchen Sie nach der URL, die zum Abrufen von Informationen zu den Admin-Richtlinien für Geräte verwendet wird.

API-URI

Schritt 3: Dies ist ein Beispiel für Python-Code. Kopieren Sie den Inhalt, und fügen Sie ihn ein. Ersetzen Sie die ISE-IP, den Benutzernamen und das Kennwort. Speichern Sie die Datei als Python, um sie auszuführen.

Stellen Sie eine gute Verbindung zwischen der ISE und dem Gerät sicher, auf dem das Python-Codebeispiel ausgeführt wird.

from requests.auth import HTTPBasicAuth

import requests

requests.packages.urllib3.disable_warnings()

if __name__ == "__main__":

url = "https://10.106.33.92/api/v1/policy/device-admin/policy-set"

headers = {"Accept": "application/json", "Content-Type": "application/json"}

basicAuth = HTTPBasicAuth("ApiAdmin", "Admin123")

response = requests.get(url=url, auth=basicAuth, headers=headers, verify=False)

print("Return Code:")

print(response.status_code)

print("Expected Outputs:")

print(response.json())

Dies ist das Beispiel der erwarteten Ergebnisse.

Return Code: 200 Expected Outputs: {'version': '1.0.0', 'response': [{'default': True, 'id': '41ed8579-429b-42a8-879e-61861cb82bbf', 'name': 'Default', 'description': 'Tacacs Default policy set', 'hitCounts': 0, 'rank': 0, 'state': 'enabled', 'condition': None, 'serviceName': 'Default Device Admin', 'isProxy': False, 'link': {'rel': 'self', 'href': 'https://10.106.33.92/api/v1/policy/device-admin/policy-set/41ed8579-429b-42a8-879e-61861cb82bbf', 'type': 'application/json'}}]}

GGeräteadministrator - Authentifizierungsregeln abrufen

Diese API ruft Authentifizierungsregeln eines bestimmten Richtliniensatzes ab.

Schritt 1: Erforderliche Informationen für einen API-Aufruf.

Methode

HOLEN

URL

https://<ISE-PAN-IP>/api/v1/policy/device-admin/policy-set/<ID-Of-Policy-Set>/authentication

Anmeldeinformationen

OpenAPI-Kontoinformationen verwenden.

Header

Akzeptieren :  application/json

Inhaltstyp :  application/json

Schritt 2: Suchen Sie nach der URL, die zum Abrufen von Authentifizierungsregelinformationen verwendet wird.

API-URI

Schritt 3: Dies ist ein Beispiel für Python-Code. Kopieren Sie den Inhalt, und fügen Sie ihn ein. Ersetzen Sie die ISE-IP, den Benutzernamen und das Kennwort. Speichern Sie die Datei als Python, um sie auszuführen.

Stellen Sie eine gute Verbindung zwischen der ISE und dem Gerät sicher, auf dem das Python-Codebeispiel ausgeführt wird.

from requests.auth import HTTPBasicAuth

import requests

requests.packages.urllib3.disable_warnings()

if __name__ == "__main__":

url = "https://10.106.33.92/api/v1/policy/device-admin/policy-set/41ed8579-429b-42a8-879e-61861cb82bbf/authentication"

headers = {"Accept": "application/json", "Content-Type": "application/json"}

basicAuth = HTTPBasicAuth("ApiAdmin", "Admin123")

response = requests.get(url=url, auth=basicAuth, headers=headers, verify=False)

print("Return Code:")

print(response.status_code)

print("Expected Outputs:")

print(response.json())

Hinweis: Die ID stammt aus den API-Ausgaben in Schritt 3 von Device Admin - List Of Policy Sets. 41ed8579-429b-42a8-879e-61861cb82bbf ist beispielsweise der TACACS-Standardrichtliniensatz.

Dies ist das Beispiel der erwarteten Ergebnisse.

Return Code: 200 Expected Outputs: {'version': '1.0.0', 'response': [{'rule': {'default': True, 'id': '73461597-0133-45ce-b4cb-6511ce56f262', 'name': 'Default', 'hitCounts': 0, 'rank': 0, 'state': 'enabled', 'condition': None}, 'identitySourceName': 'All_User_ID_Stores', 'ifAuthFail': 'REJECT', 'ifUserNotFound': 'REJECT', 'ifProcessFail': 'DROP', 'link': {'rel': 'self', 'href': 'https://10.106.33.92/api/v1/policy/device-admin/policy-set/41ed8579-429b-42a8-879e-61861cb82bbf/authentication/73461597-0133-45ce-b4cb-6511ce56f262', 'type': 'application/json'}}]}

Geräteadministrator - Autorisierungsregeln abrufen

Diese API ruft Autorisierungsregeln eines bestimmten Richtliniensatzes ab.

Schritt 1: Erforderliche Informationen für einen API-Aufruf.

Methode

HOLEN

URL

https://<ISE-PAN-IP>/api/v1/policy/device-admin/policy-set/<ID-Of-Policy-Set>/authorization

Anmeldeinformationen

OpenAPI-Kontoinformationen verwenden.

Header

Akzeptieren :  application/json

Inhaltstyp :  application/json

Schritt 2: Suchen Sie nach der URL, die zum Abrufen der Autorisierungsregelinformationen verwendet wird.

API-URI

Schritt 3: Dies ist ein Beispiel für Python-Code. Kopieren Sie den Inhalt, und fügen Sie ihn ein. Ersetzen Sie die ISE-IP, den Benutzernamen und das Kennwort. Speichern Sie die Datei als Python, um sie auszuführen.

Stellen Sie eine gute Verbindung zwischen der ISE und dem Gerät sicher, auf dem das Python-Codebeispiel ausgeführt wird.

from requests.auth import HTTPBasicAuth import requests requests.packages.urllib3.disable_warnings() if __name__ == "__main__": url = "https://10.106.33.92/api/v1/policy/device-admin/policy-set/41ed8579-429b-42a8-879e-61861cb82bbf/authorization" headers = {"Accept": "application/json", "Content-Type": "application/json"} basicAuth = HTTPBasicAuth("ApiAdmin", "Admin123") response = requests.get(url=url, auth=basicAuth, headers=headers, verify=False) print("Return Code:") print(response.status_code) print("Expected Outputs:") print(response.json())

Hinweis: Die ID stammt aus den API-Ausgaben in Schritt 3 von Device Admin - List Of Policy Sets. 41ed8579-429b-42a8-879e-61861cb82bbf ist beispielsweise der TACACS-Standardrichtliniensatz.

Dies ist das Beispiel der erwarteten Ergebnisse.

Return Code:

200

Expected Outputs:

{'version': '1.0.0', 'response': [{'rule': {'default': True, 'id': '39d9f546-e58c-4f79-9856-c0a244b8a2ae', 'name': 'Default', 'hitCounts': 0, 'rank': 0, 'state': 'enabled', 'condition': None}, 'commands': ['DenyAllCommands'], 'profile': 'Deny All Shell Profile', 'link': {'rel': 'self', 'href': 'https://10.106.33.92/api/v1/policy/device-admin/policy-set/41ed8579-429b-42a8-879e-61861cb82bbf/authorization/39d9f546-e58c-4f79-9856-c0a244b8a2ae', 'type': 'application/json'}}]}

Netzwerkzugriff - Liste von Richtliniensätzen

Diese API ruft Netzwerkzugriffsrichtliniensätze von ISE-Bereitstellungen ab.

Schritt 1: Erforderliche Informationen für einen API-Aufruf.

Methode

HOLEN

URL

https://<ISE-PAN-IP>/api/v1/policy/network-access/policy-set

Anmeldeinformationen

OpenAPI-Kontoinformationen verwenden.

Header

Akzeptieren :  application/json

Inhaltstyp :  application/json

Schritt 2: Geben Sie die URL an, die zum Abrufen der spezifischen ISE-Knoteninformationen verwendet wird.

API-URI

Schritt 3: Dies ist ein Beispiel für Python-Code. Kopieren Sie den Inhalt, und fügen Sie ihn ein. Ersetzen Sie die ISE-IP, den Benutzernamen und das Kennwort. Speichern Sie die Datei als Python, um sie auszuführen.

Stellen Sie eine gute Verbindung zwischen der ISE und dem Gerät sicher, auf dem das Python-Codebeispiel ausgeführt wird.

from requests.auth import HTTPBasicAuth

import requests

requests.packages.urllib3.disable_warnings()

if __name__ == "__main__":

url = "https://10.106.33.92/api/v1/policy/network-access/policy-set"

headers = {"Accept": "application/json", "Content-Type": "application/json"}

basicAuth = HTTPBasicAuth("ApiAdmin", "Admin123")

response = requests.get(url=url, auth=basicAuth, headers=headers, verify=False)

print("Return Code:")

print(response.status_code)

print("Expected Outputs:")

print(response.json())

Dies ist das Beispiel der erwarteten Ergebnisse.

Return Code: 200 Expected Outputs: {'version': '1.0.0', 'response': [{'default': False, 'id': 'ba71a417-4a48-4411-8bc3-d5df9b115769', 'name': 'BGL_CFME02-FMC', 'description': None, 'hitCounts': 0, 'rank': 0, 'state': 'enabled', 'condition': {'link': None, 'conditionType': 'ConditionAndBlock', 'isNegate': False, 'children': [{'link': None, 'conditionType': 'ConditionAttributes', 'isNegate': False, 'dictionaryName': 'DEVICE', 'attributeName': 'Location', 'operator': 'equals', 'dictionaryValue': None, 'attributeValue': 'All Locations#BGL_CFME02'}, {'link': None, 'conditionType': 'ConditionAttributes', 'isNegate': False, 'dictionaryName': 'DEVICE', 'attributeName': 'Device Type', 'operator': 'equals', 'dictionaryValue': None, 'attributeValue': 'All Device Types#FMCv'}]}, 'serviceName': 'Default Network Access', 'isProxy': False, 'link': {'rel': 'self', 'href': 'https://10.106.33.92/api/v1/policy/network-access/policy-set/ba71a417-4a48-4411-8bc3-d5df9b115769', 'type': 'application/json'}}, {'default': False, 'id': 'f7d82b2d-1007-44f6-961b-efa721d6ebec', 'name': 'SPRT', 'description': None, 'hitCounts': 0, 'rank': 1, 'state': 'enabled', 'condition': {'link': None, 'conditionType': 'ConditionAttributes', 'isNegate': False, 'dictionaryName': 'DEVICE', 'attributeName': 'Device Type', 'operator': 'equals', 'dictionaryValue': None, 'attributeValue': 'All Device Types#SPRT'}, 'serviceName': 'Default Network Access', 'isProxy': False, 'link': {'rel': 'self', 'href': 'https://10.106.33.92/api/v1/policy/network-access/policy-set/f7d82b2d-1007-44f6-961b-efa721d6ebec', 'type': 'application/json'}}, {'default': True, 'id': '467f6a69-344d-407f-81a4-e87c5dc7e438', 'name': 'Default', 'description': 'Default policy set', 'hitCounts': 0, 'rank': 2, 'state': 'enabled', 'condition': None, 'serviceName': 'Default Network Access', 'isProxy': False, 'link': {'rel': 'self', 'href': 'https://10.106.33.92/api/v1/policy/network-access/policy-set/467f6a69-344d-407f-81a4-e87c5dc7e438', 'type': 'application/json'}}]}

Netzwerkzugriff - Authentifizierungsregeln abrufen

Diese API ruft Authentifizierungsregeln eines bestimmten Richtliniensatzes ab.

Schritt 1: Erforderliche Informationen für einen API-Aufruf.

Methode

HOLEN

URL

https://<ISE-PAN-IP>/api/v1/policy/network-access/policy-set/<ID-Of-Policy-Set>/authentication

Anmeldeinformationen

OpenAPI-Kontoinformationen verwenden.

Header

Akzeptieren :  application/json

Inhaltstyp :  application/json

Schritt 2: Suchen Sie nach der URL, die zum Abrufen der Authentifizierungsregelinformationen verwendet wird.

API-URI

Schritt 3: Dies ist ein Beispiel für Python-Code. Kopieren Sie den Inhalt, und fügen Sie ihn ein. Ersetzen Sie die ISE-IP, den Benutzernamen und das Kennwort. Speichern Sie die Datei als Python, um sie auszuführen.

Stellen Sie eine gute Verbindung zwischen der ISE und dem Gerät sicher, auf dem das Python-Codebeispiel ausgeführt wird.

from requests.auth import HTTPBasicAuth

import requests

requests.packages.urllib3.disable_warnings()

if __name__ == "__main__":

url = "https://10.106.33.92/api/v1/policy/network-access/policy-set/ba71a417-4a48-4411-8bc3-d5df9b115769/authentication"

headers = {"Accept": "application/json", "Content-Type": "application/json"}

basicAuth = HTTPBasicAuth("ApiAdmin", "Admin123")

response = requests.get(url=url, auth=basicAuth, headers=headers, verify=False)

print("Return Code:")

print(response.status_code)

print("Expected Outputs:")

print(response.json())

Hinweis: Die ID stammt aus API-Ausgaben in Schritt 3 von Network Access - List Of Policy Sets. Zum Beispiel ba71a417-4a48-4411-8bc3-d5df9b115769 ist BGL_CFME02-FMC.

Dies ist das Beispiel der erwarteten Ergebnisse.

Return Code: 200 Expected Outputs: {'version': '1.0.0', 'response': [{'rule': {'default': True, 'id': '03875777-6c98-4114-a72e-a3e1651e533a', 'name': 'Default', 'hitCounts': 0, 'rank': 0, 'state': 'enabled', 'condition': None}, 'identitySourceName': 'S.H.I.E.L.D', 'ifAuthFail': 'REJECT', 'ifUserNotFound': 'REJECT', 'ifProcessFail': 'DROP', 'link': {'rel': 'self', 'href': 'https://10.106.33.92/api/v1/policy/network-access/policy-set/ba71a417-4a48-4411-8bc3-d5df9b115769/authentication/03875777-6c98-4114-a72e-a3e1651e533a', 'type': 'application/json'}}]}

Netzwerkzugriff - Autorisierungsregeln abrufen

Diese API ruft Autorisierungsregeln eines bestimmten Richtliniensatzes ab.

Schritt 1: Erforderliche Informationen für einen API-Aufruf.

Methode

HOLEN

URL

https://<ISE-PAN-IP>/api/v1/policy/network-access/policy-set/<ID-Of-Policy-Set>/authorization

Anmeldeinformationen

OpenAPI-Kontoinformationen verwenden.

Header

Akzeptieren :  application/json

Inhaltstyp :  application/json

Schritt 2: Suchen Sie nach der URL, die zum Abrufen der Autorisierungsregelinformationen verwendet wird.

API-URI

Schritt 3: Dies ist ein Beispiel für Python-Code. Kopieren Sie den Inhalt, und fügen Sie ihn ein. Ersetzen Sie die ISE-IP, den Benutzernamen und das Kennwort. Speichern Sie die Datei als Python, um sie auszuführen.

Stellen Sie eine gute Verbindung zwischen der ISE und dem Gerät sicher, auf dem das Python-Codebeispiel ausgeführt wird.

from requests.auth import HTTPBasicAuth

import requests

requests.packages.urllib3.disable_warnings()

if __name__ == "__main__":

url = "https://10.106.33.92/api/v1/policy/network-access/policy-set/ba71a417-4a48-4411-8bc3-d5df9b115769/authorization"

headers = {"Accept": "application/json", "Content-Type": "application/json"}

basicAuth = HTTPBasicAuth("ApiAdmin", "Admin123")

response = requests.get(url=url, auth=basicAuth, headers=headers, verify=False)

print("Return Code:")

print(response.status_code)

print("Expected Outputs:")

print(response.json())

Hinweis: Die ID stammt aus den API-Ausgaben in Schritt 3 von "Network Access - List Of Policy Sets". Beispiel: ba71a417-4a48-4411-8bc3-d5df9b115769 lautet BGL_CFME02-FMC.

Dies ist das Beispiel der erwarteten Ergebnisse.

Return Code: 200 Expected Outputs: {'version': '1.0.0', 'response': [{'rule': {'default': False, 'id': 'bc67a4e5-9000-4645-9d75-7c2403ca22ac', 'name': 'FMC Admin', 'hitCounts': 0, 'rank': 0, 'state': 'enabled', 'condition': {'link': None, 'conditionType': 'ConditionAttributes', 'isNegate': False, 'dictionaryName': 'S.H.I.E.L.D', 'attributeName': 'ExternalGroups', 'operator': 'equals', 'dictionaryValue': None, 'attributeValue': 'cisco.com/Cisco/Lab/Groups/FmcAdmin'}}, 'profile': ['FMC-BGL_CFME02-Admin'], 'securityGroup': None, 'link': {'rel': 'self', 'href': 'https://10.106.33.92/api/v1/policy/network-access/policy-set/ba71a417-4a48-4411-8bc3-d5df9b115769/authorization/bc67a4e5-9000-4645-9d75-7c2403ca22ac', 'type': 'application/json'}}, {'rule': {'default': True, 'id': 'e9f3034c-b768-4479-b6c3-3bb64bb6722c', 'name': 'Default', 'hitCounts': 0, 'rank': 1, 'state': 'enabled', 'condition': None}, 'profile': ['DenyAccess'], 'securityGroup': None, 'link': {'rel': 'self', 'href': 'https://10.106.33.92/api/v1/policy/network-access/policy-set/ba71a417-4a48-4411-8bc3-d5df9b115769/authorization/e9f3034c-b768-4479-b6c3-3bb64bb6722c', 'type': 'application/json'}}]}

Fehlerbehebung

Um Probleme im Zusammenhang mit den OpenAPIs zu beheben, legen Sie dieProtokollstufe für dieAPIsKomponente im Fenster Konfiguration des Debug-Protokolls auf DEBUG fest.

Um das Debuggen zu aktivieren, navigieren Sie zu Operations > Troubleshoot > Debug Wizard > Debug Log Configuration > ISE Node > apiservice.

Debuggen von API-Diensten

Um die Debug-Protokolldatei herunterzuladen, navigieren Sie zu Operations > Troubleshoot > Download Logs > ISE PAN Node > Debug Logs.

Debug-Protokolle herunterladen