Devnet 2038
Devnet 2038
0 APIs
Viktor Bobrov
Sr. Technical Leader
@securityccie
DEVNET-2038
Cisco Webex App
Questions?
Use Cisco Webex App to chat
with the speaker after the session
How
1 Find this session in the Cisco Live Mobile App
Webex spaces will be moderated by the speaker until June 13, 2025.
-
Agenda 01 Intro to pxGrid
02 pxGrid Architecture
03 pxGrid APIs
04 Authentication
05 REST API
06 Websockets
[Link]
07 pxGrid Direct
08 CLI Client
-
Intro to pxGrid
Context: Build, Summarize, Exchange Use Case #1
Visibility and Access Control Context Reuse
ISE builds context and applies access control
by eco-system partners for analysis & control
restrictions to users and devices
Security Group
Endpoints Tag (SGT)
-
Adaptive Network Control (ANC) Use Case #2
-
pxGrid IOT Profiling Use Case #3
pxGrid Context-In (Cyber Vision, Culinda, Cylera, Ordr, Asimily, Armis, Nozomi, Radiflow)
ISE
IOT ISE Authz
Asset pxGrid Policy
Solution
Publisher Subscriber
Endpoint
Asset Topic
-
pxGrid CMDB Sync Use Case #4
3.2
-
ISE & pxGrid Growing Partner Ecosystem
Benefits
100+
Containment
Security (RTC)
Firewall &
Partner integrations Cloud Access
Access Control & Growing Security
DDI
EMM/ SOAR /
MDM Other
Firepower Deception
StealthWatch, WSA, AMP,
© 2025 Cisco and/or its affiliates. All rights reserved. DEVNET-2038
CTA, IND 9 9
-
Architecture
ISE Deployments and pxGrid Nodes
<=50: PSNs + <= 4 PXGs)
PAN MNT PSN pxGrid
-
pxGrid 2.0 Components
External
HTTP HTTP
STOMP over STOMP over
WebSocket WebSocket
Port 8910 Port 8910
pxGrid pxGrid pxGrid
Publisher Controller Subscriber
Listens on TCP ports:
7400: Connection for internal processes (internal only)
8910: service check (all nodes), pub-sub (pxGrid node)
pxGrid 2.0 nodes always active (not shown in CLI)
-
pxGrid HA Active/Active
Dedup
pxGrid Client
-
pxGrid HA Active/Passive
pxGrid Client
-
pxGrid APIs
Hidden Python Code Slides
-
Also with Curl
curl [Link] \
--cacert <ca-file> \
--cert <client-cert-file> \
--key <client-key-file> \
-d ‘<postdata>’ \
-H 'Content-Type: application/json'
r=[Link](f"[Link]
verify=”<ca-file>",
cert=(”<client-cert-file>",”<client-key-file>"),
auth=(”<username>",”<password>"),
json={<postdata>}
)
-
pxGrid 2.0 Components
[Link]
pxGrid 2.0
Services
SessionDirectory
Endpoint
RadiusFailure
Profiler Configuration
System Health
MDM
ANC Status
TrustSec
TrustSec Configuration
TrustSec SXP
Endpoint Asset
-
REST API Calls
• TCP/8910
• Atomic operations
• Used to retrieve and post data
• All requests are POST even when no data is posted.
• pxGrid allows clients to discover where to request data from
• Data received directly from publishing nodes. Eg. Adm and MnT
-
Pub/Sub
-
ISE Topology for this Session
-
Authentication
Certificates – ISE Certificates
• Admin and MnT nodes need pxGrid certificate. Not just pxGrid nodes
• Recommended to have certificates from Corporate CA
• Certificates must have Client and Server Authentication EKUs
-
Certificates – Client Certificates
-
Certificates - Trust
ISE must trust client roots. N/A when using password authentication
$ curl [Link] --cacert [Link]
$ curl –k [Link]
-
Client Approval
All clients must be approved before being able to use pxGrid
Clients can be
auto-approved
Still requires client
certs
-
Authentication Flow - Certificate
* Once account is approved, steps can be skipped. They verify that account is still ENABLED
-
Authentication Flow - Password
* Once account is approved, steps can be skipped. They verify that account is still ENABLED
** ISE generates the password for the account. Password must be stored on the client
-
Authentication Demo
-
REST API
API Reference Example
[Link]
-
Endpoint 3.4
-
REST API Flow - Certificate-Based
-
REST API Flow - Password-Based
-
Check Schema JSON List []
-
Request Filtering 3.4
-
REST API Demo
-
Websockets
What are Websockets
-
STOMP
[Link]
-
STOMP and pxGrid
[Link]
-
Posture Visibility 3.4
• Application Inventory
• Running Processes
• Hardware Inventory
• Does not include posture checks
-
Endpoint 3.4
-
Websocket Flow - Subscribe
ServiceLookup - Topics
AccessSecret
STOMP Connect
STOMP Subscribe
* Assuming client account is approved
© 2025 Cisco and/or its affiliates. All rights reserved. DEVNET-2038 67
-
STOMP Subscribe Flow
CONNECT
accept-version:1.2 Client -> Server
host: {node_name} From PubSub Lookup. Eg: ~ise-pubsub-vb-cl-ise-px1
\x00
CONNECTED
Client <- Server
heart-beat:0,0
version:1.2
SUBSCRIBE
destination:{topic} From Service Lookup. Eg: /topic/[Link] Client -> Server
id: {client_id}
Client Identifier. Can be any string. Will be in server
\x00 messages
MESSAGE
content-length:680
destination:/topic/[Link] Client <- Server
message-id:19544
subscription:{client_id}
{"sessions”:....... }
© 2025 Cisco and/or its affiliates. All rights reserved. DEVNET-2038 68
-
Websocket Flow – Context-In (IOT Profiling)
ServiceRegister
STOMP Connect
STOMP Send
* Assuming client account is approved
Data picked up by pxGrid Probe
© 2025 Cisco and/or its affiliates. All rights reserved. DEVNET-2038 77
-
STOMP Context-In Flow
CONNECT
accept-version:1.2 Client -> Server
host: {node_name} From PubSub Lookup. Eg: ~ise-pubsub-vb-cl-ise-px1
\x00
CONNECTED
Client <- Server
heart-beat:0,0
version:1.2
SEND
destination:/topic/[Link]
content-length:373 Client -> Server
-
Asset JSON
Documented at [Link]
{
"opType": "CREATE",
"asset": {
"assetId": 1,
"assetName": "IOT1",
"assetIpAddress": "[Link]",
"assetMacAddress": "22:33:44:55:66:77",
"assetVendor": "CL",
"assetHwRevision": "1.0",
"assetSwRevision": "2.0",
"assetProtocol": "Telnet",
"assetProductId": "Wifi-IOT",
"assetSerialNumber": "ABC12345",
"assetDeviceType": "WiFi",
"assetConnectedLinks": [
{
"key": "wifi1",
"value": "ssid1"
}
]
}
}
-
Websocket API Demo
• 21_ws_session_pwd.py – Sessions
• 22_ws_session_cert_filter.py – Sessions with filtering
• 23_ws_endpoint_cert.py – Endpoints
• 24_ws_context_in_cert.py – Context-In
• 25_ws_posture_cert.py – Posture Visibility
-
pxGrid Direct
Introduction
-
pxGrid Direct Pusher 3.4
-
pxGrid Direct Demo
-
CLI Utility
Interactive pxGrid CLI client
[Link]
• Support for both certificate and password authentication
• Commands and methods to interact with most pxGrid services
• Websocket support for subscribing to topics and Context-in.
• Debug capabilities to show all low-level interactions with pxGrid
© 2025 Cisco and/or its affiliates. All rights reserved. DEVNET-2038 101
-
Installation
# Install module
$ pip install pxgrid-api
# Run utility
# pxshell
pxshell>
© 2025 Cisco and/or its affiliates. All rights reserved. DEVNET-2038 102
-
Built-in Help
pxshell> help
Undocumented commands:
======================
EOF
pxshell> help sxp
sxp options:
bindings: List all SXP bindings
topics: List topics available for subscription
subscribe <topic>: Subscribe to a topic
© 2025 Cisco and/or its affiliates. All rights reserved. DEVNET-2038 103
-
Config and Activate
pxshell> help config
Config options:
save <file>: Save config to file
load <file>: Load config from file
apply [file]: Instatiate connection to pxGrid. Optionaly load the file and apply in
one step
show: Show current settings
pxnode <hostname>: Set pxGrid PSN FQDN
name <clientname>: Set pxGrid client name
cert <certfile>: Set client certificate file name
key <keyfile>: Set client private key
root [<rootfile>]: Set root CA file. Leave out <rootfile> to disable server
certificate verification
password <password>: Set password for password based authentication
© 2025 Cisco and/or its affiliates. All rights reserved. DEVNET-2038 104
-
REST API Calls
pxshell> system perfs
pxshell> session all {
{ "performances": [
"sessions": [ {
{ "timestamp": "2022-11-11T16:49:14.572391-05:00",
"timestamp": "2022-11-10T14:06:24.222-05:00", "serverName": "vb-cl-ise-mnt2",
"state": "AUTHENTICATED", "radiusRate": 0.0,
"userName": "jsmith", "radiusCount": 0,
"auditSessionId": "ac1f1c1000005000636d4bb0", "radiusLatency": 0.0
"ipAddresses": [ },
"[Link]" {
], "timestamp": "2022-11-11T16:49:14.572391-05:00",
----- SNIP ---- "serverName": "vb-cl-ise-mnt1",
pxshell> anc create Stop QUARANTINE "radiusRate": 0.0,
{ "radiusCount": 0,
"name": "Stop", "radiusLatency": 0.0
"actions": [ },
"QUARANTINE"
] --- SNIP ---
}
© 2025 Cisco and/or its affiliates. All rights reserved. DEVNET-2038 105
-
Subscribing to Topics
© 2025 Cisco and/or its affiliates. All rights reserved. DEVNET-2038 106
-
References
References
© 2025 Cisco and/or its affiliates. All rights reserved. DEVNET-2038 108
-
Complete your session evaluations
Complete a minimum of Earn 100 points per Level up and earn Complete your surveys
4 session surveys and survey completed exclusive prizes! in the Cisco Live
the Overall Event and compete on the mobile app.
Survey to be entered in Cisco Live Challenge
a drawing to win 1 of 5 leaderboard.
full conference passes
to Cisco Live 2026.
© 2025 Cisco and/or its affiliates. All rights reserved. DEVNET-2038 109
-
Continue your education
Visit the Cisco Book your one-on-one Attend the interactive Visit the On-Demand
Showcase for related Meet the Engineer education with DevNet, Library for more
demos. meeting. Capture the Flag, and sessions at
Walk-in Labs. [Link]/
on-demand
© 2025 Cisco and/or its affiliates. All rights reserved. DEVNET-2038 110
-
Thank you