소개
이 문서에서는 openAPI를 사용하여 Cisco ISE(Identity Services Engine) 구축을 관리하는 절차에 대해 설명합니다.
배경
오늘날의 엔터프라이즈 네트워크에서는 보안 및 관리가 점점 더 복잡해지고 중요해지고 있습니다. 이러한 문제를 해결하기 위해 Cisco ISE 3.1부터는 강력한 네트워크 액세스 제어 및 정책 관리 기능을 제공하는 OpenAPI 형식으로 새로운 API를 사용할 수 있습니다. 이제 관리자는 OpenAPI를 통해 ISE 구축을 더 효율적으로 확인하고 최종 사용자의 문제 보고서를 기다리지 않고 사전 대응적으로 조치를 취할 수 있습니다.
사전 요구 사항
요구 사항
다음 주제에 대한 지식을 보유하고 있으면 유용합니다.
- Cisco ISE(Identity Services Engine)
- REST API
- 비단뱀
사용되는 구성 요소
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
구성
네트워크 다이어그램
토폴로지
ISE의 컨피그레이션
1단계: Open API 관리자 계정 추가
API 관리자를 추가하려면 Administration(관리) > System(시스템) > Admin Access(관리자 액세스) > Administrators(관리자) > Admin Users(관리자 사용자) > Add(추가)로 이동합니다.
API 관리자
2단계: ISE에서 Open API 활성화
Open API는 ISE에서 기본적으로 비활성화되어 있습니다. 활성화하려면 Administration(관리) > System(시스템) > Settings(설정) > API Settings(API 설정) > API Service Settings(API 서비스 설정)로 이동합니다. Open API 옵션을 전환합니다. 저장을 클릭합니다.
OpenAPI 활성화
3단계: ISE 개방형 API 탐색
Administration(관리) > System(시스템) > Settings(설정) > API Settings(API 설정) > Overview(개요)로 이동합니다. API 방문 열기 링크를 클릭합니다.
OpenAPI 방문
Python 예
클러스터에 구축된 모든 노드 목록 검색
API는 클러스터에 구축된 모든 노드를 나열합니다.
1단계: API 호출에 필요한 정보입니다.
2단계: 구축 정보를 검색하는 데 사용되는 URL을 찾습니다.
API URI
3단계: Python Code의 예입니다. 내용을 복사하여 붙여넣습니다. ISE IP, 사용자 이름, 비밀번호를 교체합니다. 실행할 python 파일로 저장합니다.
ISE와 python 코드 예제를 실행하는 디바이스 간의 올바른 연결을 확인합니다.
from requests.auth import HTTPBasicAuth
import requests
requests.packages.urllib3.disable_warnings()
if __name__ == "__main__":
url = "https://10.106.33.92/api/v1/deployment/node"
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())
다음은 예상 출력의 예입니다.
Return Code:
200
Expected Outputs:
{'response': [{'hostname': 'ISE-BGL-CFME01-PAN', 'fqdn': 'ISE-BGL-CFME01-PAN.cisco.com', 'ipAddress': '192.168.20.240', 'roles': ['PrimaryAdmin'], 'services': ['Session', 'Profiler', 'DeviceAdmin'], 'nodeStatus': 'Connected'}, {'hostname': 'ISE-BGL-CFME02-MNT', 'fqdn': 'ISE-BGL-CFME02-MNT.cisco.com', 'ipAddress': '192.168.21.240', 'roles': ['PrimaryMonitoring'], 'services': ['Session', 'Profiler', 'DeviceAdmin'], 'nodeStatus': 'Connected'}, {'hostname': 'ISE-DLC-CFME01-PSN', 'fqdn': 'ISE-DLC-CFME01-PSN.cisco.com', 'ipAddress': '192.168.40.240', 'roles': [], 'services': ['Session', 'Profiler', 'DeviceAdmin'], 'nodeStatus': 'Connected'}, {'hostname': 'ISE-DLC-CFME02-PSN', 'fqdn': 'ISE-DLC-CFME02-PSN.cisco.com', 'ipAddress': '192.168.41.240', 'roles': [], 'services': ['Session', 'Profiler', 'DeviceAdmin'], 'nodeStatus': 'Connected'}, {'hostname': 'ISE-RTP-CFME01-PAN', 'fqdn': 'ISE-RTP-CFME01-PAN.cisco.com', 'ipAddress': '192.168.10.240', 'roles': ['SecondaryAdmin'], 'services': ['Session', 'Profiler', 'DeviceAdmin'], 'nodeStatus': 'Connected'}, {'hostname': 'ISE-RTP-CFME02-MNT', 'fqdn': 'ISE-RTP-CFME02-MNT.cisco.com', 'ipAddress': '192.168.11.240', 'roles': ['SecondaryMonitoring'], 'services': ['Session', 'Profiler', 'DeviceAdmin'], 'nodeStatus': 'Connected'}], 'version': '1.0.0'}
구축된 노드의 세부 정보 검색
이 API는 특정 ISE 노드의 세부 정보를 검색합니다.
1단계: API 호출에 필요한 정보입니다.
방법 |
가져오기 |
URL |
https://<ISE-PAN-IP>/api/v1/deployment/node/<ISE-Node-Hostname> |
자격 증명 |
Open API 계정 자격 증명 사용 |
헤더 |
수락: application/json
Content-Type: application/json
|
2단계: 특정 ISE 노드 정보를 검색하는 데 사용되는 URL을 찾습니다.
API URI
3단계. 여기는 파이썬 코드의 예입니다. 내용을 복사하여 붙여넣습니다. ISE IP, 사용자 이름, 비밀번호를 교체합니다. 실행할 python 파일로 저장합니다.
ISE와 python 코드 예제를 실행하는 디바이스 간의 올바른 연결을 확인합니다.
from requests.auth import HTTPBasicAuth
import requests
requests.packages.urllib3.disable_warnings()
if __name__ == "__main__":
url = "https://10.106.33.92/api/v1/deployment/node/ISE-DLC-CFME02-PSN"
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())
다음은 예상 출력의 예입니다.
Return Code:
200
Expected Outputs:
{'response': {'hostname': 'ISE-DLC-CFME02-PSN', 'fqdn': 'ISE-DLC-CFME02-PSN.cisco.com', 'ipAddress': '192.168.41.240', 'roles': [], 'services': ['Session', 'Profiler', 'DeviceAdmin'], 'nodeStatus': 'Connected'}, 'version': '1.0.0'}
문제 해결
Open API와 관련된 문제를 해결하려면 Debug Log Configuration(디버그 로그 컨피그레이션) 창에서 Log Levelfor theapiservicecomponent를 DEBUG로 설정합니다.
디버그를 활성화하려면 Operations(운영) > Troubleshoot(문제 해결) > Debug Wizard(디버그 마법사) > Debug Log Configuration(디버그 로그 컨피그레이션) > ISE Node(ISE 노드) > apisservice(어플라이언스)로 이동합니다.
API 서비스 디버그
디버그 로그를 다운로드하려면 Operations(운영) > Troubleshoot(문제 해결) > Download Logs(로그 다운로드) > ISE PAN Node(ISE PAN 노드) > Debug Logs(디버그 로그)로 이동합니다.
디버그 로그 다운로드