Contents

Introdução

Pré-requisitos

Requisitos

Componentes Utilizados

Informações de Apoio

Configurar

Diagrama de Rede

Configuração no ISE

Exemplos Python

Device Admin - Lista De Conjuntos De Políticas

Device Admin - Obter Regras de Autenticação

Device Admin - Obter Regras de Autorização

Acesso À Rede - Lista De Conjuntos De Políticas

Acesso à Rede - Obter Regras de Autenticação

Acesso à Rede - Obter Regras de Autorização

Troubleshooting

Introdução

Este documento descreve o procedimento para utilizar o OpenAPI para gerenciar Cisco Identity Services Engine (ISE) Política.

Pré-requisitos

Requisitos

A Cisco recomenda que você tenha conhecimento destes tópicos:

- Cisco Identity Services Engine (ISE)

- API REST

- Python

Componentes Utilizados

- ISE 3.3

- Python 3. 10. 0

As informações neste documento foram criadas a partir de dispositivos em um ambiente de laboratório específico. Todos os dispositivos utilizados neste documento foram iniciados com uma configuração (padrão) inicial. Se a rede estiver ativa, certifique-se de que você entenda o impacto potencial de qualquer comando.

Informações de Apoio

A partir do Cisco ISE 3.1, as APIs mais novas estão disponíveis no formato OpenAPI. A política de gerenciamento otimiza a segurança e o gerenciamento da rede melhorando a interoperabilidade, melhorando a eficiência da automação, fortalecendo a segurança, promovendo a inovação e reduzindo custos. Essa política permite que o ISE se integre perfeitamente a outros sistemas, obtenha configuração e gerenciamento automatizados, forneça controle de acesso granular, incentive a inovação de terceiros e simplifique os processos de gerenciamento, reduzindo assim os custos de manutenção e aumentando o retorno sobre o investimento geral.

Configurar

Diagrama de Rede

Topologia

Configuração no ISE

Etapa 1. Adicione uma conta de administrador OpenAPI.

Para adicionar um administrador de API, navegue até Administração > Sistema > Acesso de administrador > Administradores > Usuários de administrador > Adicionar.

Administrador de API

Etapa 2. Ative o OpenAPI no ISE.

A API aberta é desabilitada por padrão no ISE. Para ativá-lo, navegue até Administração > Sistema > Configurações > Configurações de API > Configurações de Serviço de API. Alterne as opções de OpenAPI. Clique em  Save.

Habilitar OpenAPI

Etapa 3. Explore o ISE OpenAPI.

Navegue até Administração > Sistema > Configurações > Configurações de API > Visão geral. Clique no link OpenAPI para visitar.

Visite o OpenAPI

Exemplos Python

Device Admin - Lista De Conjuntos De Políticas

Esta API recupera informações de conjuntos de políticas do administrador de dispositivos.

Etapa 1. Informações necessárias para uma chamada à API.

Método

GET

URL

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

Credenciais

Usar credenciais de conta OpenAPI.

Cabeçalhos

Aceitar :  aplicativo/json

Tipo de conteúdo :  aplicativo/json

Etapa 2. Localize a URL usada para recuperar informações de conjuntos de políticas do administrador do dispositivo.

URI de API

Etapa 3. Este é um exemplo de código Python. Copie e cole o conteúdo. Substitua o IP do ISE, o nome de usuário e a senha. Salve como um arquivo python para executar.

Garanta uma boa conectividade entre o ISE e o dispositivo que executa o exemplo de código 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 é o exemplo das saídas esperadas.

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

DAdmin de Dispositivo - Obter Regras de Autenticação

Esta API recupera regras de autenticação de um conjunto de políticas específico.

Etapa 1. Informações necessárias para uma chamada à API.

Método

GET

URL

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

Credenciais

Usar credenciais de conta OpenAPI.

Cabeçalhos

Aceitar :  aplicativo/json

Tipo de conteúdo :  aplicativo/json

Etapa 2. Localize a URL utilizada para recuperar informações de regra de autenticação.

URI de API

Etapa 3. Este é um exemplo de código Python. Copie e cole o conteúdo. Substitua o IP do ISE, o nome de usuário e a senha. Salve como um arquivo python para executar.

Garanta uma boa conectividade entre o ISE e o dispositivo que executa o exemplo de código 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())

Observação: a ID é de saídas de API na etapa 3 de Device Admin - List Of Policy Sets. Por exemplo, 41ed8579-429b-42a8-879e-61861cb82bbf é o conjunto de políticas padrão TACACS.

