Table des matières

Introduction

Conditions préalables

Exigences

Composants utilisés

Informations générales

Configurer

Diagramme du réseau

Configuration sur ISE

Exemples Python

Device Admin - Liste Des Jeux De Stratégies

Administrateur de périphérique - Obtenir les règles d'authentification

Administrateur de périphérique - Obtenir les règles d'autorisation

Accès Réseau - Liste Des Jeux De Stratégies

Accès réseau - Obtenir les règles d'authentification

Accès réseau - Obtenir les règles d'autorisation

Dépannage

Introduction

Ce document décrit la procédure d'utilisation d'OpenAPI pour gérer Cisco Identity Services Engine (ISE) Policy (politique) .

Conditions préalables

Exigences

Cisco vous recommande de prendre connaissance des rubriques suivantes :

- Cisco Identity Services Engine (ISE)

- API REST

- Python

Composants utilisés

- ISE 3.3

- Python 3.10.0

The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. Si votre réseau est en ligne, assurez-vous de bien comprendre l’incidence possible des commandes.

Informations générales

À partir de Cisco ISE 3.1, de nouvelles API sont disponibles au format OpenAPI. La politique de gestion optimise la sécurité et la gestion du réseau en améliorant l'interopérabilité, l'automatisation, l'efficacité, la sécurité, l'innovation et la réduction des coûts. Cette politique permet à ISE de s'intégrer en toute transparence à d'autres systèmes, d'automatiser la configuration et la gestion, de fournir un contrôle d'accès granulaire, d'encourager l'innovation tierce et de simplifier les processus de gestion, réduisant ainsi les coûts de maintenance et augmentant le retour sur investissement global.

Configurer

Diagramme du réseau

Topologie

Configuration sur ISE

Étape 1. Ajoutez un compte admin OpenAPI.

Pour ajouter un administrateur d'API, accédez à Administration > System > Admin Access > Administrators > Admin Users > Add.

Administrateur API

Étape 2. Activez OpenAPI sur ISE.

L'API ouverte est désactivée par défaut sur ISE. Pour l'activer, accédez à Administration > System > Settings > API Settings > API Service Settings. Activez les options OpenAPI. Cliquer Enregistrer.

Activer OpenAPI

Étape 3. Explorez ISE OpenAPI.

Naviguez jusqu'à Administration > System > Settings > API Settings > Overview. Cliquez sur OpenAPI pour visiter le lien.

Visitez OpenAPI

Exemples Python

Device Admin - Liste Des Jeux De Stratégies

Cette API récupère les informations des ensembles de stratégies d'administration de périphériques.

Étape 1. Informations requises pour un appel API.

Méthode

GET

URL

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

Identifiants

Utilisez les informations d'identification du compte OpenAPI.

Header (En-tête)

Accept (accepter) :  application/json

Content-Type (Type de contenu) :  application/json

Étape 2. Localisez l'URL utilisée pour récupérer les informations des ensembles de stratégies d'administration de périphériques.

URI API

Étape 3. Ceci est un exemple de code Python. Copiez et collez le contenu. Remplacez l'adresse IP ISE, le nom d'utilisateur et le mot de passe. Enregistrer en tant que fichier python à exécuter.

Assurez-vous d'une bonne connectivité entre ISE et le périphérique exécutant l'exemple de code 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())

Voici l'exemple des résultats attendus.

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

DAdministrateur de périphérique - Obtenir les règles d'authentification

Cette API récupère les règles d'authentification d'un ensemble de stratégies particulier.

Étape 1. Informations requises pour un appel API.

Méthode

GET

URL

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

Identifiants

Utilisez les informations d'identification du compte OpenAPI.

Header (En-tête)

Accept (accepter) :  application/json

Content-Type (Type de contenu) :  application/json

Étape 2. Localisez l'URL utilisée pour récupérer les informations de règle d'authentification.

URI API

Étape 3. Ceci est un exemple de code Python. Copiez et collez le contenu. Remplacez l'adresse IP ISE, le nom d'utilisateur et le mot de passe. Enregistrer en tant que fichier python à exécuter.

Assurez-vous d'une bonne connectivité entre ISE et le périphérique exécutant l'exemple de code 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())

Remarque : l'ID provient des résultats de l'API à l'étape 3 de Device Admin - List Of Policy Sets. Par exemple, 41ed8579-429b-42a8-879e-61861cb82bbf est un jeu de stratégies TACACS par défaut.

Voici l'exemple des résultats attendus.

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

Administrateur de périphérique - Obtenir les règles d'autorisation

Cette API récupère les règles d'autorisation d'un ensemble de stratégies particulier.

