"policy":[]

このセクションはオプションです。 これにより、 IBM RADIUS サーバーから RADIUS クライアント (NAS) への Access-Accept 応答パケットへの属性の条件付き追加が可能になります。 また、Access-Request 許可要求の条件付き即時受け入れまたは拒否も許可します。 ポリシーは定義順に評価されます。

フォーマット

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

"match":{}
このサブセクションはオプションです。このサブセクションが存在しない場合、ポリシーはすべての Access-Request パケットを突き合わせます。

このセクションの下には以下のサブ項目があります。

"client-ip":"192.168.0.129"
パケットを送信した RADIUS クライアント (NAS) のアドレスを突き合わせます。
"apply-before-authenticate":"false"
推奨されません。 デフォルトは false です。 true の場合は、ユーザー・パスワードまたは OTP の検証前にポリシーを突き合わせて適用します。 これは、「apply」:「before_mfa」に相当します。
"apply": "before-mfa" | "after-mfa-success" | "after-pwd-success" | "before-each-response"
このオプションは、非推奨の "apply-before-authenticate" 構成オプションよりも優先されます。
"before-mfa"
ポリシーは、 1FA (パスワード) または 2FAを検証する前に、これに一致します。
"after-mfa-success"
2FA が正常に検証された後、ポリシーはこれに一致します。
"after-pwd-success"
ポリシーは、 1FA (パスワード) の検証が成功した後、 2FAの前に一致します。
"before-each-response"
ポリシーは、各応答を送信する前にこれに一致します。
ポリシーでの "apply" の使用例を以下に示します。
  1. 「risky」という名前のグループ内の任意のユーザーに対して 2FA をバイパスするには、以下のようにします。
     {
                "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. クライアント /NAS と RADIUS サーバーの間で RADIUS プロキシーをサポートするには、RADIUS サーバーへの着信 PROXY-STATE 属性を RADIUS プロキシーに返す必要があります。
     {
                "name":"proxy_policy",
                "match":{
                    "apply": "before-each-response"
                },
                "return-attrs":[
                    {
                        "name":"Proxy-State",
                        "value":"{{reflect}}",
                        "value-type":"text"
                    }
                ],
                "action":"continue"
            } 
"attr":{}

このセクションでは、Access-Request の単一の属性値と突き合わせることができます。 このセクションの下には以下のサブ項目があります。

"compare":"="
デフォルトは「=」です。 この項目は、 "=" または "!="のいずれかでなければなりません。
"case-ignore":false
デフォルトは false です。 値は、バイトごとに RADIUS 属性値と比較されます。 ただし、"case-ignore" を true に設定した場合は例外です。 その場合は、大/小文字を区別せずに UTF-8 のストリング比較を行います。この設定は、"User-Name" 属性の値を比較する場合に便利です。
"regex":false
デフォルトは false です。 trueに設定すると、"value "が属性値にマッチしたときに拡張正規表現として解釈されます。 例えば、以下のとおりです。
"value": ".*ibm\\.com"
は、testibm.comのようにibm.comで終わる値にマッチします。 拡張正規表現の定義については、 https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html を参照してください
"name":"User-Name"

Access-Request の比較する属性。 この値は、ストリング (RADIUS 属性の名前など) または属性番号にすることができます。 例えば、 User-Name の番号は 1 です。 RADIUS 属性のリストについては、 IbmRadius.exe -attributes コマンドの出力を参照してください。

"value":"Administrator"
比較する属性値。 値の JSON 形式については、以下の "value-type" の表を参照してください。 属性のデフォルトの値の型は属性ごとに異なります。 コマンドの出力
"IbmRadius.exe
      -attributes"
それぞれの RADIUS 属性の値タイプを示します。
"value-type":"text"
“value” を RADIUS 属性値に変換する方法をオーバーライドします。 RADIUS 属性はそれぞれにデフォルトの値の型を持つため、デフォルトは RADIUS 属性によって異なります。 各 RADIUS 属性の値の型については、IbmRadius.exe -attributes コマンドの出力を参照してください。 このパラメーターを指定すると、型をオーバーライドして入力しやすくすることができます。 例えば、2 進のストリング属性にテキスト・ストリングを指定できます。
表 1. 価値マッピング
名前 JSON 値の形式 RADIUS の値
integer
  • number: 例: 1234。
  • string: 16 進数 (例: "0xa2b3ff")。
4 バイト (先頭が MSB)
enum
  • ストリング。属性に適した列挙名のストリングです。 例えば、「サービス・タイプ」属性の場合は "Login" です。 指定できる列挙値のストリングのリストについては、IbmRadius.exe -attributes コマンドの出力を参照してください。
  • number: 例: 5
4 バイト (先頭が MSB)
時刻
  • 数値。1970 年 1 月 1 日 00:00:00 UTC 以降の秒数
  • ストリング。"YYYYMMDDHHMMSS" UTC
4 バイト (先頭が MSB)
テキスト
  • ストリング。UTF-8 文字です
UTF-8 バイト列 (0x00 終端ではありません)
integer64
  • 数値。例: 12345
  • string: 16 進数 (例:"0xdeadbeaf" )
8 バイト (先頭が MSB)
ipv4addr
  • string: IPv4 フォーマットのストリング。例: ,"192.168.0.1"
4 バイト (ネットワーク順とし、先頭が MSB)
ipv6addr
  • ストリング: 例えば、 IPv6 フォーマットのストリング。 "192.168.0.fe80::df3c:99dd:8a4a:16f1"
8 バイト (ネットワーク順、先頭が MSB)

ストリング

ifid

ipv6prefix

ipv4prefix

tlv

vsa

extended

long_extended

evs

  • ストリング。Base64 エンコードの 2 進データ。
バイト列。
注: 各タイプの形式は異なります。RADIUS RFC を参照してください。
"user-group":{}
このセクションでは、ユーザーが属するグループのリストに対して 1 つのグループを突き合わせることができます。 このパラメーターは、 "apply-before-authenticate" == falseの場合にのみ使用できます。 このセクションの下には以下のサブ項目があります。
compare":"="

デフォルトは "=" です。 この項目は、 "=" または "!="のいずれかでなければなりません。

"name":"{{group-name}}"
"{{group-name}}" という名前のグループが、ユーザーのグループ・メンバーシップと照合されます。
"return-attrs":[]
これが存在しない場合、返される RADIUS パケットに属性は追加されません。 "return-attrs" が追加されるのは、ポリシー一致が true の場合のみです。
"return-attrs" 配列の各要素の形式は以下のとおりです。
{
  "name":"xxxx",
  "value":"xxxx",
  "value-type":"xxxx"
},
「name」、「value」、「value-type」の記述は、前の 「match」:{} > 「attr」:{} セクションで定義されています。 ただし例外として、"value" は以下のいずれかの属性にすることができます。
  • "{{group-name}}" : 複数回 (ユーザーが属するグループごとに 1 回ずつ) 属性を挿入します。
  • "{{group-list}}" : コンマで区切りの、ユーザーが属するすべてのグループを使って、1 回だけ属性を挿入します。
どちらの例外でも、 "value-type" は強制的に「text」になります。
"{{group-name:vsa:<vendorid>:<vendortype>}}" の「値」を使用して、各グループをベンダー固有の属性 (VSA) として追加できます。 デフォルトの VSA 値タイプのバイナリーは、フォーマット・ストリングがテキストとして解釈されるようにオーバーライドする必要があります。 <vendorid> を 10 進数としてベンダーの ID に置き換え、 <vendortype> を 10 進数としてベンダーの値タイプに置き換えます。 例えば、以下のとおりです。
     "return-attrs":[
        {
            "name": "Vendor-Specific",
            "value": "{{group-name:vsa:12356:1}}",
            "value-type": "text"
        }
     ],

「値」が "{{reflect}}" の場合、同じ名前の要求値が応答にコピーされます。 通常は、受信した Proxy-State 値を返すために使用されます。 また、この属性の "value-type": "text" 設定も指定します。

"action":"continue"
デフォルトは "continue" です。 "action" が適用されるのは、ポリシー一致が true の場合のみです。 "action" 項目は、以下の 3 つの値のうち、いずれかにすることができます。
  • "continue": 任意のものを追加 "return-attrs" し、処理を続行します。
  • "reject": 任意のものを追加 "return-attrs" し、RADIUS アクセス拒否パケットを送り返し、この RADIUS クライアント (NAS) 要求の処理を終了します。
  • "accept": 任意のものを追加 "return-attrs" し、RADIUS ACCESS-ACCEPT パケットを送り返し、この RADIUS クライアント (NAS) 要求の処理を終了します。