SecretStore est un module Powershell permettant de facilement stocker et gérér des Credentials.
Dans l’exemple ci-dessous nous le mettons en place et l’utilisons pour demander, dans cet exemple, un token d’acces au cloud de l’EDR Crowdstrike.
NB : Le module SecretStore requiert l’installation du module SecretManagement
Comme tout module Powershell, si ils ne peut pas être directement téléchargé en ligne sur un repository avec la commande Install-Module, il est possible de le(s) récupérer sur Github ou encore sur Powershell Galery
(https://www.powershellgallery.com/packages/Microsoft.PowerShell.SecretStore)
(https://www.powershellgallery.com/packages/Microsoft.PowerShell.SecretManagement)
Une fois les module décompressé et stocké dans un des dossier contenant en standard des modules (ex : «C:\Program Files\WindowsPowerShell\Modules»)
NB : Si le module n’est pas stocké dans un chemin déclaré dans la variable $env:PSModulePath, son chemin complet devra être renseigné lors de l’import. Ceci peut être problématique aussi après l’import, dans le cadre de certaines commandes du module. Pour cela il est préférable qu’il soit stocké dans un chemin reconnu par la variable $env:PSModulePath
NB : Pour qu’un module soit correctement reconnu par Powershell, le nom du dossier le contenant doit être identique au nom du fichier psd1 ou psm1 :
C:\Program Files\WindowsPowerShell\Modules \microsoft.powershell.secretstore
Dans une fenêtre powershell, exécuter Import-module en spécifiant le chemin d’accès aux fichiers indiqué ci-dessous
*****
Import-module microsoft.powershell.secretmanagement
Import-module microsoft.powershell.secretstore
*****
Par défaut le module SecretStore requiert un password pour accéder a chaque au coffre-fort de mot passe. La commande suivante permet de spécifier que l’authentification ne sera pas demandée , uniquement pour l’utilisation actuel (CurrentUser)
Set-SecretStoreConfiguration -Scope CurrentUser -Authentication None -Interaction None
La commande demande un password qui ne sera pas redemandé
La commande suivante permet de créer le coffre-fort (vault). Indiquer un nom explicite pour l’usage de ce coffre. (La commande requiert d’indiquer le module SecretStore)
Register-SecretVault -ModuleName microsoft.powershell.secretstore -Name MyVault
A présent que le coffre est créé, nous allons y stocker les informations requise, dans cet exemple, pour récupérer un token Crowdstrike.
Dans une variable de type hashtable ($ApiClient) On renseigne le Client Id, Le Client Secret, et le Hostname (url de l’api). On ‘range’ ($ApiClient) dans le coffre MYVault. (Set-secret)
$ApiClient = @{
ClientId = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
ClientSecret = ' xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
Hostname = 'https://api.eu-1.crowdstrike.com'
}
Set-Secret -Name MyApiClient -Secret $ApiClient -Vault MyVault
On peut tester a présent que le credential peut être récupéré :
Get-Secret -Name MyApiClient -Vault MyVault -AsPlainText
Et dans notre exemple, on peut maintenant récupérer notre token Crowdstrike
Get-Secret -Name MyApiClient -Vault MyVault -AsPlainText | ForEach-Object { Request-FalconToken @_ }
Notre token doit etre valable
$(Test-FalconToken).token
Les cmdlets du module PSFalcon peuvent maintenant être exécutées, par exemple :
Get-FalconHost -All -Detailed
NB : Les modules powershell SecretStore et SecretManagement peuvent même etre supprimé (Remove-Module). Le coffre crée sera toujours accessible par le compte l’ayant crée.