« policy » : []

Cette section est facultative. Cela permet l'ajout conditionnel d'attributs au paquet de réponse « Access-Accept » envoyé par le serveur RADIUS de l' IBM aux clients RADIUS (NAS). Elle permet également l'acceptation ou le rejet immédiat et conditionnel d'une demande d'autorisation d'accès. Les règles sont évaluées dans l'ordre dans lequel elles sont définies.

Format

“policy”:[
  {
    “name”:”policy1”,
    “match”:{
      “client-ip”:”???”,
      “attr”:{
        “compare”:”??”,
        “name”:”???”,
         …
      },
      “user-group”:{
        “compare”:”??”,
        “name”: “???”
      },
      “apply-before-authenticate”:????
    },
    “return-attrs”:[
      {
        “name”:”???”,
        “value”:”???”,
        …
      },
      …
    ],
    “action”:”???”,
  },
  {
    “name”:”policy2”,
    …
  },
  …
]

Valeurs

"match":{}
Cette sous-section est facultative et si elle n'existe pas, la règle recherche tous les paquets Access-Request.

Cette section contient les sous-éléments suivants :

"client-ip":"192.168.0.129"
Correspond à l'adresse du client RADIUS (NAS) qui a envoyé le paquet.
"apply-before-authenticate":"false"
Obsolète. La valeur par défaut est false. Si la valeur est true, la règle est mise en correspondance et appliquée avant que le mot de passe de l'utilisateur ou le mot de passe à utilisation unique ne soit validé. Cela revient à définir « apply » sur « before_mfa ».
"apply": "before-mfa" | "after-mfa-success" | "after-pwd-success" | "before-each-response"
Cette option est préférable à l'option de configuration obsolète "apply-before-authenticate" .
"before-mfa"
La politique vérifie d'abord cette condition avant de valider l'adresse 1FA (mot de passe) ou 2FA.
"after-mfa-success"
La politique s'applique une fois que l'adresse 2FA a été validée avec succès.
"after-pwd-success"
La politique s'applique après une validation réussie de l' 1FA, avant l' 2FA.
"before-each-response"
La politique vérifie cette condition avant d'envoyer chaque réponse.
Voici quelques exemples d'utilisation de "apply" dans une politique :
  1. Pour désactiver la fonctionnalité « 2FA » pour tous les utilisateurs appartenant au groupe «risky» :
     {
                "name": "risk_policy",
                "match": {
                    "apply": "after-pwd-success",
                    "user-group": { "compare": "=", "name": "risky" }
                },
                "return-attrs":[
                    {
                        "name": "Reply-Message",
                        "value": "Success: Bypassed 2FA"
                    }
                ],
                "action": "accept"
            }, 
  2. Pour prendre en charge un proxy RADIUS entre le client/NAS et le serveur RADIUS, l'attribut Proxy-State reçu par le serveur RADIUS doit être renvoyé au proxy RADIUS :
     {
                "name":"proxy_policy",
                "match":{
                    "apply": "before-each-response"
                },
                "return-attrs":[
                    {
                        "name":"Proxy-State",
                        "value":"{{reflect}}",
                        "value-type":"text"
                    }
                ],
                "action":"continue"
            } 
"attr":{}

Cette section permet de mettre en correspondance une valeur d'attribut unique dans le paquet Access-Request. Cette section contient les sous-éléments suivants :

"compare":"="
La valeur par défaut est « = ». Cet élément doit être soit "=" soit "!=".
"case-ignore":false
La valeur par défaut est false. Les valeurs sont comparées octet par octet par rapport à la valeur de l'attribut RADIUS. Exception lorsque "case-ignore" a pour valeur true. Dans ce cas, une comparaison de chaîne de caractères UTF-8 sans distinction des minuscules et des majuscules est effectuée, ce qui peut être utile pour comparer la valeur de l'attribut "User-Name".
"regex":false
La valeur par défaut est false. Lorsqu'il est défini sur true , la « valeur » est interprétée comme une expression régulière étendue lors de la comparaison avec la valeur de l'attribut. Par exemple :
"value": ".*ibm\\.com"
correspond à toute valeur se terminant par ibm.com , comme par exemple testibm.com. Pour une définition des expressions régulières étendues, consultez https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html,
"name":"User-Name"

Attribut de comparaison dans le paquet Access-Request. Il peut s'agir d'une chaîne, comme le nom de l'attribut RADIUS, ou du numéro d'attribut. Par exemple, le nom d'utilisateur est associé au numéro 1. Consultez la sortie de la IbmRadius.exe -attributes commande pour obtenir la liste des attributs RADIUS.

"value":"Administrator"
Valeur d'attribut pour la comparaison. Reportez-vous à la table "value-type" ci-après pour le format JSON de la valeur. Le type de valeur par défaut de l'attribut dépend de l'attribut lui-même. La sortie de la commande
"IbmRadius.exe
      -attributes"
