Exemple : Packages paramétrés

Les packages paramétrés vous invitent à spécifier des valeurs pour les paramètres de ligne de commande lors du déploiement d’actions. Par exemple, lorsque vous déployez une action qui utilise le package Registry - Set Value (Registre - Valeur définie) fourni par Tanium, la page Action Deployment (Déploiement des actions)Deploy Action (Déployer une action) vous invite à saisir le registry Key Name (Nom de la clé de registre) ainsi que d’autres paramètres de valeur de la clé.

F : Figure 1 :  Package paramétré

Si vous configurez l’action pour qu’elle soit redéployée périodiquement, celle-ci devient une action planifiée. Lorsqu’une action planifiée est basée sur un package paramétré, la définition du package, y compris les valeurs substituées, est enregistrée dans un objet appelé package temporaire. Sur le endpoint, le Tanium Client exécute le package temporaire lorsqu’il dispose d’une directive pour exécuter l’action planifiée qui l’appelle. Une action planifiée continue d’utiliser le package temporaire même si le package sur lequel elle a été basée est mis à jour. Par conséquent, si un package est mis à jour et que vous souhaitez que l’action planifiée utilise le code mis à jour, vous devez recréer l’action planifiée.

Paramètres de script de package et de ligne de commande

Lorsque vous configurez un package paramétré (reportez-vous à la section Créer un package), le champ Command (Commande) spécifie un script. Les paramètres qui sont codés dans le script et l’ordre dans lequel les valeurs sont spécifiées pendant le déploiement des actions sont alignés en fonction de la position, et non pas en fonction du numéro. Dans l’exemple suivant, les paramètres de script sont numérotés de 0 à 4.

F : Figure 2 :   Paramètres de script set-value.vbs

Les paramètres de ligne de commande sont numérotés de $1 à $5.

F : Figure 3 :  Paramètre de ligne de commande

Le serveur Tanium TaaS permet d’encoder les données de paramètres avant de les transmettre au script sous-jacent et les données doivent comporter un décodage UTF-8 avant leur utilisation. Le script VirtualBox pour l’exemple Registry - Set Value (Registre - Valeur définie) dans la F : Figure 2 utilise un @include au script i18n/UTF8Decode.vbs. Ce script garantit que l’entrée utilisateur dans le formulaire de la console Tanium est correctement encodée lors de sa transmission vers le script du package.

’- Begin file: i18n/UTF8Decode.vbs
'========================================
’ UTF8Decode
'========================================
’ Used to convert the UTF-8 style parameters passed from 
’ the server to sensors in sensor parameters.
’ This function should be used to safely pass non english input to sensors.
'-----
'-----
Function UTF8Decode(str)
    Dim arraylist(), strLen, i, sT, val, depth, sR
    Dim arraysize
    arraysize = 0
    strLen = Len(str)
    for i = 1 to strLen
        sT = mid(str, i, 1)
        if sT = "%" then
            if i + 2 <= strLen then
                Redim Preserve arraylist(arraysize + 1)
                arraylist(arraysize) = cbyte("&H" & mid(str, i + 1, 2))
                arraysize = arraysize + 1
                i = i + 2
            end if
        else
            Redim Preserve arraylist(arraysize + 1)
            arraylist(arraysize) = asc(sT)
            arraysize = arraysize + 1
        end if
    next
    depth = 0
    for i = 0 to arraysize - 1
		Dim mybyte
        mybyte = arraylist(i)
        if mybyte and &h80 then
            if (mybyte and &h40) = 0 then
                if depth = 0 then
                    Err.Raise 5
                end if
                val = val * 2 ^ 6 + (mybyte and &h3f)
                depth = depth - 1
                if depth = 0 then
                    sR = sR & chrw(val)
                    val = 0
                end if
            elseif (mybyte and &h20) = 0 then
                if depth > 0 then Err.Raise 5
                val = mybyte and &h1f
                depth = 1
            elseif (mybyte and &h10) = 0 then
                if depth > 0 then Err.Raise 5
                val = mybyte and &h0f
                depth = 2
            else
                Err.Raise 5
            end if
        else
            if depth > 0 then Err.Raise 5
            sR = sR & chrw(mybyte)
        end if
    next
    if depth > 0 then Err.Raise 5
    UTF8Decode = sR
End Function
’- End file: i18n/UTF8Decode.vbs

Dans les scripts shell, vous pouvez utiliser une fonction similaire à ce qui suit pour décoder les données de paramètre :

#!/bin/sh

percent_decode() {
        local data=$(echo "$1" | sed ’s/%/\\\x/g’)
        /usr/bin/printf ’%b’ "$data"
}

myVariable=`percent_decode "||parameter_value||"`

L’utilitaire printf peut ne pas être disponible, ou peut ne pas fonctionner correctement sur toutes les plateformes Linux, MacOS et UNIX. Une mise en œuvre plus sûre mais moins élégante est :

#!/bin/sh 

