Contenido

Introducción

Prerequisites

Requirements

Componentes Utilizados

Antecedentes

Configurar

Diagrama de la red

Configuración en ISE

Ejemplos de Python

Device Admin - Lista De Conjuntos De Políticas

Device Admin - Obtener reglas de autenticación

Device Admin - Obtener reglas de autorización

Acceso A La Red: Lista De Conjuntos De Políticas

Acceso a la red - Obtener reglas de autenticación

Acceso a la red - Obtener reglas de autorización

Troubleshoot

Introducción

Este documento describe el procedimiento para utilizar OpenAPI para administrar Cisco Identity Services Engine (ISE) Política.

Prerequisites

Requirements

Cisco recomienda que tenga conocimiento sobre estos temas:

- Cisco Identity Services Engine (ISE)

- API REST

- Python

Componentes Utilizados

- ISE 3.3

- Python 3.10.0

La información que contiene este documento se creó a partir de los dispositivos en un ambiente de laboratorio específico. Todos los dispositivos que se utilizan en este documento se pusieron en funcionamiento con una configuración verificada (predeterminada). Si tiene una red en vivo, asegúrese de entender el posible impacto de cualquier comando.

Antecedentes

A partir de Cisco ISE 3.1, las API más recientes están disponibles en el formato OpenAPI. La política de gestión optimiza la seguridad y la gestión de la red al mejorar la interoperabilidad, mejorar la eficacia de la automatización, reforzar la seguridad, fomentar la innovación y reducir los costes. Esta política permite que ISE se integre sin problemas con otros sistemas, logre una configuración y gestión automatizadas, proporcione un control de acceso granular, fomente la innovación por parte de terceros y simplifique los procesos de gestión, reduciendo así los costes de mantenimiento y aumentando el retorno de la inversión general.

Configurar

Diagrama de la red

Topología

Configuración en ISE

Paso 1. Agregue una cuenta de administrador OpenAPI.

Para agregar un administrador de API, vaya aAdministración > Sistema > Acceso de administrador > Administradores > Usuarios de administración > Agregar.

Administrador de API

Paso 2. Habilite OpenAPI en ISE.

API abierta está desactivada de forma predeterminada en ISE. Para activarlo, vaya a Administration > System > Settings > API Settings > API Service Settings. Active o desactive las opciones de OpenAPI. Haga clic en Guardar.

Habilitar OpenAPI

Paso 3. Explore ISE OpenAPI.

Vaya a  Administration > System > Settings > API Settings > Overview. Haga clic en OpenAPI para visitar el enlace.

Visite OpenAPI

Ejemplos de Python

Device Admin - Lista De Conjuntos De Políticas

Esta API recupera información de conjuntos de políticas de administración de dispositivos.

Paso 1. Información necesaria para una llamada de API.

Método

GET

URL

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

Credenciales

Utilice las credenciales de la cuenta OpenAPI.

Encabezados

Aceptar :  Aplicación/JSON

Tipo de contenido :  Aplicación/JSON

Paso 2. Localice la URL que se utiliza para recuperar la información de los conjuntos de políticas de administración de dispositivos.

URI DE API

Paso 3. Este es un ejemplo de código Python. Copiar y pegar el contenido. Reemplace la IP de ISE, el nombre de usuario y la contraseña. Guardar como archivo python para ejecutar.

Garantizar una buena conectividad entre ISE y el dispositivo que ejecuta el ejemplo de código de Python.

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

Este es el ejemplo de resultados esperados.

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 - Obtener reglas de autenticación

Esta API recupera las reglas de autenticación de un conjunto de políticas determinado.

Paso 1. Información necesaria para una llamada de API.

Método

GET

URL

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

Credenciales

Utilice las credenciales de la cuenta OpenAPI.

Encabezados

Aceptar :  Aplicación/JSON

Tipo de contenido :  Aplicación/JSON

Paso 2. Busque la dirección URL que se utiliza para recuperar la información de la regla de autenticación.

URI DE API

Paso 3. Este es un ejemplo de código Python. Copiar y pegar el contenido. Reemplace la IP de ISE, el nombre de usuario y la contraseña. Guardar como archivo python para ejecutar.

Garantizar una buena conectividad entre ISE y el dispositivo que ejecuta el ejemplo de código de Python.

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: El ID proviene de las salidas de la API en el paso 3 de Device Admin - List Of Policy Sets. Por ejemplo, 41ed8579-429b-42a8-879e-61861cb82bbf es un conjunto de políticas TACACS predeterminado.

Este es el ejemplo de resultados esperados.

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

Device Admin - Obtener reglas de autorización

Esta API recupera las reglas de autorización de un conjunto de políticas determinado.