indique la valeur "value-type" de chaque attribut RADIUS.
"value-type":"text"
Remplace le mode de conversion de “value” en valeur d'attribut RADIUS. La valeur par défaut dépend de l'attribut RADIUS car chaque attribut possède sa propre valeur "value-type". Reportez-vous à la sortie de la commande IbmRadius.exe -attributes pour prendre connaissance de la valeur "value-type" de chaque attribut RADIUS. Ce paramètre permet le remplacement du type pour faciliter la saisie. Par exemple, une chaîne de texte peut être placée dans un attribut de chaîne binaire.
Tableau 1. Cartographie des valeurs
Nom Format de valeur JSON Valeur RADIUS
entier
  • nombre : par exemple, 1234.
  • chaîne : nombre hexadécimal, par exemple "0xa2b3ff".
4 octets, octet de poids fort en premier
enum
  • Chaîne : chaîne de nom d'énumération appropriée pour l'attribut. Par exemple, "Login" pour l'attribut « Service-Type ». Reportez-vous à la sortie de la commande IbmRadius.exe -attributes pour la liste des chaînes de valeur d'énumération admises.
  • nombre : par exemple, 5.
4 octets, octet de poids fort en premier
heure
  • Nombre : nombre de secondes depuis le 01-01-1970 à 00:00:00 TUC
  • Chaîne : "AAAAMMJJHHMMSS" TUC
4 octets, octet de poids fort en premier
texte
  • Chaîne : caractères UTF-8
Octets UTF-8 non terminés par 0x00
integer64
  • Nombre : par exemple, 12345
  • chaîne : nombre hexadécimal, par exemple."0xdeadbeaf"
8 octets, octet de poids fort en premier
ipv4addr
  • chaîne : une chaîne formatée de type « IPv4 », par exemple. ,"192.168.0.1"
4 octets, ordre réseau, octet de poids fort en premier
ipv6addr
  • chaîne : une chaîne formatée de type « IPv6 », par exemple. "192.168.0.fe80::df3c:99dd:8a4a:16f1"
8 octets, ordre réseau, octet de poids fort en premier

chaîne

ifid

ipv6prefix

ipv4prefix

tlv

vsa

extended

long_extended

evs

  • Chaîne : données binaires codées en Base64
Octets.
Remarque : le format varie selon le type; consultez les RFC RADIUS.
"user-group":{}
Cette section permet de rechercher un groupe unique dans la liste des groupes auxquels un utilisateur appartient. Ce paramètre ne peut être utilisé que si "apply-before-authenticate" == false. Cette section contient les sous-éléments suivants :
compare":"="

La valeur par défaut est "=". Cet élément doit être soit "=" soit "!=".

"name":"{{group-name}}"
Le groupe nommé "{{group-name}}" est comparé aux appartenances à des groupes de l'utilisateur.
"return-attrs":[]
Si ce paramètre n'est pas spécifié, aucun attribut n'est ajouté au paquet RADIUS renvoyé. Des attributs "return-attrs" ne sont ajoutés que si la correspondance de règle est true.
Chaque élément du tableau "return-attrs" est formaté :
{
  "name":"xxxx",
  "value":"xxxx",
  "value-type":"xxxx"
},
Les descriptions des éléments « name », « value » et « value-type » sont définies dans la section précédente « match »:{} > « attr »:{}. Exception : "value" peut être l'un des attributs suivants :
  • "{{group-name}}" : insérez l'attribut plusieurs fois en une seule fois pour chaque groupe auquel appartient l'utilisateur.
  • "{{group-list}}" : insérez l'attribut une seule fois avec tous les groupes auxquels l'utilisateur appartient, séparés par une virgule.
Dans les deux cas, le "value-type" est contraint d'afficher le « texte ».
Une « valeur » de "{{group-name:vsa:<vendorid>:<vendortype>}}" peut être utilisée pour ajouter chaque groupe en tant qu'attribut spécifique au fournisseur (VSA). Il faut remplacer le type de valeur par défaut « binaire » de VSA afin que la chaîne de formatage soit interprétée comme du texte. Remplacez <vendorid> par l'identifiant du fournisseur sous forme de nombre décimal et remplacez <vendortype> par le type de valeur du fournisseur sous forme de nombre décimal. Par exemple :
     "return-attrs":[
        {
            "name": "Vendor-Specific",
            "value": "{{group-name:vsa:12356:1}}",
            "value-type": "text"
        }
     ],

Une « valeur » de "{{reflect}}" copie la valeur de la requête portant le même nom dans la réponse. En général, cette méthode sert à renvoyer la valeur « Proxy-State » qui a été reçue. Veuillez également indiquer la "value-type": "text" valeur de cet attribut.

"action":"continue"
La valeur par défaut est "continue". "action" s'applique uniquement si la correspondance de règle est true. L'élément "action" peut avoir l'une des trois valeurs suivantes :
  • "continue": Ajoutez-en "return-attrs" si nécessaire et poursuivez le traitement.
  • "return-attrs" "reject": Ajouter n'importe quoi, renvoyer un paquet RADIUS « Access-Reject » et mettre fin au traitement de cette requête du client RADIUS (NAS).
  • "return-attrs" "accept": Ajouter tout élément nécessaire, renvoyer un paquet RADIUS « Access-Accept » et mettre fin au traitement de cette requête du client RADIUS (NAS).