brute_force_percent_decode() {
        # decode everything between 0x20-0x7E except:
        #0 1 2 3 4 5 6 7 8 9 (0x30-0x39)
        #A B C D E F G H I J K L M N O P Q R S T U V W X Y Z (0x41-0x5A)
        #a b c d e f g h i j k l m n o p q r s t u v w x y z (0x61-0x7A)
        echo "$1" | sed -e ’s/%20/ /g’ \
        -e ’s/%21/!/g’ \
        -e ’s/%22/"/g’ \
        -e ’s/%23/#/g’ \
        -e ’s/%24/$/g’ \
        -e ’s/%25/%/g’ \
        -e ’s/%26/\&/g’ \
        -e "s/%27/’/g" \
        -e ’s/%28/(/g’ \
        -e ’s/%29/)/g’ \
        -e ’s/%2[aA]/*/g’ \
        -e ’s/%2[bB]/+/g’ \
        -e ’s/%2[cC]/,/g’ \
        -e ’s/%2[dD]/-/g’ \
        -e ’s/%2[eE]/./g’ \
        -e ’s#%2[fF]#/#g’ \
        -e ’s/%3[aA]/:/g’ \
        -e ’s/%3[bB]/;/g’ \
        -e ’s/%3[cC]/</g’ \
        -e ’s/%3[dD]/=/g’ \
        -e ’s/%3[eE]/>/g’ \
        -e ’s/%3[fF]/?/g’ \
        -e ’s/%40/@/g’ \
        -e ’s/%5[bB]/[/g’ \
        -e ’s/%5[cC]/\\/g’ \
        -e ’s/%5[dD]/]/g’ \
        -e ’s/%5[eE]/^/g’ \
        -e ’s/%5[fF]/_/g’ \
        -e ’s/%60/`/g’ \
        -e ’s/%7[bB]/{/g’ \
        -e ’s/%7[cC]/|/g’ \
        -e ’s/%7[dD]/}/g’ \
        -e ’s/%7[eE]/-/g’
}

myVariable=`brute_force_percent_decode "||parameter_value||"`

Paramétrer les paramètres d’entrée

Les entrées de paramètre que vous spécifiez dans la configuration du package déterminent les paramètres que Tanium Console invite les utilisateurs à configurer lors du déploiement d’une action qui utilise le package. Ajoutez un paramètre à la fois. La première que vous ajoutez correspond à la variable de ligne de commande $1, la seconde correspond à la variable $2, etc.

F : Figure 4 :  Paramétrer les paramètres d’entrée

Vous pouvez sélectionner et faire glisser pour réorganiser les éléments dans la liste Parameter Inputs (Entrées de paramètre) qui apparaît dans le menu de navigation sur le côté gauche du formulaire. Assurez-vous que l’ordre final est aligné avec les paramètres numérotés dans la commande.

Le widget le plus courant pour l’entrée utilisateur est une zone de texte, mais vous pouvez sélectionner l’une des options suivantes :

  • Case à cocher : L’utilisateur active un paramètre en cochant une case. La valeur 0 ou 1 est saisie dans la variable. Retourne 1 si coché et 0 si non coché.
  • Date, Date et heure, Plage de dates/heures : L’utilisateur sélectionne une date et une heure ou une plage. Le format d’horodatage est Epoch en millisecondes. Pour une plage, l’utilisateur spécifie deux dates-heures séparées par un Pipe.
  • Liste déroulante : L’utilisateur sélectionne une seule option dans une liste.
  • Liste : L’utilisateur sélectionne une ou plusieurs valeurs. Plusieurs valeurs sont séparées par un Pipe.
  • Numérique : L’utilisateur entre un nombre. L’entrée peut être contrôlée avec un minimum et des maximums. Vous pouvez spécifier une taille d’incrément pour exiger que l’entrée soit divisible par la valeur spécifiée. L’intervalle d’instantané correspond à la quantité par laquelle un nombre augmente ou diminue en appuyant sur le bouton haut ou bas respectivement. La valeur Step Size (Taille d’incrément) doit être un multiple de la valeur Snap Interval (Intervalle d’instantané), sauf si l’intervalle d’instantané est égal à 0. Le nombre sélectionné par l’utilisateur est entré dans la variable.
  • Intervalle numérique : L’utilisateur sélectionne un nombre et un élément dans une liste. L’élément de la liste a une valeur numérique. La valeur saisie dans la variable est le résultat de la multiplication. Par exemple, si un utilisateur sélectionne 2 et sélectionne Haut (avec une valeur Haut de 3), la valeur est 6 dans la variable.
  • Séparateur : Un séparateur est un moyen graphique de séparer les sections du formulaire des entrées utilisateur.
  • Zone de texte : L’utilisateur saisit une grande quantité de texte. Le texte est entré dans la variable.
  • Entrée de texte : L’utilisateur saisit une entrée de texte. Les entrées autorisées peuvent être contrôlées avec des expressions régulières. L’entrée utilisateur est entrée dans la variable.
  • Heure : L’utilisateur sélectionne une heure dans une liste déroulante. L’entrée peut être soumise à des restrictions.

La plupart des types de paramètres fournissent des Options (Options) pour spécifier des valeurs en lecture seule qui aident les utilisateurs à comprendre comment configurer les paramètres lors du déploiement d’une action. L’exemple suivant montre les valeurs en lecture seule que vous pouvez spécifier pour Text Input (Entrée de texte). La section Preview (Aperçu) montre comment les paramètres s’affichent pour les utilisateurs qui déploient une action utilisant le package.

F : Figure 5 :  Options de paramètre
Valeurs en lecture seule

Notez que le contenu Provide Help Text (Fournir du texte d’aide) apparaît sous forme d’infobulle lorsqu’un utilisateur survole les informations Informations :

F : Figure 6 :  Fournir du texte d’aide
Fournir du texte d’aide