Este é o exemplo das saídas esperadas.

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 - Obter Regras de Autorização

Esta API recupera regras de autorização de um conjunto de políticas específico.

Etapa 1. Informações necessárias para uma chamada à API.

Método

GET

URL

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

Credenciais

Usar credenciais de conta OpenAPI.

Cabeçalhos

Aceitar :  aplicativo/json

Tipo de conteúdo :  aplicativo/json

Etapa 2. Localize a URL utilizada para recuperar as informações da regra de autorização.

URI de API

Etapa 3. Este é um exemplo de código Python. Copie e cole o conteúdo. Substitua o IP do ISE, o nome de usuário e a senha. Salve como um arquivo python para executar.

Garanta uma boa conectividade entre o ISE e o dispositivo que executa o exemplo de código 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())

Observação: a ID é de saídas de API na etapa 3 de Device Admin - List Of Policy Sets. Por exemplo, 41ed8579-429b-42a8-879e-61861cb82bbf é o conjunto de políticas padrão TACACS.

Este é o exemplo das saídas esperadas.

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

Acesso À Rede - Lista De Conjuntos De Políticas

Essa API recupera conjuntos de políticas de acesso à rede de implantações do ISE.

Etapa 1. Informações necessárias para uma chamada à API.

Método

GET

URL

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

Credenciais

Usar credenciais de conta OpenAPI.

Cabeçalhos

Aceitar :  aplicativo/json

Tipo de conteúdo :  aplicativo/json

Etapa 2. Localize a URL utilizada para recuperar as informações específicas do nó do ISE.

URI de API

Etapa 3. Este é um exemplo de código Python. Copie e cole o conteúdo. Substitua o IP do ISE, o nome de usuário e a senha. Salve como um arquivo python para executar.

Garanta uma boa conectividade entre o ISE e o dispositivo que executa o exemplo de código 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 é o exemplo das saídas esperadas.

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

Acesso à Rede - Obter Regras de Autenticação

Esta API recupera regras de autenticação de um conjunto de políticas específico.

Etapa 1. Informações necessárias para uma chamada à API.

Método

GET

URL

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

Credenciais

Usar credenciais de conta OpenAPI.

Cabeçalhos

Aceitar :  aplicativo/json

Tipo de conteúdo :  aplicativo/json

Etapa 2. Localize a URL utilizada para recuperar as informações da regra de autenticação.

URI de API

Etapa 3. Este é um exemplo de código Python. Copie e cole o conteúdo. Substitua o IP do ISE, o nome de usuário e a senha. Salve como um arquivo python para executar.

Garanta uma boa conectividade entre o ISE e o dispositivo que executa o exemplo de código 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())

Observação: a ID é de saídas de API na etapa 3 de Acesso à Rede - Lista de Conjuntos de Políticas. Por exemplo, ba71a417-4a48-4411-8bc3-d5df9b115769 é BGL_CFME02-FMC.

Este é o exemplo das saídas esperadas.

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

Acesso à Rede - Obter Regras de Autorização

Esta API recupera regras de autorização de um conjunto de políticas específico.

Etapa 1. Informações necessárias para uma chamada à API.

Método

GET

URL

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

Credenciais

Usar credenciais de conta OpenAPI.

Cabeçalhos

Aceitar :  aplicativo/json

Tipo de conteúdo :  aplicativo/json

Etapa 2. Localize a URL utilizada para recuperar as informações da regra de autorização.

URI de API

Etapa 3. Este é um exemplo de código Python. Copie e cole o conteúdo. Substitua o IP do ISE, o nome de usuário e a senha. Salve como um arquivo python para executar.

Garanta uma boa conectividade entre o ISE e o dispositivo que executa o exemplo de código 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())

Observação: a ID é de saídas de API na etapa 3 de Acesso à rede - Lista de conjuntos de políticas. Por exemplo, ba71a417-4a48-4411-8bc3-d5df9b115769 é BGL_CFME02-FMC.

Este é o exemplo das saídas esperadas.

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

Troubleshooting

Para solucionar problemas relacionados às OpenAPIs, defina o Nível de log para theapiservicecomponent paraDEBUGin theDebug Log Configuration window.

Para habilitar a depuração, navegue atéOperações > Solução de problemas > Assistente de depuração > Configuração do log de depuração > Nó ISE > apiservice.

Depuração do Serviço de API

Para baixar o arquivo de log de depuração, navegue para Operações > Solução de problemas > Download Logs > ISE PAN Node > Debug Logs.

Logs de depuração de download