"정책": []

이 섹션은 선택사항입니다. 이를 통해 IBM RADIUS 서버에서 RADIUS 클라이언트(NAS)로 전송되는 Access-Accept 응답 패킷에 조건부로 속성을 추가할 수 있습니다. 또한 액세스 요청 승인 요청에 대해 조건부로 즉시 승인하거나 거부할 수 있습니다. 정책은 정의된 순서대로 평가됩니다.

형식

“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"가 설정된 경우입니다. 이 경우에는 "User-Name" 속성 값을 비교하는 데 유용할 수 있는, 대소문자를 구분하지 않는 UTF-8 문자열 비교가 수행됩니다.
"regex":false
기본값은 false.입니다. 이 옵션으로 true 설정하면, 속성 값과 일치할 때 "value"가 확장 정규 표현식으로 해석됩니다. 예를 들면 다음과 같습니다.
"value": ".*ibm\\.com"
ibm.com 끝나는 모든 값과 일치합니다(예: testibm.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을 보여줍니다.
"value-type":"text"
“value”가 RADIUS 속성 값으로 변환되는 방식을 대체합니다. 각각에는 고유한 기본 value-type이 있으므로 기본값은 RADIUS 속성에 따라 달라집니다. 각 RADIUS 속성의 value-type을 보려면 IbmRadius.exe -attributes 명령의 출력을 참조하십시오. 이 매개변수는 용이한 입력을 위해 유형을 대체할 수 있게 해 줍니다. 예를 들면, 텍스트 문자열을 2진 문자열 속성에 배치할 수 있습니다.
표 1. 값 매핑
이름 JSON 값 형식 RADIUS 값
integer
  • 숫자: 예를 들어, 1234.
  • "0xa2b3ff"문자열: 16진수, 예:.
4바이트, MSB 먼저
enum
  • 문자열: 속성에 적절한 enum 이름 문자열. 예를 들어, "Login" “Service-Type” 속성의 경우. 허용되는 enum 값 문자열의 목록은 IbmRadius.exe -attributes 명령의 출력을 참조하십시오.
  • 숫자: 예를 들어, 5.
4바이트, MSB 먼저
시간
  • 숫자: 1970-01-01 00:00:00 UTC 이후의 초
  • 문자열: "YYYYMMDDHHMMSS" UTC
4바이트, MSB 먼저
텍스트
  • 문자열: UTF-8 문자
0x00으로 끝나지 않는 UTF-8 바이트
integer64
  • 숫자: 예를 들면 12345
  • 문자열: 16진수, 예시."0xdeadbeaf"
8바이트, MSB 먼저
ipv4addr
  • 문자열: 예를 들어, 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 인코딩된 바이너리 데이터.
바이트.
참고: 각 유형의 형식은 서로 다르므로 RADIUS RFC를 참조하십시오.
"user-group":{}
이 섹션은 하나의 그룹을 사용자가 속한 그룹 목록에 대응시킬 수 있게 해 줍니다. "apply-before-authenticate" == false이 매개변수는 다음의 경우에만 사용할 수 있습니다. 이 섹션에는 다음 하위 항목이 있습니다.
compare":"="

기본값은 "=".입니다. "!="이 항목은 이거나 "=" 이어야 합니다.

"name":"{{group-name}}"
라는 이름의 "{{group-name}}" 그룹이 사용자의 그룹 멤버십과 대조됩니다.
"return-attrs":[]
이 항목이 없으면 반환되는 RADIUS 패킷에 속성이 추가되지 않습니다. "return-attrs"는 정책 일치 여부가 참인 경우에만 추가됩니다.
"return-attrs" 배열의 각 요소는 다음과 같이 형식화됩니다.
{
  "name":"xxxx",
  "value":"xxxx",
  "value-type":"xxxx"
},
"name", "value" 및 "value-type"에 대한 설명은 앞의 "match":{} > "attr":{} 섹션에 정의되어 있습니다. 유일한 예외는 "value"가 다음 속성 중 하나일 수 있다는 점입니다.
  • "{{group-name}}" : 사용자가 속한 각 그룹에 대해 속성을 여러 번 삽입합니다.
  • "{{group-list}}" : 사용자가 속한 모든 그룹(쉼표로 구분됨)에 속성을 한 번씩 추가합니다.
두 예외 모두에서 는 "value-type" 강제로 "text"로 변환됩니다.
"{{group-name:vsa:<vendorid>:<vendortype>}}" “값”을 사용하여 각 그룹을 공급업체별 속성(VSA)으로 추가할 수 있습니다. 서식 문자열이 텍스트로 해석되도록 하려면 바이너리 형식의 기본 VSA 값을 재정의해야 합니다. 를 공급업체 ID를 소수점으로 표기하여 <vendorid> 입력하고, 를 <vendortype> 공급업체의 값 유형을 소수점으로 표기하여 입력하십시오. 예를 들면 다음과 같습니다.
     "return-attrs":[
        {
            "name": "Vendor-Specific",
            "value": "{{group-name:vsa:12356:1}}",
            "value-type": "text"
        }
     ],

"value"는 "{{reflect}}" 동일한 이름의 요청 값을 응답으로 복사합니다. 일반적으로 수신된 Proxy-State 값을 반환하는 데 사용됩니다. 또한, 이 속성의 설정을 "value-type": "text" 지정하십시오.

"action":"continue"
기본값은 "continue".입니다. "action"은 정책 일치 여부가 참인 경우에만 적용됩니다. "action" 항목은 다음 세 값 중 하나일 수 있습니다.
  • "continue": 모든 "return-attrs"를 추가하며 처리가 계속됩니다.
  • "reject": 어떤 "return-attrs" 것이든 추가하고, RADIUS Access-Reject 패킷을 반환한 다음, 이 RADIUS 클라이언트(NAS) 요청에 대한 처리를 종료합니다.
  • "accept": 어떤 "return-attrs" 것이든 추가하고, RADIUS Access-Accept 패킷을 반환한 다음, 이 RADIUS 클라이언트(NAS) 요청에 대한 처리를 종료합니다.