Paso 1. Información necesaria para una llamada de API.

Método

GET

URL

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

Credenciales

Utilice las credenciales de la cuenta OpenAPI.

Encabezados

Aceptar :  Aplicación/JSON

Tipo de contenido :  Aplicación/JSON

Paso 2. Busque la dirección URL que se utiliza para recuperar la información de la regla de autorización.

URI DE API

Paso 3. Este es un ejemplo de código Python. Copiar y pegar el contenido. Reemplace la IP de ISE, el nombre de usuario y la contraseña. Guardar como archivo python para ejecutar.

Garantizar una buena conectividad entre ISE y el dispositivo que ejecuta el ejemplo de código de Python.

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: El ID proviene de las salidas de la API en el paso 3 de Device Admin - List Of Policy Sets. Por ejemplo, 41ed8579-429b-42a8-879e-61861cb82bbf es un conjunto de políticas TACACS predeterminado.

Este es el ejemplo de resultados esperados.

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

Acceso A La Red: Lista De Conjuntos De Políticas

Esta API recupera conjuntos de políticas de acceso a la red de implementaciones de ISE.

Paso 1. Información necesaria para una llamada de API.

Método

GET

URL

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

Credenciales

Utilice las credenciales de la cuenta OpenAPI.

Encabezados

Aceptar :  Aplicación/JSON

Tipo de contenido :  Aplicación/JSON

Paso 2. Localice la URL que se utiliza para recuperar la información específica del nodo de ISE.

URI DE API

Paso 3. Este es un ejemplo de código Python. Copiar y pegar el contenido. Reemplace la IP de ISE, el nombre de usuario y la contraseña. Guardar como archivo python para ejecutar.

Garantizar una buena conectividad entre ISE y el dispositivo que ejecuta el ejemplo de código de Python.

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

Este es el ejemplo de resultados esperados.

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

Acceso a la red - Obtener reglas de autenticación

Esta API recupera las reglas de autenticación de un conjunto de políticas determinado.

Paso 1. Información necesaria para una llamada de API.

Método

GET

URL

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

Credenciales

Utilice las credenciales de la cuenta OpenAPI.

Encabezados

Aceptar :  Aplicación/JSON

Tipo de contenido :  Aplicación/JSON

Paso 2. Busque la dirección URL que se utiliza para recuperar la información de la regla de autenticación.

URI DE API

Paso 3. Este es un ejemplo de código Python. Copiar y pegar el contenido. Reemplace la IP de ISE, el nombre de usuario y la contraseña. Guardar como archivo python para ejecutar.

Garantizar una buena conectividad entre ISE y el dispositivo que ejecuta el ejemplo de código de Python.

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: El ID proviene de las salidas de la API en el paso 3 de Network Access - List Of Policy Sets (Acceso a red - Lista de conjuntos de políticas). Por ejemplo, ba71a417-4a48-4411-8bc3-d5df9b115769 es BGL_CFME02-FMC.

Este es el ejemplo de resultados esperados.

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

Acceso a la red - Obtener reglas de autorización

Esta API recupera las reglas de autorización de un conjunto de políticas determinado.

Paso 1. Información necesaria para una llamada de API.

Método

GET

URL

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

Credenciales

Utilice las credenciales de la cuenta OpenAPI.

Encabezados

Aceptar :  Aplicación/JSON

Tipo de contenido :  Aplicación/JSON

Paso 2. Busque la dirección URL que se utiliza para recuperar la información de la regla de autorización.

URI DE API

Paso 3. Este es un ejemplo de código Python. Copiar y pegar el contenido. Reemplace la IP de ISE, el nombre de usuario y la contraseña. Guardar como archivo python para ejecutar.

Garantizar una buena conectividad entre ISE y el dispositivo que ejecuta el ejemplo de código de Python.

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: El ID proviene de las salidas de la API en el paso 3 de Network Access - List Of Policy Sets (Acceso a red - Lista de conjuntos de políticas). Por ejemplo, ba71a417-4a48-441-8bc3-d5df9b115769 es BGL_CFME02-FMC.

Este es el ejemplo de resultados esperados.

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

Troubleshoot

Para resolver problemas relacionados con las API abiertas, establezca elNivel de registro para el componente apiservicecomponent enDEBUGen la ventanaConfiguración del registro de depuración.

Para habilitar la depuración, vaya aOperaciones > Solución de problemas > Asistente de depuración > Configuración del registro de depuración > Nodo ISE > apiservice.

Depuración del servicio API

Para descargar el archivo de registro de depuración, navegue hasta Operaciones > Solución de problemas > Descargar registros > ISE PAN Node > Registros de depuración.

Descargar registros de depuración