소개
이 문서에서는 PostMan을 REST 클라이언트로 사용하여 ERS API를 통해 ISE에서 NAD(Network Access Device)를 만드는 프로세스에 대해 설명합니다.
사전 요구 사항
요구 사항
다음 주제에 대한 지식을 보유하고 있으면 유용합니다.
- ISE(Identity Services Engine)
- ERS(외부 RESTful 서비스)
- REST 클라이언트 Postman, REST, Insomnia 등
사용되는 구성 요소
이 문서의 정보는 다음 소프트웨어 버전을 기반으로 합니다.
- Cisco ISE (Identity Services Engine) 3.1 패치 6
- Postman REST 클라이언트 v10.17.4
참고: 절차는 다른 ISE 버전 및 REST 클라이언트에서 비슷하거나 동일합니다. 달리 명시되지 않는 한 모든 2.x 및 3.x ISE 소프트웨어 릴리스에서 이 단계를 사용할 수 있습니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
구성
ERS 활성화(포트 9060)
ERS API는 포트 443 및 포트 9060을 통해 작동하는 HTTPS 전용 REST API입니다. 포트 9060은 기본적으로 닫혀 있으므로 먼저 열어야 합니다. 이 포트에 액세스하려는 클라이언트가 ERS를 먼저 활성화하지 않을 경우 서버의 시간 초과가 표시됩니다. 따라서 첫 번째 요구 사항은 Cisco ISE 관리 UI에서 ERS를 활성화 하는 것 입니다.
Administration(관리) > Settings(설정) > API Settings(API 설정)로 이동하고 ERS(Read/Write) 토글 버튼을 활성화합니다.
참고: ERS API는 TLS 1.1 및 TLS 1.2를 지원합니다. ERS API는 Cisco ISE GUI의 Security Settings(보안 설정) 창에서 TLS 1.0을 활성화해도 TLS 1.0을 지원하지 않습니다(Administration(관리) > System(시스템) > Settings(설정) > Security Settings(보안 설정)). Security Settings(보안 설정) 창에서 TLS 1.0을 활성화하는 것은 EAP 프로토콜에만 관련되며 ERS API에는 영향을 주지 않습니다.
ERS 관리자 생성
Cisco ISE 관리자를 만들고 암호를 할당한 다음 사용자를 관리자 그룹에 ERS 관리자로 추가합니다. 나머지 컨피그레이션은 비워둘 수 있습니다.
Postman 설정
Postman의 온라인 버전을 다운로드하거나 사용합니다.
- 작업공간(Workspaces) 탭에서 작업공간 생성(Create Workspace)을 클릭하여 사용자를 생성하고 작업공간을 생성합니다.
2. 빈 Workspace를 선택하고 Workspace에 이름을 지정합니다. 설명을 추가하고 공개할 수 있습니다. 이 예에서는 Personalis가 선택됩니다.
작업 영역을 생성했으면 이제 API 호출을 구성할 수 있습니다.
ISE SDK 및 기본 Postman 권한 부여
통화를 구성하려면 먼저 ISE ERS SDK(소프트웨어 개발자 키트)에 액세스합니다. 이 도구는 ISE에서 수행할 수 있는 API 호출의 전체 목록을 컴파일합니다.
- https://{ise-ip}/ers/sdk로 이동합니다.
- ISE 관리자 자격 증명을 사용하여 로그인합니다.
- API 문서를 확장합니다.
- Network Device(네트워크 디바이스)를 찾을 때까지 아래로 스크롤하고 클릭합니다.
- 이제 이 옵션에서 ISE의 네트워크 디바이스에 대해 수행할 수 있는 모든 작업을 찾을 수 있습니다. 생성을 선택합니다.
6. 이제 모든 Rest 클라이언트에서 XML 또는 JSON을 사용하여 API 호출을 수행하는 데 필요한 컨피그레이션과 예상 응답 예를 볼 수 있습니다.
7. Postman으로 돌아가서 ISE에 대한 기본 인증을 구성합니다. Authorization(권한 부여) 탭에서 Basic Auth(기본 인증)를 인증 유형으로 선택하고 ISE에서 이전에 생성한 ISE ERS 사용자 자격 증명을 추가합니다.
참고: Postman에 변수가 구성되지 않은 경우 비밀번호는 일반 텍스트로 표시됩니다.
XML을 사용하여 NAD 생성
XML을 사용하여 RADIUS TACACS, SNMP 및 TrustSec 설정으로 TESTNAD1을 생성합니다.
1. SDK의 Create(생성)에는 호출을 수행하는 데 필요한 헤더와 템플릿과 예상 응답이 있습니다.
2. Headers(헤더) 탭으로 이동하고 SDK에 표시된 대로 API 호출에 필요한 헤더를 구성합니다. 헤더 구성은 다음과 같아야 합니다.
3. 본문 헤더로 이동하고 raw를 선택합니다. 이렇게 하면 NAD를 만드는 데 필요한 XML 템플릿을 붙여넣을 수 있습니다.
4. XML 템플리트는 다음과 같습니다(필요에 따라 값 변경).
<?xml version="1.0" encoding="UTF-8"?> <ns0:networkdevice xmlns:ns0="network.ers.ise.cisco.com" xmlns:xs="Schema XML File" xmlns:ns1="ers.ise.cisco.com" xmlns:ers="ers.ise.cisco.com" description="This NAD was added via ERS API" name="TESTNAD1"> <authenticationSettings> <dtlsRequired>true</dtlsRequired> <enableKeyWrap>true</enableKeyWrap> <keyEncryptionKey>1234567890123456</keyEncryptionKey> <keyInputFormat>ASCII</keyInputFormat> <messageAuthenticatorCodeKey>12345678901234567890</messageAuthenticatorCodeKey> <radiusSharedSecret>cisco123</radiusSharedSecret> </authenticationSettings> <coaPort>1700</coaPort> <dtlsDnsName>Domain</dtlsDnsName> <NetworkDeviceIPList> <NetworkDeviceIP> <ipaddress>NAD IP Address</ipaddress> <mask>32</mask> </NetworkDeviceIP> </NetworkDeviceIPList> <NetworkDeviceGroupList> <NetworkDeviceGroup>Location#All Locations#LAB</NetworkDeviceGroup> <NetworkDeviceGroup>Device Type#All Device Types#Access-Layer</NetworkDeviceGroup> </NetworkDeviceGroupList> <profileName>Cisco</profileName> <snmpsettings> <linkTrapQuery>true</linkTrapQuery> <macTrapQuery>true</macTrapQuery> <originatingPolicyServicesNode>Auto</originatingPolicyServicesNode> <pollingInterval>3600</pollingInterval> <roCommunity>aaa</roCommunity> <version>ONE</version> </snmpsettings> <tacacsSettings> <connectModeOptions>ON_LEGACY</connectModeOptions> <sharedSecret>cisco123</sharedSecret> </tacacsSettings> <trustsecsettings> <deviceAuthenticationSettings> <sgaDeviceId>TESTNAD1</sgaDeviceId> <sgaDevicePassword>cisco123</sgaDevicePassword> </deviceAuthenticationSettings> <deviceConfigurationDeployment> <enableModePassword>cisco123</enableModePassword> <execModePassword>cisco123</execModePassword> <execModeUsername>Admin</execModeUsername> <includeWhenDeployingSGTUpdates>true</includeWhenDeployingSGTUpdates> </deviceConfigurationDeployment> <pushIdSupport>false</pushIdSupport> <sgaNotificationAndUpdates> <coaSourceHost>ise3-1test</coaSourceHost> <downlaodEnvironmentDataEveryXSeconds>86400</downlaodEnvironmentDataEveryXSeconds> <downlaodPeerAuthorizationPolicyEveryXSeconds>86400</downlaodPeerAuthorizationPolicyEveryXSeconds> <downloadSGACLListsEveryXSeconds>86400</downloadSGACLListsEveryXSeconds> <otherSGADevicesToTrustThisDevice>false</otherSGADevicesToTrustThisDevice> <reAuthenticationEveryXSeconds>86400</reAuthenticationEveryXSeconds> <sendConfigurationToDevice>false</sendConfigurationToDevice> <sendConfigurationToDeviceUsing>ENABLE_USING_COA</sendConfigurationToDeviceUsing> </sgaNotificationAndUpdates> </trustsecsettings> </ns0:networkdevice>
참고: <enableKeyWrap>{false|true}</enableKeyWrap>이 true로 설정된 경우에만 다음 줄이 필요합니다. 그렇지 않으면 XML 템플릿에서 동일한 항목을 삭제할 수 있습니다.
<keyEncryptionKey>1234567890123456</keyEncryptionKey> <keyInputFormat>ASCII</keyInputFormat> <messageAuthenticatorCodeKey>12345678901234567890</messageAuthenticatorCodeKey>
필요 없는 컨피그레이션을 템플릿에서 제거하고 NAD를 생성하는 동안 실제로 추가해야 하는 데이터를 그대로 둘 수 있습니다. 예를 들어, 동일한 템플릿이지만 TACACS 컨피그레이션에서만 사용할 수 있습니다. 필수 컨피그레이션과 상관없이 템플릿이 </ns0:networkdevice>로 끝나야 합니다.
<?xml version="1.0" encoding="UTF-8"?> <ns0:networkdevice xmlns:ns0="network.ers.ise.cisco.com" xmlns:xs="Schema XML File" xmlns:ns1="ers.ise.cisco.com" xmlns:ers="ers.ise.cisco.com" description="This NAD was added via ERS API" name="TESTNAD1"> <NetworkDeviceIPList> <NetworkDeviceIP> <ipaddress>NAD IP Address</ipaddress> <mask>32</mask> </NetworkDeviceIP> </NetworkDeviceIPList> <NetworkDeviceGroupList> <NetworkDeviceGroup>Location#All Locations#LAB</NetworkDeviceGroup> <NetworkDeviceGroup>Device Type#All Device Types#Access-Layer</NetworkDeviceGroup> </NetworkDeviceGroupList> <profileName>Cisco</profileName> <tacacsSettings> <connectModeOptions>ON_LEGACY</connectModeOptions> <sharedSecret>cisco123</sharedSecret> </tacacsSettings> </ns0:networkdevice>
5. 본문 헤더 아래에 원시의 XML 템플릿을 붙여넣습니다.
6. 방법으로 POST를 선택하고 https://{ISE-ip}/ers/config/network device를 붙여 넣고 Send(보내기)를 클릭합니다. 모든 것이 올바르게 구성된 경우 201 Created(201 생성) 메시지와 결과가 비어 있어야 합니다.
7. NAD에 대한 GET 호출을 수행하거나 ISE NAD 목록을 확인하여 NAD가 생성되었는지 확인합니다.
JSON을 사용하여 NAD 생성
JSON을 사용하여 RADIUS TACACS, SNMP 및 TrustSec 설정을 사용하는 TESTNAD2를 생성합니다.
1. SDK의 Create(생성)에는 호출을 수행하는 데 필요한 헤더와 템플릿과 예상 응답이 있습니다.
2. Headers(헤더) 탭으로 이동하고 SDK에 표시된 대로 API 호출에 필요한 헤더를 구성합니다. 헤더 구성은 다음과 같아야 합니다.
3. 본문 헤더로 이동하고 raw를 선택합니다. 이렇게 하면 NAD를 생성하는 데 필요한 JSON 템플릿을 붙여넣을 수 있습니다.
4. JSON 템플릿은 다음과 같아야 합니다(필요에 따라 값 변경).
{ "NetworkDevice": { "name": "TESTNAD2", "description": "This NAD was added via ERS API", "authenticationSettings": { "radiusSharedSecret": "cisco123", "enableKeyWrap": true, "dtlsRequired": true, "keyEncryptionKey": "1234567890123456", "messageAuthenticatorCodeKey": "12345678901234567890", "keyInputFormat": "ASCII" }, "snmpsettings": { "version": "ONE", "roCommunity": "aaa", "pollingInterval": 3600, "linkTrapQuery": true, "macTrapQuery": true, "originatingPolicyServicesNode": "Auto" }, "trustsecsettings": { "deviceAuthenticationSettings": { "sgaDeviceId": "TESTNAD2", "sgaDevicePassword": "cisco123" }, "sgaNotificationAndUpdates": { "downlaodEnvironmentDataEveryXSeconds": 86400, "downlaodPeerAuthorizationPolicyEveryXSeconds": 86400, "reAuthenticationEveryXSeconds": 86400, "downloadSGACLListsEveryXSeconds": 86400, "otherSGADevicesToTrustThisDevice": false, "sendConfigurationToDevice": false, "sendConfigurationToDeviceUsing": "ENABLE_USING_COA", "coaSourceHost": "ise3-1test" }, "deviceConfigurationDeployment": { "includeWhenDeployingSGTUpdates": true, "enableModePassword": "cisco123", "execModePassword": "cisco123", "execModeUsername": "Admin" }, "pushIdSupport": "false" }, "tacacsSettings": { "sharedSecret": "cisco123", "connectModeOptions": "ON_LEGACY" }, "profileName": "Cisco", "coaPort": 1700, "dtlsDnsName": "Domain", "NetworkDeviceIPList": [ { "ipaddress": "NAD IP Adress", "mask": 32 } ], "NetworkDeviceGroupList": [ "Location#All Locations", "Device Type#All Device Types" ] } }
참고: enableKeyWrap":{false|true}이(가) true로 설정된 경우에만 다음 줄이 필요합니다. 그렇지 않으면 JSON 템플릿에서 동일한 항목을 삭제할 수 있습니다.
"keyEncryptionKey": "1234567890123456", "messageAuthenticatorCodeKey": "12345678901234567890", "keyInputFormat": "ASCII" 템플릿에서 필요하지 않은 컨피그레이션을 제거하고 NAD를 생성하는 동안 실제로 추가해야 하는 데이터만 남겨 둘 수도 있습니다.
5. Body 헤더 아래에 raw에 대한 JSON 템플릿을 붙여넣습니다.
6. 방법으로 POST를 선택하고 https://{ISE-ip}/ers/config/network device를 붙여 넣고 Send(보내기)를 클릭합니다. 모든 것이 올바르게 구성된 경우 201 Created(201 생성) 메시지와 결과가 비어 있어야 합니다.
7. NAD에 대한 GET 호출을 수행하거나 ISE NAD 목록을 확인하여 NAD가 생성되었는지 확인합니다.
다음을 확인합니다.
API 서비스 GUI 페이지에 액세스할 수 있는 경우(예: https://{iseip}:{port}/api/swagger-ui/index.html 또는 https://{iseip}:9060/ers/sdk)는 API 서비스가 예상대로 작동함을 의미합니다.
문제 해결
- 모든 REST 작업은 감사되며 로그는 시스템 로그에 기록됩니다.
- Open API와 관련된 문제를 해결하려면 Debug Log Configuration(로그 컨피그레이션 디버그) 창에서 apiservice 구성 요소의 Log Level(로그 레벨)을 DEBUG(디버그)로 설정합니다.
- ERS API와 관련된 문제를 해결하려면 Debug Log Configuration(로그 컨피그레이션 디버그) 창에서 ers 구성 요소의 Log Level(로그 레벨)을 DEBUG(디버그)로 설정합니다. 이 창을 보려면 Cisco ISE GUI로 이동하여 메뉴 아이콘을 클릭하고 Operations(운영) > Troubleshoot(문제 해결) > Debug Wizard(디버그 마법사) > Debug Log Configuration(디버그 로그 컨피그레이션)을 선택합니다.
- Download Logs(로그 다운로드) 창에서 로그를 다운로드할 수 있습니다. 이 창을 보려면 Cisco ISE GUI로 이동하여 메뉴 아이콘을 클릭하고 Operations(운영) > Troubleshoot(문제 해결) > Download Logs(로그 다운로드)를 선택합니다.
- Support Bundle(지원 번들) 탭의 Download(다운로드) 버튼을 클릭하여 지원 번들을 다운로드하거나, Debug Logs(디버그 로그) 탭에서 api-service 디버그 로그에 대한 Log File(로그 파일)을 클릭하여 api-service 디버그 로그를 다운로드하도록 선택할 수 있습니다.