Sommario

Introduzione

Prerequisiti

Requisiti

Componenti usati

Premesse

Configurazione

Esempio di rete

Configurazione su ISE

Esempi di Python

Amministratore Del Dispositivo - Elenco Di Set Di Criteri

Amministrazione dispositivi - Ottieni regole di autenticazione

Amministrazione dispositivi - Ottieni regole di autorizzazione

Accesso Alla Rete - Elenco Di Set Di Criteri

Accesso di rete - Ottieni regole di autenticazione

Accesso di rete - Ottieni regole di autorizzazione

Risoluzione dei problemi

Introduzione

Questo documento descrive la procedura per l'utilizzo di OpenAPI per la gestione Cisco Identity Services Engine (ISE) Policy.

Prerequisiti

Requisiti

Cisco raccomanda la conoscenza dei seguenti argomenti:

- Cisco Identity Services Engine (ISE)

- API REST

- Python

Componenti usati

- ISE 3.3

- Python 3.10.0

Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.

Premesse

Da Cisco ISE 3.1 in poi, le nuove API sono disponibili in formato OpenAPI. La policy di gestione ottimizza la sicurezza e la gestione della rete migliorando l'interoperabilità, migliorando l'efficienza dell'automazione, rafforzando la sicurezza, promuovendo l'innovazione e riducendo i costi. Questa politica consente ad ISE di integrarsi facilmente con altri sistemi, ottenere una configurazione e una gestione automatizzate, fornire un controllo granulare dell'accesso, incoraggiare l'innovazione di terze parti e semplificare i processi di gestione, riducendo in tal modo i costi di manutenzione e aumentando il ritorno complessivo sull'investimento.

Configurazione

Esempio di rete

Topologia

Configurazione su ISE

Passaggio 1. Aggiungere un account amministratore OpenAPI.

Per aggiungere un amministratore API, selezionare Amministrazione > Sistema > Accesso amministratore > Amministratori > Utenti amministratori > Aggiungi.

Amministratore API

Passaggio 2. Abilitare OpenAPI su ISE.

Open API è disabilitato per impostazione predefinita su ISE. Per attivarlo, passare a Amministrazione > Sistema > Impostazioni > Impostazioni API > Impostazioni servizio API. Attivate o disattivate le opzioni di OpenAPI. Fare clic su  Salva.

Abilita OpenAPI

Passaggio 3. Scopri ISE OpenAPI.

Passa a Amministrazione > Sistema > Impostazioni > Impostazioni API > Panoramica. Fare clic su OpenAPI per visitare il collegamento.

Visita OpenAPI

Esempi di Python

Amministratore Del Dispositivo - Elenco Di Set Di Criteri

Questa API recupera le informazioni sui set di criteri di amministrazione del dispositivo.

Passaggio 1. Informazioni necessarie per una chiamata API.

Metodo

OTTIENI

URL

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

Credenziali

Utilizzare le credenziali dell'account OpenAPI.

Intestazioni

Accetta :  application/json

Content-Type :  application/json

Passaggio 2. Individuare l'URL utilizzato per recuperare le informazioni sui set di criteri di amministrazione del dispositivo.

URI API

Passaggio 3. Questo è un esempio di codice Python. Copiare e incollare il contenuto. Sostituire l'ISE IP, il nome utente e la password. Salvare come file Python da eseguire.

Verificare che la connettività tra ISE e il dispositivo su cui è in esecuzione il codice Python sia buona.

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())

Questo è l'esempio degli output previsti.

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'}}]}

DDevice Admin - Ottieni regole di autenticazione

Questa API recupera le regole di autenticazione di un set di criteri specifico.

Passaggio 1. Informazioni necessarie per una chiamata API.

Metodo

OTTIENI

URL

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

Credenziali

Utilizzare le credenziali dell'account OpenAPI.

Intestazioni

Accetta :  application/json

Content-Type :  application/json

Passaggio 2. Individuare l'URL utilizzato per recuperare le informazioni sulle regole di autenticazione.

URI API

Passaggio 3. Questo è un esempio di codice Python. Copiare e incollare il contenuto. Sostituire l'ISE IP, il nome utente e la password. Salvare come file Python da eseguire.

Verificare che la connettività tra ISE e il dispositivo su cui è in esecuzione il codice Python sia buona.

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())

Nota: l'ID deriva dagli output API al passaggio 3 di Device Admin - List Of Policy Sets. Ad esempio, 41ed8579-429b-42a8-879e-61861cb82bbf è impostato come criterio predefinito di TACACS.

Questo è l'esempio degli output previsti.

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'}}]}

Amministrazione dispositivi - Ottieni regole di autorizzazione

