الـ APIs بتاعة Catalyst Center وvManage — وأمان الـ REST API
هتكتب Python scripts تكلّم Catalyst Center بالـ intent API (token ثم X-Auth-Token، inventory، command runner async بالـ task والـ file) وvManage بالـ session والـ XSRF token، وتثبت عمليًا أمان الـ REST API: HTTPS، الـ tokens، الـ RBAC (401 مقابل 403).
مدة التجربة 40 دقيقة · 4 مهام
الأجهزة في بداية التجربة
- DEV — كمبيوتر
- SW — سويتش
- DNAC — Catalyst Center
- VMANAGE — vManage
- R1 — راوتر
التوصيلات
- DEV eth0 ↔ SW Fa0/1
- DNAC eth0 ↔ SW Fa0/2
- VMANAGE eth0 ↔ SW Fa0/3
- R1 Gi0/0/0 ↔ SW Fa0/4
العناوين المضبوطة مسبقًا
- R1 g0/0/0: 10.10.10.1/24
- R1 loopback0: 10.255.0.1/32
02 / المهام التي ستطبقها
- 01اكتب dnac_inventory.py على DEV: token من Catalyst Center (netops) وبعدين اطبع كل جهاز في الـ inventory (hostname + managementIpAddress)
تلميح / الحل المقترح
POST https://10.10.10.100/dna/system/api/v1/auth/token بـ HTTP Basic (auth=HTTPBasicAuth(...)) بيرجّع {"Token": ...} — الـ token ده (JWT) صالح ساعة. كل نداء بعد كده لازم الـ header X-Auth-Token: <token> — من غيره 401. GET /dna/intent/api/v1/network-device ← r.json()["response"] ليستة أجهزة. شغّل: python dnac_inventory.py - 02أمان الـ REST API: rbac_test.py يثبت إن من غير token = 401، وإن الـ auditor (OBSERVER-ROLE) يقرأ (200) بس مايقدرش يكتب (403)
تلميح / الحل المقترح
الـ REST API security في Catalyst Center: HTTPS بس (جرّب http:// ← connection refused)، authentication بـ token قصير العمر بدل ما تبعت الباسورد في كل نداء، authorization بالـ roles (RBAC: SUPER-ADMIN / NETWORK-ADMIN / OBSERVER)، وrate limiting (429 Too Many Requests). اطبع: no token: 401 ← auditor GET: 200 ← auditor POST: 403
- 03Command Runner بالـ API: cmd_runner.py يشغّل show ip interface brief على R1 ويطبع الناتج
تلميح / الحل المقترح
الـ APIs اللي بتاخد وقت async: POST /dna/intent/api/v1/network-device-poller/cli/read-request {commands, deviceUuids} بيرجّع taskId ← GET /task/<id> لحد ما الـ progress يبقى فيه fileId ← GET /file/<fileId> ← [0]["commandResponses"]["SUCCESS"][<command>]. الـ deviceUuid من network-device?hostname=R1. أوامر الـ config بتترفض (BLACKLISTED) — الـ command runner للقراية بس - 04الـ vManage API: vmanage.py يعمل login ويجيب الـ XSRF token ويطبع الأجهزة من /dataservice/device
تلميح / الحل المقترح
الـ vManage بيستخدم session مش token: POST /j_security_check بـ form (j_username, j_password) ← لو الـ login فشل بيرجّع 200 بصفحة HTML (مش 401!) فاختبر r.text. بعدين GET /dataservice/client/token = الـ XSRF token ← حطه في header X-XSRF-TOKEN (لازم لأي POST/PUT/DELETE). GET /dataservice/device ← r.json()["data"] فيه host-name وsystem-ip. الفرق: Catalyst Center (X-Auth-Token) مقابل vManage (JSESSIONID + X-XSRF-TOKEN)
03 / تجارب مرتبطة