Étape 1. Informations requises pour un appel API.

Méthode

GET

URL

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

Identifiants

Utilisez les informations d'identification du compte OpenAPI.

Header (En-tête)

Accept (accepter) :  application/json

Content-Type (Type de contenu) :  application/json

Étape 2. Localisez l'URL utilisée pour récupérer les informations de règle d'autorisation.

URI API

Étape 3. Ceci est un exemple de code Python. Copiez et collez le contenu. Remplacez l'adresse IP ISE, le nom d'utilisateur et le mot de passe. Enregistrer en tant que fichier python à exécuter.

Assurez-vous d'une bonne connectivité entre ISE et le périphérique exécutant l'exemple de code 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())

Remarque : l'ID provient des résultats de l'API à l'étape 3 de Device Admin - List Of Policy Sets. Par exemple, 41ed8579-429b-42a8-879e-61861cb82bbf est un jeu de stratégies TACACS par défaut.

Voici l'exemple des résultats attendus.

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

Accès Réseau - Liste Des Jeux De Stratégies

Cette API récupère les ensembles de politiques d'accès réseau des déploiements ISE.

Étape 1. Informations requises pour un appel API.

Méthode

GET

URL

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

Identifiants

Utilisez les informations d'identification du compte OpenAPI.

Header (En-tête)

Accept (accepter) :  application/json

Content-Type (Type de contenu) :  application/json

Étape 2. Localisez l'URL utilisée pour récupérer les informations de noeud ISE spécifiques.

URI API

Étape 3. Ceci est un exemple de code Python. Copiez et collez le contenu. Remplacez l'adresse IP ISE, le nom d'utilisateur et le mot de passe. Enregistrer en tant que fichier python à exécuter.

Assurez-vous d'une bonne connectivité entre ISE et le périphérique exécutant l'exemple de code 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())

Voici l'exemple des résultats attendus.

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

Accès réseau - Obtenir les règles d'authentification

Cette API récupère les règles d'authentification d'un ensemble de stratégies particulier.

Étape 1. Informations requises pour un appel API.

Méthode

GET

URL

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

Identifiants

Utilisez les informations d'identification du compte OpenAPI.

Header (En-tête)

Accept (accepter) :  application/json

Content-Type (Type de contenu) :  application/json

Étape 2. Localisez l'URL utilisée pour récupérer les informations de la règle d'authentification.

URI API

Étape 3. Ceci est un exemple de code Python. Copiez et collez le contenu. Remplacez l'adresse IP ISE, le nom d'utilisateur et le mot de passe. Enregistrer en tant que fichier python à exécuter.

Assurez-vous d'une bonne connectivité entre ISE et le périphérique exécutant l'exemple de code 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())

Remarque : l'ID provient des résultats de l'API à l'étape 3 de Accès réseau - Liste des ensembles de politiques. Par exemple, ba71a417-4a48-4411-8bc3-d5df9b115769 est BGL_CFME02-FMC.

Voici l'exemple des résultats attendus.

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

Accès réseau - Obtenir les règles d'autorisation

Cette API récupère les règles d'autorisation d'un ensemble de stratégies particulier.

Étape 1. Informations requises pour un appel API.

Méthode

GET

URL

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

Identifiants

Utilisez les informations d'identification du compte OpenAPI.

Header (En-tête)

Accept (accepter) :  application/json

Content-Type (Type de contenu) :  application/json

Étape 2. Localisez l'URL utilisée pour récupérer les informations de règle d'autorisation.

URI API

Étape 3. Ceci est un exemple de code Python. Copiez et collez le contenu. Remplacez l'adresse IP ISE, le nom d'utilisateur et le mot de passe. Enregistrer en tant que fichier python à exécuter.

Assurez-vous d'une bonne connectivité entre ISE et le périphérique exécutant l'exemple de code 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())

Remarque : l'ID provient des résultats de l'API à l'étape 3 de Accès réseau - Liste des ensembles de politiques. Par exemple, ba71a417-4a48-4411-8bc3-d5df9b115769 est BGL_CFME02-FMC.

Voici l'exemple des résultats attendus.

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

Dépannage

Pour résoudre les problèmes liés aux API ouvertes, définissez le niveau de consignation pour le composant apiservicecomponent sur DEBUG dans la fenêtre Configuration du journal de débogage.

Pour activer le débogage, accédez à Opérations > Dépannage > Assistant de débogage > Configuration du journal de débogage > Noeud ISE > apiservice.

Débogage du service API

Pour télécharger le fichier journal de débogage, accédez à Operations > Troubleshoot > Download Logs > ISE PAN Node > Debug Logs.

Télécharger les journaux de débogage