Questa API recupera le regole di autorizzazione di un set di criteri specifico.

Passaggio 1. Informazioni necessarie per una chiamata API.

Metodo

OTTIENI

URL

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

Credenziali

Utilizzare le credenziali dell'account OpenAPI.

Intestazioni

Accetta :  application/json

Content-Type :  application/json

Passaggio 2. Individuare l'URL utilizzato per recuperare le informazioni sulla regola di autorizzazione.

URI API

Passaggio 3. Questo è un esempio di codice Python. Copiare e incollare il contenuto. Sostituire l'ISE IP, il nome utente e la password. Salvare come file Python da eseguire.

Verificare che la connettività tra ISE e il dispositivo su cui è in esecuzione il codice Python sia buona.

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())

Nota: l'ID deriva dagli output API al passaggio 3 di Device Admin - List Of Policy Sets. Ad esempio, 41ed8579-429b-42a8-879e-61861cb82bbf è impostato come criterio predefinito di TACACS.

Questo è l'esempio degli output previsti.

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'}}]}

Accesso Alla Rete - Elenco Di Set Di Criteri

Questa API recupera i set di criteri di accesso alla rete delle distribuzioni ISE.

Passaggio 1. Informazioni necessarie per una chiamata API.

Metodo

OTTIENI

URL

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

Credenziali

Utilizzare le credenziali dell'account OpenAPI.

Intestazioni

Accetta :  application/json

Content-Type :  application/json

Passaggio 2. Individuare l'URL utilizzato per recuperare le informazioni specifiche del nodo ISE.

URI API

Passaggio 3. Questo è un esempio di codice Python. Copiare e incollare il contenuto. Sostituire l'ISE IP, il nome utente e la password. Salvare come file Python da eseguire.

Verificare che la connettività tra ISE e il dispositivo su cui è in esecuzione il codice Python sia buona.

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())

Questo è l'esempio degli output previsti.

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'}}]}

Accesso di rete - Ottieni regole di autenticazione

Questa API recupera le regole di autenticazione di un set di criteri specifico.

Passaggio 1. Informazioni necessarie per una chiamata API.

Metodo

OTTIENI

URL

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

Credenziali

Utilizzare le credenziali dell'account OpenAPI.

Intestazioni

Accetta :  application/json

Content-Type :  application/json

Passaggio 2. Individuare l'URL utilizzato per recuperare le informazioni sulla regola di autenticazione.

URI API

Passaggio 3. Questo è un esempio di codice Python. Copiare e incollare il contenuto. Sostituire l'ISE IP, il nome utente e la password. Salvare come file Python da eseguire.

Verificare che la connettività tra ISE e il dispositivo su cui è in esecuzione il codice Python sia buona.

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())

Nota: l'ID deriva dagli output API al passaggio 3 di Accesso alla rete - Elenco di set di criteri. Ad esempio, ba71a417-4a48-4411-8bc3-d5df9b115769 è BGL_CFME02-FMC.

Questo è l'esempio degli output previsti.

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'}}]}

Accesso di rete - Ottieni regole di autorizzazione

Questa API recupera le regole di autorizzazione di un set di criteri specifico.

Passaggio 1. Informazioni necessarie per una chiamata API.

Metodo

OTTIENI

URL

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

Credenziali

Utilizzare le credenziali dell'account OpenAPI.

Intestazioni

Accetta :  application/json

Content-Type :  application/json

Passaggio 2. Individuare l'URL utilizzato per recuperare le informazioni sulla regola di autorizzazione.

URI API

Passaggio 3. Questo è un esempio di codice Python. Copiare e incollare il contenuto. Sostituire l'ISE IP, il nome utente e la password. Salvare come file Python da eseguire.

Verificare che la connettività tra ISE e il dispositivo su cui è in esecuzione il codice Python sia buona.

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())

Nota: l'ID deriva dagli output API al passaggio 3 di Accesso alla rete - Elenco di set di criteri. Ad esempio, ba71a417-4a48-4411-8bc3-d5df9b115769 è BGL_CFME02-FMC.

Questo è l'esempio degli output previsti.

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'}}]}

Risoluzione dei problemi

Per risolvere i problemi relativi alle OpenAPI, impostare il livello di log per apiservicecomponent su DEBUGnella finestra di configurazione del log di debug.

Per abilitare il debug, selezionare Operations > Troubleshoot > Debug Wizard > Debug Log Configuration > ISE Node > apiservice.

Debug del servizio API

Per scaricare il file di log di debug, selezionare Operations > Troubleshoot > Download Logs > ISE PAN Node > Debug Logs (Operazioni > Risoluzione dei problemi > Log di download > Nodo PAN ISE > Log di debug).

Scarica log di debug