Plusieurs mois de développement et après une année depuis la dernière version, une nouvelle version du module PowerArubaCP est disponible !
Mais avant tout c’est quoi PowerArubaCP ?
C’est un module PowerShell qui utilise l’API REST de ClearPass Policy Manager d’Aruba ! ClearPass est le super serveur RADIUS et gestion des invités d’Aruba/HPE. Il permet l’authentification en 802.1x/MAC/Web des équipements filaires et/ou WiFi !
Vu que PowerShell est compatible Windows / Linux / macOS, ce module aussi ! Et il y a été testé et validé sur les 3 plateformes.
Mais revenons à notre module !
En premier lieu, il faut installer le module.
Accédez à l’invité de commande PowerShell.
Install-Module PowerArubaCP
Untrusted repository
You are installing the modules from an untrusted repository. If you trust this repository, change its InstallationPolicy value by running the Set-PSRepository cmdlet. Are you sure you want to install the modules from 'PSGallery'?
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"): Y
Cela va directement télécharger le module depuis PSGallery, ou simplement mettre à jour celui-ci si vous avez déjà une précédente version.
Update-Module PowerArubaCP
Pour commencer, il faut se connecter. Le module supporte pour le moment 2 méthodes de connexion : token ou client_id/secret.
Le plus simple est d’utiliser la méthode token. Pour cela dans le menu API, on crée un nouveau API Client et on génère le token
Plus d’information dans la documentation officielle !
On se connecte
Connect-ArubaCP 192.0.2.1 -token 70680f1d19f86110800d5d5cb4414fbde7be12ae
Name Value
---- -----
token 70680f1d19f86110800d5d5cb4414fbde7be12ae
invokeParams {DisableKeepAlive, SkipCertificateCheck}
server 192.0.2.1
port 443
version 6.10.0
On peut maintenant interroger le ClearPass
Sa version
Get-ArubaCPCPPMVersion
app_major_version : 6
app_minor_version : 10
app_service_release : 0
app_build_number : 180076
hardware_version : CLABV
fips_enabled : False
cc_enabled : False
eval_license : True
cloud_mode : False
La liste des services
Get-ArubaCPService | Format-Table
id name type template enabled order_no _links
-- ---- ---- -------- ------- -------- ------
1 [Policy Manager Admin Network Login Service] TACACS TACACS+ Enforcement True 1 @{self=}
2 [AirGroup Authorization Service] RADIUS RADIUS Enforcement ( Generic ) True 2 @{self=}
10 [Aruba Device Access Service] TACACS TACACS+ Enforcement True 3 @{self=}
11 [Guest Operator Logins] Application Aruba Application Authentication False 4 @{self=}
12 [Insight Operator Logins] Application Aruba Application Authentication True 5 @{self=}
13 [Device Registration Disconnect] WEBAUTH Web-based Authentication True 6 @{self=}
L’ensemble des commandes sont disponibles via Get-Command -Module PowerArubaCP ou encore sur le GitHub du projet
Nouveauté de la version 0.5.0
Voilà quelques nouveautés de la version 0.5.0 qui viens d’être publiée:
Device Network Group
A l’origine, une demande / besoin d’un client concernant l’ajout d’un grand nombre de Network Device (NAS/NAD) dans des groupes (Network Device Group)
Les versions précédentes supportaient déjà les Network Device (une des premières fonctions implémentées!)
Ajout d’un équipement:
Add-ArubaCPNetworkDevice -name SW1 -ip_address 192.0.2.1 -radius_secret MySecurePassword -vendor Aruba -description "Add by PowerArubaCP"
id : 3097
name : SW1
description : Add by PowerArubaCP
ip_address : 192.0.2.1
radius_secret :
tacacs_secret :
vendor_name : Aruba
coa_capable : False
coa_port : 3799
attributes :
_links : @{self=}
d’un deuxieme
Add-ArubaCPNetworkDevice -name SW2 -ip_address 192.0.2.2 -radius_secret MySecurePassword -vendor Aruba -description "Add by PowerArubaCP"
id : 3098
name : SW1
description : Add by PowerArubaCP
ip_address : 192.0.2.2
radius_secret :
tacacs_secret :
vendor_name : Aruba
coa_capable : False
coa_port : 3799
attributes :
_links : @{self=}
Maintenant il est aussi possible d’ajouter les équipements dans un groupe.
Add-ArubaCPNetworkDeviceGroup -name "My SW Group" -list_ip 192.0.2.1
id : 3044
name : My SW Group
group_format : list
value : 192.0.2.1
_links : @{self=}
On peut ajouter et supprimer facilement des équipements dans le groupe
Get-ArubaCPNetworkDeviceGroup "My SW Group" | Add-ArubaCPNetworkDeviceGroupMember -list_ip 192.0.2.2
id : 3044
name : My SW Group
group_format : list
value : 192.0.2.1, 192.0.2.2
_links : @{self=}
Get-ArubaCPNetworkDeviceGroup "My SW Group" | Remove-ArubaCPNetworkDeviceGroupMember -list_ip 192.0.2.1
id : 3044
name : My SW Group
group_format : list
value : 192.0.2.2
_links : @{self=}
Device fingerprint
C’est une des nouveautés de CPPM 6.9! Le moteur Fingerprint est accessible en API.
Il était possible avant d’utiliser l’API EndPoint qui permet de spécifier le statuts ou encore les attributs d’un endpoint (adresse mac).
Get-ArubaCPEndpoint -mac_address b813d87d7cb3
id : 3042
mac_address : b813d87d7cb3
status : Unknown
attributes :
_links : @{self=}
mais il n’était pas possible de spécifier l’hostname, l’adresse IP et la catégorisation !
C’est maintenant possible
# Ajout Device Fingerprint (Device Nom, Categorie et Famille)
Add-ArubaCPDeviceFingerprint -mac_address 000102030405 -device_category Server -device_family ClearPass -device_name ClearPass VM
SUCCESS _links
------- ------
Successfully posted device fingerprint to profiler @{self=}
# Ajout Device Fingerprint (IP Adresse)
Add-ArubaCPDeviceFingerprint -mac_address 000102030405 -ip 192.2.0.1
SUCCESS _links
------- ------
Successfully posted device fingerprint to profiler @{self=}
# Ajout Device Fingerprint (Nom)
Add-ArubaCPDeviceFingerprint -mac_address 000102030405 -hostname CPPM
SUCCESS _links
------- ------
Successfully posted device fingerprint to profiler @{self=}
#Pour recuperer le resultat final
Get-ArubaCPEndpoint -mac 000102030405 | Get-ArubaCPDeviceFingerprint
ip : 192.0.2.1
hostname : CPPM
updated_at : 1622904104
device_category : Server
device_name : ClearPass
device_family : ClearPass
mac : 000102030405
added_at : 1622903816
_links : @{self=}
Déploiement de VM
Un des défauts de CPPM, est l’installation de la VM. En effet, il n’y a pas de version vAPP avec les attributs pour spécifier les informations de VM (Nom, Adresse IP….)
Et l’installation prend un certain temps avec un certain nombre de fois où on attend la copie de fichier ou la configuration….
Pour les besoins de Poc / Test (des API), j’ai besoin de réinstaller assez souvent ClearPass.
Grâce à l’excellent script Set-VMKeystrokes de William LAM, j’ai pu automatisé l’installation et configuration initiale de ClearPass (et potentiellement mise à jour).
Il me faut maintenant uniquement environ 30min pour installer un Clearpass (et 45 minutes si je dois installer une mise à jour !)
Vous pouvez vous référer aux cmdlets suivantes pour réaliser la même chose ! J’aurai l’occasion de reparler bientôt du sujet avec une vidéo d’exemple !
Divers
Cela a été aussi l’occasion de moderniser le code !
Pour commencer, utilisation de ShouldProcess qui permet de demander une validation pour les Cmdlet type Set-XXX Ou Remove-XXX
Par exemple, en cas de suppression d’un Network Device:
Get-ArubaCPNetworkDevice SW1 | Remove-ArubaCPNetworkDevice
Confirm
Are you sure you want to perform this action?
Performing the operation "Remove Network device" on target "3154 (SW1)".
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): Y
On peut bypasser la confirmation en utilisant -confirm:$false
Get-ArubaCPNetworkDevice SW1 | Remove-ArubaCPNetworkDevice -confirm:$false
C’est la façon standart en PowerShell.
La dernière version avait été testé sur CPPM 6.8, il est sorti l’année dernière CPPM 6.9 qui a fait un changement au niveau des adresse MAC (CP-19010). Elle utilise toujours le tiret (par exemple 00–01–02–03–04–05) pour l’affichage, j’ai donc été obligé de mettre à jour les tests pour supporter ce cas-là.
De plus, courant Mai est aussi sorti CPPM 6.10, il y a fallu apporter des correctifs mineurs suite à des changements dans l’api ! Merci au test automatiser de Pester !
A ce sujet, j’ai basculé l’ensemble des tests sous la version 5(.1) de Pester, on a actuellement plus de 150 tests dans le projet.
A bientot pour des nouvelles explications sur un nouveau module PowerShell ou sur la mise à jour d’un module !