2023/2024
Cours : Automatisation des réseaux
Classe : IRIC 2
Tutoriel : DevNet
Lab : Cisco Stealthwatch API Integration
Introduction
Objectifs du laboratoire:
• Comprendre comment utiliser les API REST de Cisco Secure Network Analytics.
• Apprendre à s’authentifier et à interagir avec les différents points de terminaison des API.
• Extraire et analyser des données à partir de Cisco Secure Network Analytics.
Première Partie: Réservation et Configuration du Sandbox
Étape 1: Connexion à Cisco DevNet
Étape 2: Recherche et Réservation du Sandbox
• Rechercher ”Cisco Secure Network Analytics” dans la barre de recherche.
• Cliquer sur le sandbox ”Cisco Secure Network Analytics Always On”.
Étape 3: Réserver le Sandbox
• Cliquer sur ”Réserver” et remplir le formulaire de réservation avec les informations requises.
• Choisir la durée et l’heure de début de la réservation.
• Confirmer la réservation.
Étape 4: Obtenir les Identifiants et les Informations d’Accès
• Après confirmation de la réservation, accéder aux détails du sandbox pour récupérer les informa-
tions de connexion (URL, nom d’utilisateur, mot de passe).
• Suivre les instructions fournies pour configurer l’accès VPN si nécessaire.
Étape 5: Configuration du VPN
• Installer et configurer Cisco AnyConnect (ou un autre client VPN) avec les identifiants fournis.
• Se connecter au VPN pour accéder au réseau du sandbox.
Étape 6: Connexion à l’Interface Web
• Ouvrir un navigateur web et naviguer à l’adresse [Link]
• Entrer les identifiants: admin comme nom d’utilisateur et C1sco12345! comme mot de passe.
• Prendre une capture d’écran de l’interface après la connexion et décrire ce que vous voyez.
1
2023/2024
Deuxième Partie: Utilisation des API
Installation des outils nécessaires
• Télécharger et installer Visual Studio Code depuis [Link]
• Télécharger et installer Python depuis [Link]
• Ouvrir le terminal dans VS Code et exécuter la commande suivante pour installer la bibliothèque
requests:
pip install requests
1. Initialisation de la Session et Récupération du Token
Code à exécuter:
import r e q u e s t s
import js o n
SMC USER = ”admin”
SMC PASSWORD = ” C1sco12345 ! ”
SMC HOST = ” 1 0 . 1 0 . 2 0 . 6 0 ”
def i n i t i a l i z e s e s s i o n ( smc user , smc password , smc host ) :
r e q u e s t s . packages . u r l l i b 3 . d i s a b l e w a rn in g s ()
XSRF HEADER NAME = ’X−XSRF−TOKEN’
AUTHORIZATION HEADER NAME = ’ Authorization ’
u r l = f ” h ttps : // { smc host }/ token / v2 / a u th e n t i c a te ”
login request data = {
” username ” : smc user ,
” password ” : smc password
}
a p i s e s s i o n = r e q u e s t s . Se s s io n ()
re s p on s e = a p i s e s s i o n . post ( url , v e r i f y=False , data=l o g i n r e q u e s t d a t a )
i f re sponse . s ta tu s c o d e == 20 0 :
xs r f t o k e n = respo nse . c o o kie s . get ( ’XSRF−TOKEN’ )
i f xs r f t o k e n :
a p i s e s s i o n . headers . update ({ XSRF HEADER NAME: xs r f t o k e n })
print ( f ”Token : - {xs r f t o k e n }” )
return a p i s e s s i o n
else :
print ( f ”An- e r r o r - has - occ u rr ed - wh ile - lo g g in g - in , - with - the - f o l l o w in g - code - {re s p on s
return None
s e s s i o n = i n i t i a l i z e s e s s i o n (SMC USER, SMC PASSWORD, SMC HOST)
if session :
print ( ” Se s s io n - has - been - cre ate d - s u c c e s s f u l l y ” )
else :
print ( ” Se s s io n - c r e a t i o n - f a i l e d . ” )
Instructions:
• Exécutez le code ci-dessus pour initialiser la session et récupérer le Token.
• Notez le Token imprimé dans votre rapport. Ce Token est unique pour chaque étudiant.
2
2023/2024
• Prenez une capture d’écran du Token affiché.
2. Récupération des Tenants (Domaines)
Code à exécuter:
def g e t te n a n t s ( a p i s e s s i o n , smc host ) :
u r l = f ’ h ttps : // smc{ }
host /sw−r e p o r t in g / v1 / t en a n ts ’
re s p on s e = a p i s e s s i o n . get ( url , v e r i f y=False )
i f re sponse . s ta tu s c o d e == 2 0 0 ) :
t e n a n t l i s t = re spo nse . js o n ( ) [ ” data ” ]
return t e n a n t l i s t
else :
print ( f ”An- e r r o r - has - occu r r ed - wh ile - f e t c h in g - t en a n ts - ( domains ) , - with - the - f o l l o w i
return None
if session :
tenants = g e t te n a n t s ( s e s s io n , SMC HOST)
i f t e n a n ts :
te n a n t id = t en a n ts [ 0 ] [ ” id ” ]
print ( f ” Tenant - ID -=- { te n a n t id } ” )
Instructions:
• Exécutez le code ci-dessus pour récupérer la liste des tenants (domaines).
• Prenez une capture d’écran de la sortie affichant les tenants.
3. Récupération des Utilisateurs
Code à exécuter:
def g e t u s e r s ( a p i s e s s i o n , smc host ) :
try :
u r l = f ’ h ttps : // smc { }
host /smc−u s e r s / r e s t / v1 / u s e r s ’
re s p on s e = a p i s e s s i o n . get ( url , v e r i f y=False )
i f re s p on s e . s ta tu s c o d e != 2 0 0 ) :
raise RuntimeError ( f ”An- e r r o r - has - occu r r e d - wh ile - f e t c h in g - u sers , - with - the - f o
data = re s p on s e . js o n ( ) [ ” data ” ]
print ( ” \\ nThe - User - l i s t - i s : \\ n” )
for item in data :
username = item [ ’ userName ’ ]
fu lln a m e = item [ ’ fullName ’ ]
data Id = item [ ’ data Role Id ’ ]
print ( f ’ - - - - Username -=- username { ; - - }Fu ll - name -=- fu lln { a m e ; - -}Data - r o l e - ID -=-
print ()
{
u r l = f ’ h ttps : // smc }
host /smc−u s e r s / r e s t / v1 / r o l e s / data−r o l e s ’re
s po ns e = a p i s e s s i o n . get ( url , v e r i f y=False )
i f re s p on s e . s ta tu s c o d e != 2 0 0 ) :
raise RuntimeError ( f ”An- e r r o r - has - occu r r e d - wh ile - f e t c h in g - data - r o l e s , - with - t
print ( ’ The - d e f in e d - Data - Roles - are : ’ )
data = re s p on s e . js o n ( ) [ ” data ” ]
print ( js o n . dumps( data , indent =4))
3
2023/2024
except RuntimeError as e r r :
print ( e r r . a rgs [ 0 ] )
g e t u s e r s ( s e s s io n , SMC HOST)
Instructions:
• Exécutez le code ci-dessus pour récupérer la liste des utilisateurs.
• Prenez une capture d’écran de la sortie affichant les utilisateurs et les rôles de données.