목차/07. Identity Source — RADIUS·API·Remote Access

07Identity Source — RADIUS·API·Remote AccessIdentity Source — RADIUS·API·Remote Access

Browser-Based Authentication·AD Query 외에도, 환경에 맞춰 쓰는 신원 소스가 더 있습니다. 이 장은 RADIUS Accounting, Identity Awareness API, Remote Access, 그리고 Infinity Identity 연동 을 차례로 다루고, 마지막에 이 신원들이 Application Control과 어떻게 맞물려 로그에 사용자 이름을 드러내는지, 그리고 환경별로 어떤 소스를 골라야 하는지까지 빠짐없이 정리합니다. 원문이 표·CLI·JSON 예제로 나열한 내용은 그대로 담되, 왜 그렇게 쓰는지를 함께 풀어 둡니다.

RADIUS Accounting

RADIUS Accounting인증을 RADIUS 서버가 처리하는 환경 에 딱 맞는 신원 소스입니다. RADIUS 회계 클라이언트(RADIUS Accounting Client)가 보내는 회계 요청(Accounting Request)에서 사용자·컴퓨터 신원을 직접 취득 하고, 그 정보를 단서 삼아 LDAP 서버에서 사용자·기기의 그룹 정보를 조회 해 방화벽 규칙의 Access Role 권한을 적용하는 방식입니다.

설정의 큰 그림은 두 가지입니다. 하나는 RADIUS 클라이언트가 게이트웨이로 회계 요청을 보내도록 만드는 것이고, 다른 하나는 게이트웨이에서 그 클라이언트에게 접근 권한과 사전 공유 비밀(shared secret)을 부여 하는 것입니다. 설정은 모두 SmartConsole의 RADIUS Accounting Settings 창에서 합니다 — Check Point Gateway 창 > Identity Awareness 페이지에서 RADIUS Accounting > Settings를 클릭해 엽니다.

Security Gateway에서 RADIUS Accounting 켜기

게이트웨이가 RADIUS Accounting 서버로 동작하려면 먼저 기능을 켜야 합니다.

  1. SmartConsole의 Gateways & Servers 뷰에서 대상 Security Gateway를 엽니다.
  2. General Properties 페이지에서 Identity Awareness가 켜져 있는지 확인합니다.
  3. Identity Awareness 페이지에서 RADIUS Accounting 을 선택합니다.

RADIUS Client Access Permissions — 어느 인터페이스로 받을지

게이트웨이 인터페이스는 RADIUS Accounting 클라이언트의 연결을 받도록 허가 되어 있어야 합니다.

  1. RADIUS Client Access Permissions 섹션에서 Edit를 클릭합니다.
  2. 연결을 받을 인터페이스를 고릅니다.
옵션의미
All Interfaces게이트웨이의 모든 인터페이스 가 RADIUS 클라이언트 연결을 받습니다(기본값).
Internal Interfaces명시적으로 정의된 내부 인터페이스 만 연결을 받습니다.
→ Including undefined internal interfaces추가로, IP가 정의되지 않은 내부 인터페이스 의 연결도 받습니다.
→ Including DMZ internal interfaces추가로, DMZ에 있는 클라이언트 의 연결도 받습니다.
Firewall Policy방화벽 정책이 허용하는 인터페이스 연결만 받습니다.
  1. RADIUS 서버 포트를 입력하거나 선택합니다(기본값 1813).

Authorized RADIUS Clients — 허가된 클라이언트와 공유 비밀

게이트웨이는 허가된(authorized) RADIUS Accounting 클라이언트의 회계 요청만 받아들입니다. RADIUS Accounting 클라이언트는 RADIUS 클라이언트 소프트웨어가 설치된 호스트입니다.

  1. RADIUS Accounting 창의 Authorized RADIUS Clients 섹션에서 + 아이콘을 클릭해 목록에서 클라이언트를 선택합니다.
    • New 를 누르면 RADIUS Accounting 클라이언트용 새 호스트 객체를 만들 수 있고, 만든 호스트는 자동으로 선택됩니다.
    • 목록에서 클라이언트를 빼려면 [ - ] 아이콘을 누릅니다.
  2. Generate 를 눌러 클라이언트 인증용 강력한 사전 공유 비밀(shared secret) 을 만듭니다. 이 비밀은 목록의 모든 호스트 객체에 공통으로 적용됩니다.

공유 비밀은 직접 손으로 입력해도 됩니다. 또한 클라이언트를 추가하거나 제거할 때마다 새 공유 비밀을 다시 만들 필요는 없 습니다.

RADIUS Message Attribute Indices — 어느 속성에서 신원을 읽을지

RADIUS Accounting 메시지에는 연결에 관한 신원·인증·관리 정보가 들어 있고, 이 정보는 패킷의 미리 정의된 속성(attribute) 에 담깁니다. Message Attributes Indices 섹션은 Identity Awareness가 어느 속성에서 신원 정보를 읽을지 알려 주는 곳입니다.

읽어 오는 RADIUS 속성
Device nameRADIUS device-name 속성
User nameRADIUS user-name 속성
IP AddressRADIUS IP address 속성

각 값마다 메시지 속성을 하나씩 고릅니다. 대부분의 구성에서는 기본 속성 그대로가 정확 합니다.

메시지 속성을 설정하는 절차는 이렇습니다.

  1. 각 index 필드마다 목록에서 메시지 속성을 고릅니다.
  2. Vendor-Specific (26) 속성을 쓴다면, 해당하는 sub-index 값을 함께 고릅니다.

Session Timeout과 LDAP Servers

세션 타임아웃RADIUS Accounting 클라이언트로부터 Accounting Start나 Interim-Update 메시지를 받지 못한 채 사용자 세션이 열려 있을 수 있는 최대 시간 입니다. 분 단위로 값을 입력하거나 선택합니다(기본값 720분).

게이트웨이가 RADIUS Accounting 요청을 받을 때 사용자·기기 정보를 어느 LDAP Account Unit에서 찾을지 도 지정할 수 있습니다(LDAP Account Unit은 SmartConsole에서 구성합니다).

  1. LDAP Account Units 제목 아래의 Settings 버튼을 클릭합니다.
  2. LDAP Account Units 창에서 다음 중 하나를 고릅니다.
    • Any — 정의된 모든 LDAP Account Unit 을 검색합니다.
    • Specific지정한 LDAP Account Unit만 검색합니다. + 로 추가하고 [ - ] 로 제거합니다.
  3. Specific 을 골랐다면, 녹색 [+] 아이콘을 눌러 LDAP Account Unit을 하나 이상 선택합니다.

RADIUS Secondary IP와 Dual Stack 지원

RADIUS 서버는 주소마다 따로 메시지를 보내는 대신, 한 메시지에 두 개의 IP 주소 를 실어 보낼 수 있습니다. 이 기능을 켜면 한 RADIUS 메시지에서 두 IP를 뽑아 IP마다 하나씩 별도의 세션 을 만듭니다.

설정은 Expert mode의 CLI로 합니다.

  1. SSH 또는 콘솔로 Security Gateway에 접속합니다.
  2. Expert mode 로 들어갑니다.
  3. 다음을 실행합니다.
pdp radius ip set <attribute index>

여기서 <attribute index>보조(secondary) IP 주소 값이 들어 있는 RADIUS index 입니다(SmartConsole에서 설정하는 User IP index와 비슷한 개념).

다음은 Cisco-AVPair 를 설정하는 예입니다.

pdp radius ip set 26 -a 1 -c 9

RADIUS Attribute Parsing — 문자열에서 값만 뽑기

이 기능은 RADIUS 메시지 안의 문자열·텍스트 데이터를 파싱 합니다. 파서는 미리 정한 접두사(prefix)와 접미사(suffix) 사이에 있는 문자열 을 찾아냅니다. 예를 들어 메시지가 ###data~~@ 형태라면, prefix를 #, suffix를 @ 로 설정해 data 만 뽑을 수 있습니다.

pdp radius parser set <attribute index> [-p <prefix>] [-s <suffix>]

여기서 <attribute index>파싱이 필요한 값이 들어 있는 RADIUS index 이고, <prefix>·<suffix> 는 파싱 옵션입니다. 메시지가 <text1><prefix><text2><suffix><text3> 형태라면 파서는 <text2> 를 반환 합니다.

예시로, 메시지가 username=test; 이고 prefix가 username=, suffix가 ;(세미콜론)이면 파싱 결과는 test 입니다.

prefix만 또는 suffix만 지정해도 됩니다. 하나만 지정하면 그 하나를 기준으로만 잘라냅니다.

Receiving Groups from RADIUS Messages — 그룹 직접 읽기

이 기능을 쓰면 RADIUS 메시지에서 사용자·컴퓨터 그룹을 직접 읽어 그에 맞게 Access Role을 계산할 수 있습니다.

pdp radius group set -u <attribute index> -d <delimiter>
pdp radius group fetch on

여기서 <attribute index>그룹 값이 들어 있는 RADIUS index 이고, -u 는 사용자 그룹, -m 은 컴퓨터 그룹을 지정합니다. <delimiter> 는 한 메시지 안에 여러 그룹이 있을 때 그룹을 나누는 구분 문자 입니다.

예를 들어 사용자 그룹을 가져오려 하고 메시지가 "group1;group2;group3" 라면, 구분자를 ; 로 설정합니다.

pdp radius groups set -u <attribute index> -d ";"

Identity Awareness API (Identity Web API)

Identity Awareness API(Identity Web API)는 신원을 가장 유연하게 만들고 다루는 방법 입니다. SSL 위에서 REST 프로토콜 을 쓰며, 요청·응답은 모두 HTTP와 JSON 형식 입니다. 표준 소스로는 잡기 어려운 신원을 외부 시스템과 연동해 직접 주입 할 때 유용합니다.

Identity Web API 설정하기

  1. 왼쪽 탐색 패널에서 Gateways & Servers 를 클릭합니다.
  2. Security Gateway 또는 Cluster 객체를 엽니다.
  3. 왼쪽 트리에서 Identity Awareness 를 클릭합니다.
  4. Identity Sources 섹션에서 Identity Web API 를 선택하고 Settings 를 클릭합니다.
  5. Identity Web API Settings 창에서 다음을 구성합니다.

Client Access Permissions — 어느 인터페이스로 받을지

Web API 클라이언트의 연결을 받을 게이트웨이 인터페이스를 골라야 합니다. 선택지는 게이트웨이에 구성된 토폴로지에 따라 달라지며, Web API 클라이언트는 이 인터페이스에 연결된 네트워크를 거쳐야 게이트웨이에 닿을 수 있습니다.

  1. Client Access Permissions 섹션에서 Edit 를 클릭합니다.
  2. 인터페이스 옵션을 고릅니다.
    • Through all interfaces — 모든 인터페이스
    • Through internal interfaces — 내부 인터페이스
      • Including undefined internal interfaces — IP가 정의되지 않은 내부 인터페이스 포함
      • Including DMZ internal interfaces — DMZ 내부 인터페이스 포함
      • Including VPN Encrypted interfaces — 경로 기반 VPN 터널(VTI) 을 맺는 데 쓰는 인터페이스 포함
    • According to the Firewall policy — 누가 포털에 접근할 수 있는지 규칙이 있을 때 선택

Authorized Clients와 클라이언트별 비밀

게이트웨이는 허가된 Web API 클라이언트 컴퓨터의 연결만 받아들입니다.

  1. Authorized Clients 섹션에서 녹색 [+] 아이콘을 클릭해 목록에서 Web API 클라이언트를 선택합니다.
    • 새 호스트 객체를 만들려면 — Web API Settings 창과 게이트웨이 속성 창을 닫은 뒤, 상단 툴바의 Objects 메뉴 > More object types > Network Object > New Host 로 만들거나, 우측 상단의 Objects 탭 > New > Host 로 만듭니다.
    • 목록에서 클라이언트를 빼려면 클라이언트를 고르고 빨간 [-] 아이콘을 누릅니다.
  2. 선택한 클라이언트의 인증 비밀(client secret) 을 만듭니다. 목록에서 클라이언트를 고른 뒤 Generate 를 누르거나 직접 입력합니다.

Authentication Settings — 어디서 사용자를 찾을지

Web API Settings 창의 Authentication Settings 섹션에서 Settings 를 클릭하면 LDAP Account Units 창이 열립니다. 여기서 사용자가 인증을 시도할 때 게이트웨이가 어느 디렉터리에서 사용자를 찾을지 정합니다.

  • Internal users — 구성된 내부 사용자 디렉터리
  • LDAP users — LDAP 사용자 디렉터리
    • All Gateway's Directories — 구성된 모든 LDAP 서버의 사용자
    • Specific — 직접 고른 LDAP 서버의 사용자
  • External user profiles — 외부 사용자 프로필을 가진 사용자 디렉터리

기본적으로 모든 User Directories 옵션이 선택되어 있습니다. 사용자가 특정 디렉터리에만 있고 인증 시 게이트웨이 성능을 최대화 하고 싶다면 한두 개만 골라도 됩니다. 다만 같은 사용자 이름이 여러 디렉터리에 있으면 사용자는 domain\username 형태로 로그인해야 합니다.

Identity Web API 명령과 URL 구조

Web API URL은 다음 구조를 가집니다.

https://<IP Address or FQDN of Gateway>/_IA_API/v1.0/<command>

예: https://gw.acme.com/_IA_API/v1.0/add-identity

요청 본문의 JSON은 단순한 평면(flat) 키-값 객체 입니다.

Versioning — 버전 호환성

뒤·앞 버전 호환을 위해 요청 URL에 API 버전을 넣을 수 있습니다.

URLAPI 버전최소 게이트웨이 버전
https://<GW_IP_or_FQDN>/_IA_API/idasdk/<command>1.0R80.10
https://<GW_IP_or_FQDN>/_IA_API/v1.0/<command>1.0R80.10
https://<GW_IP_or_FQDN>/_IA_API/<command>LatestR80.10

지원 명령은 셋입니다 — add-identity(IP를 사용자·컴퓨터에 일정 시간 연결), delete-identity(IP/범위/서브넷에 매칭되는 세션 취소), show-identity(IP에 연결된 신원 조회) 입니다.

Add Identity (v1.0)

지정한 IP 주소에 새 Identity Awareness 연결(association)을 생성 합니다.

POST https://<IP Address or FQDN of Gateway>/_IA_API/v1.0/add-identity
파라미터타입설명기본값
shared-secretString공유 비밀N/A
ip-addressString (IP)연결할 IP. IPv4 또는 IPv6 중 하나(둘 다는 불가)N/A
userString사용자 이름빈 문자열
machineString컴퓨터 이름빈 문자열
domainString도메인 이름빈 문자열
session-timeoutInteger이 연결의 타임아웃(초)43200 (12시간)
fetch-user-groupsBoolean (0/1)SmartConsole에 정의된 디렉터리에서 사용자 그룹을 가져올지1
fetch-machine-groupsBoolean (0/1)디렉터리에서 컴퓨터 그룹을 가져올지1
user-groupsArray of strings사용자가 속한 그룹 목록(그룹을 직접 가져오지 않을 때)빈 배열
machine-groupsArray of strings컴퓨터가 속한 그룹 목록(그룹을 직접 가져오지 않을 때)빈 배열
calculate-rolesBoolean (0/1)Access Role을 계산할지1
rolesArray of strings이 신원에 부여할 역할 목록(역할을 계산하지 않을 때)빈 배열
machine-osString호스트 운영체제. 예: Windows 7빈 문자열
host-typeString호스트 기기 유형. 예: Apple iOS device빈 문자열

응답 필드

파라미터타입설명
ipv6-addressString (IP)생성된 IPv6 신원
ipv4-addressString (IP)생성된 IPv4 신원
messageString명령 결과를 설명하는 텍스트

Add Identity 주의사항

  • 요청에는 사용자 정보, 컴퓨터 정보, 또는 둘 다 가 들어가야 합니다. shared-secretip-address필수 입니다.
  • user·domain·그룹 이름 같은 문자열 속성에는 중괄호 { }, 대괄호 [ ], 꺾쇠 < > 를 넣으면 안 됩니다. 이 문자가 들어 있는 요청은 실패합니다.
  • fetch-user-groupsfetch-machine-groups 를 1로 두면 calculate-roles 도 반드시 1 로 두어야 합니다. 그러지 않으면 Access Role이 할당되지 않고 요청이 실패합니다.
  • fetch-user-groups·fetch-machine-groups 를 1로 두면 사용자 인가가 실패할 수도 있습니다(예: Account Unit에서 사용자를 못 찾는 경우). 게이트웨이가 인가 절차를 끝내기 전에 응답을 보내므로, 성공 응답이 곧 신원 생성 성공을 뜻하지는 않 습니다.
  • 운영체제·호스트 유형을 안다면 machine-os·host-type 에 넣어 두세요. 감사 정보가 풍부해지며 시행(enforcement)에는 해를 주지 않 습니다.
  • Access Role 생성 도구로 만든 AD 사용자·컴퓨터 그룹에는 특수 접두사 를 붙입니다.
    • 그룹 접두사 ad_group_
    • 사용자 접두사 ad_user_
    • 컴퓨터 접두사 ad_machine_
    • 예: AD 사용자 그룹 MyGroupad_group_MyGroup, 컴퓨터 그룹 MyMachinePCad_machine_MyMachinePC 가 됩니다.

Add Identity 예제

예제 1 — 사용자 신원 생성을 위한 최소 요청

POST https://gw.acme.com/_IA_API/v1.0/add-identity
{
 "shared-secret":"****",
 "ip-address":"1.2.3.5",
 "user":"mary"
}

응답:

 "ipv4-address":"1.2.3.5",
 "message":"Association sent to PDP."
}

예제 2 — 사용자 정의 그룹, 역할 계산

POST https://gw.acme.com/_IA_API/v1.0/add-identity
{
 "shared-secret":"****",
 "ip-address":"1.1.1.1",
 "user":"john",
 "machine":"",
 "domain":"cme.com",
 "user-groups":["MyUserGroup"],
 "roles":[],"timeout":4,
 "fetch-user-groups":0,
 "calculate-roles":1,
 "identity-source":"ACME API Client"
}

응답:

 "ipv4-address":"1.1.1.1",
 "message":"Association sent to PDP."
}

예제 3 — 사용자 정의 그룹·역할 + 상세 정보

POST https://gw.acme.com/_IA_API/v1.0/add-identity
{
 "shared-secret":"****",
 "user":"John",
 "machine":"Laptop_1234",
 "ip-address":"2.2.2.2",
 "identity-source":"ACME API Client",
 "machine-os":"Windows 10 (Build 1176)",
 "host-type":"Laptop",
 "fetch-user-groups":0,
 "fetch-machine-groups":0,
 "calculate-roles":0,
 "session-timeout":43200,
 "user-groups":["EnterpriseFinanceUsers","ad_user_JohnDoe"],
 "machine-groups":["EnterpriseLaptopMachines"],
 "roles":["FinanceUser","StandardLaptop"]
}

응답:

 "ipv4-address" : "2.2.2.2",
 "message" : "Association sent to PDP."
}

Delete Identity (v1.0)

하나의 IP, IP 범위, 서브넷, 또는 특정 사용자+IP 조합 에 대한 Identity Awareness 연결을 삭제합니다.

POST https://<IP Address or FQDN of Gateway>/_IA_API/v1.0/delete-identity
파라미터타입설명기본값
shared-secretString공유 비밀N/A
ip-addressString (IP)연결 IP. 단일 IP를 취소할 때 필요Empty
revoke-methodString취소 방식. 단일 IP 삭제 시 비워 둠. 그 외 허용 값: mask(서브넷 전체), range(범위 전체), user-name-and-ip(특정 사용자+IP)Empty
subnetString (IP)서브넷. revoke-methodmask일 때 필요Empty
subnet-maskString (IP)서브넷 마스크. mask일 때 필요Empty
ip-address-firstString (IP)범위의 첫 IP. range일 때 필요Empty
ip-address-lastString (IP)범위의 마지막 IP. range일 때 필요Empty
client-typeString지정한 신원 소스가 만든 연결만 삭제. 값이 없거나 any면 해당 IP의 모든 신원 삭제(아래 표 참고)Any
userString사용자 이름. revoke-methoduser-name-and-ip일 때 필요Empty

client-type에 쓸 수 있는 신원 소스 목록

Client type설명
any모든 신원 소스
captive-portalBrowser-Based Authentication
ida-agentIdentity Agents
vpnRemote Access
ad-queryActive Directory query
multihost-agentTerminal Servers (Multi-User Host (MUH) Agent)
radiusRADIUS Accounting
ida-apiIdentity Web API
identity-collectorIdentity Collector

응답 필드

파라미터타입설명
ipv6-addressString (IP)삭제된 IPv6 연결
ipv4-addressString (IP)삭제된 IPv4 연결
messageString결과 설명 텍스트
countUnsigned integer삭제된 신원 수

Delete Identity 예제

예제 1 — IP로 삭제:

POST https://gw.acme.com/_IA_API/1.0/delete-identity
{ "shared-secret":"****", "ip-address":"1.1.1.1" }
{ "count":"1", "ipv4-address":"1.1.1.1", "message":"Disassociation sent to PDP." }

예제 2 — IP 범위로 삭제:

POST https://gw.acme.com/_IA_API/v1.0/delete-identity
{
 "shared-secret":"****",
 "revoke-method":"range",
 "ip-address-first":"1.1.1.2",
 "ip-address-last":"1.1.1.3"
}
{ "count":"2", "message":"Total of 2 IPs disassociations will be processed." }

예제 3 — 서브넷으로 삭제:

POST https://gw.acme.com/_IA_API/idasdk/delete-identity
{
 "shared-secret":"****",
 "revoke-method":"mask",
 "subnet":"1.1.1.1",
 "subnet-mask":"255.255.255.0"
}
{ "count":"100", "message":"Total of 100 IPs disassociations will be processed." }

예제 4 — IP+사용자 이름으로 삭제:

POST https://gw.acme.com/_IA_API/idasdk/delete-identity
{
 "shared-secret":"****",
 "ipv4-address":"1.1.1.1",
 "revoke-method":"user-name-and-ip",
 "user":"USER_NAME"
}
{ "count":"2", "ipv4-address":"1.1.1.1", "message":"Disassociation sent to PDP." }

Query Identity (v1.0) — show-identity

주어진 IP의 Identity Awareness 연결을 조회 합니다.

POST https://<IP Address or FQDN of Gateway>/_IA_API/idasdk/show-identity
파라미터타입설명기본값
shared-secretString공유 비밀N/A
ip-addressString (IP)조회할 신원의 IPN/A

응답 필드

파라미터타입설명
ipv6-addressString (IP)조회된 IPv6 신원
ipv4-addressString (IP)조회된 IPv4 신원
messageString결과 설명 텍스트
usersArray이 IP의 모든 사용자 신원. 각 항목은 사용자 전체 이름(없으면 user name), 그룹 배열, 역할 배열, identity source 포함
machineString컴퓨터 이름(있으면)
machine-groupsArray컴퓨터 그룹 목록
combined-rolesArray이 IP의 모든 Access Role(감사·시행용)
machine-identity-sourceString머신 세션이 있으면 그 세션의 identity source

Query Identity 예제 요청

POST https://gw.acme.com/_IA_API/v1.0/show-identity
{ "shared-secret":"****", "ip-address":"1.1.1.1" }

응답 1 — 사용자 신원만 있을 때

"combined-roles":["All_Identified_Users","User_John"],
"domain":"cme.com",
"ipv4-address":"1.1.1.1",
"machine":"admin-pc@cme.com",
"message":"total 1 user records were found.",
"users":[
 {
  "groups":["All Users","ad_user_John_Smith"],
  "identity-source":"AD Query",
  "roles":["All_identified_Users","User_John"],
  "user":"JohnSmith"
 }
]
}

응답 2 — 사용자와 컴퓨터 신원이 함께 있을 때

"combined-roles":["Admin-PC_cme.com","All_Identified_Users","User_John"],
"domain":"cme.com",
"ipv4-address":"192.168.110.126",
"machine":"admin-pc@ad.ida",
"machine-groups":["ad_machine_ADMINPC","All Machines"],
"machine-identity-source":"Identity Awareness API (ACME API Client)",
"message":"total 1 user records were found.",
"users":[
 {
  "groups":["All Users","ad_user_John_Smith"],
  "identity-source":"Identity Awareness API (ACME API Client)",
  "roles":["Admin-PC_ad.ida","All_Identified_Users","User_John"],
  "user":"John Smith"
 }
]
}

응답 3 — 여러 사용자 신원이 있을 때 (한 IP에 George Black, John Smith 두 사용자가 잡힌 경우로, users 배열에 레코드가 둘 나옵니다.)

응답 4 — 신원을 못 찾았을 때

{ "ipv4-address" : "1.1.1.1", "message" : "total 0 user records were found." }

Bulk Commands (v1.0) — 여러 명령을 한 번에

한 요청으로 여러 명령 을 보낼 수 있습니다. requests 배열을 보내면 각 원소가 한 요청의 파라미터가 되고, 응답으로 돌아오는 responses 배열에는 요청과 같은 순서로 각 명령의 응답이 담깁니다.

예제 1 — 여러 연결 추가

 "shared-secret" : "****",
 "requests":[
  {"user":"linda","machine":"","ip-address":"1.1.18.1"},
  {"user":"james","ip-address":"1.1.18.2", "domain" : "cme.com"},
  {"user":"mary","machine":"","ip-address":"1.1.18.3"}
 ]
}

응답에는 세 건 모두 "Association sent to PDP." 가 차례로 돌아옵니다.

예제 2 — 일부가 잘못된 경우 — 두 번째 요청의 IP가 invalid 이면, 그 항목만 오류로 응답하고 나머지는 정상 처리 됩니다.

 "responses": [
  { "ipv4-address": "1.1.18.1", "message": "Association sent to PDP." },
  { "pre": "GENERIC_ERR_INVALID_PARAMETER", "message": "No valid IP was provided" },
  { "ipv4-address": "1.1.18.3", "message": "Association sent to PDP." }
 ]
}

예제 3 — 여러 신원 조회requests 배열에 IP만 넣어 한 번에 여러 IP의 신원을 조회하면, 각 IP의 사용자·그룹·역할·identity source가 responses 배열로 돌아옵니다.

Web API 문제 해결

Web API 문제는 보통 두 가지에서 비롯됩니다 — 잘못된 구성(예: 틀린 URL, 클라이언트 미허가)과 잘못된 명령 구문(예: 누락된 파라미터, 잘못된 값).

표준 요청의 경우: - HTTP 응답 코드 200 — Identity Awareness 서비스가 유효한 API 명령을 받았 다는 뜻 - HTTP 응답 코드 500 — 명령이 잘못되었거나, 내부 오류로 명령을 수행하지 못했다는 뜻

요청이 실패하면 JSON 응답 본문에 code 필드가 들어가고 message 필드에 설명이 담깁니다. message 필드는 절차의 성공 을, code 필드는 절차의 실패 를 알립니다. Bulk 요청은 HTTP 상태가 항상 200 이고, 각 요청마다 세분화된 오류 코드가 주어집니다.

상태와 응답

HTTP 상태API 응답(code)가능한 원인
N/AN/A응답 없음 — 보통 연결 문제. API 클라이언트가 게이트웨이에 닿는지, 게이트웨이가 트래픽을 버리지 않는지 확인
404N/A① IDA API 비활성화 ② API는 켜졌으나 클라이언트 미허가 ③ API 접근 설정이 클라이언트 네트워크를 허용 안 함 ④ 잘못·누락된 공유 비밀 ⑤ 잘못된 URL
500GENERIC_ERROR_INVALID_SYNTAXJSON 본문의 구문 오류(예: 마지막 파라미터 뒤 불필요한 쉼표)
500GENERIC_ERROR_INVALID_PARAMETER_NAME이 요청에 허용되지 않는 필드가 포함됨
500GENERIC_ERR_MISSING_REQUIRED_PARAMETERS필수 파라미터 누락
500GENERIC_ERR_INVALID_PARAMETER잘못된 파라미터 값·타입(예: 잘못된 IP)
500GENERIC_INTERNAL_ERROR게이트웨이 내부 오류 — Check Point Support에 문의

Remote Access

Remote Access 소스는 Office Mode로 동작하는 Mobile Access·IPsec VPN 클라이언트가 게이트웨이에 접속할 때 신원을 취득 합니다. 이를 쓰려면 같은 게이트웨이에 Identity Awareness와 IPsec VPN 블레이드를 함께 켜야 합니다. 상세는 Mobile Access·Remote Access VPN 관리자 가이드를 참고하세요.

설정은 간단합니다. Identity Awareness 게이트웨이 객체 속성 > Identity Awareness 페이지에서 Remote Access선택하면 켜지고, 해제하면 꺼집니다.

Infinity Identity 연동

Infinity Identity 는 Check Point 생태계 전반에서 통합된 신원 저장소(unified identity repository) 역할을 합니다. R82에서는 Identity Provider(IdP)를 중앙에서 한 번 구성 하면, Infinity Portal에 정의한 IdP를 Identity Awareness 블레이드가 켜진 여러 Security Gateway에서 재사용 할 수 있습니다.

동작 방식

다음 예는 Azure를 쓰지만, Infinity Portal이 지원하는 어떤 IdP에도 동일하게 적용됩니다.

  1. Azure에 정의된 사용자가 Amazon Web Services에 접근을 시도합니다.
  1. IdP를 통한 인증에 성공하면, 미리 정의한 규칙에 따라 사용자는 Amazon 접근 권한을 얻습니다.

사전 요구사항

  • 지원되는 클라우드 플랫폼 중 하나에 대한 접근 권한
  • 그룹을 만들고 사용자를 할당할 권한 을 가진, 해당 플랫폼의 앱(app)
  • Infinity Portal에 연결된 SmartConsole

지원 IdP

Microsoft ADFS, Microsoft Entra ID, Okta, RADIUS, OneLogin, Ping Identity, Google Workspace, Duo, 그리고 Generic SAML Server를 지원합니다.

중앙 집중식 Identity Provider 구성하기

시작 전에 SmartConsole, Infinity Portal, 그리고 IdP에 모두 로그인해 둡니다.

Step 1 — Identity Provider 정의

단계별 안내는 SSO Authentication Setup with Identity Provider 문서를 참고합니다.

Step 2 — SmartConsole과 연동

  1. SmartConsole을 열고 Security Management Server에 로그인합니다.
  2. Infinity Services > Get Started 를 클릭합니다.
  3. How to connect to the Infinity Portal 안내 창에서 Get Token 을 클릭합니다.
  4. Infinity Portal로 이동해 인증·계정을 선택하고, Security Management Server 데이터를 Infinity Portal과 공유하는 데 동의한 뒤 토큰을 복사 합니다.
  5. SmartConsole로 돌아와 토큰을 안내 창에 붙여넣고 Connect 를 클릭합니다.
  6. Security Management Server가 Infinity Portal에 연결될 때까지 기다립니다.
  7. Identity Provider 앱 카드에 R82 사용자용 Infinity Identity 앱 카드가 나타납니다.
  8. Infinity Portal에서 Security Management Server가 연결됐는지 확인합니다 — Connect 상태가 Active 로 표시됩니다.
  9. IdP 추가 단계를 따릅니다(SSO Authentication Setup with Identity Provider 참고).
  10. 연결 테스트를 실행하고, Identity Provider를 확인한 뒤 닫습니다.
  11. 이제 Infinity Portal에 정의한 Identity Provider가 SmartConsole에서 읽기 전용(read-only) 객체 로 보입니다.

Step 3 — SmartConsole에서 Identity Awareness 구성

  1. SmartConsole에서 IdP에 연결할 게이트웨이 객체를 열고 Identity Awareness 블레이드를 켭 니다.
  2. First Time Configuration Wizard 에서 Browser-Based Authentication > Next 를 선택합니다.
  3. I do not wish to configure an Active Directory at this time 를 선택하고 Next > Next > Finish 를 누릅니다.
  4. 탐색 트리에서 Identity Awareness 속성을 고르고 Browser-Based Authentication 설정을 엽니다.
  5. Authentication Settings 아래에서 Edit 를 선택합니다.
  6. Authentication MethodIdentity Provider 를 고르고, Infinity Portal에서 구성한 IdP(예: Central IdP)를 선택합니다.
  7. OK 를 누르고 다시 OK 를 눌러 저장합니다.
  8. Security Policies 뷰에서 테스트용 규칙을 만듭니다.
필드
Name규칙 이름(예: Central_IdP)
Source중앙 IdP(예: Azure)에 할당된 사용자 그룹을 담은 Access Role. Access Role은 IdP에 정의된 그룹·사용자를 가져옵니다
Destination*Any
Services & Applications해당하는 애플리케이션·사이트
ActionAccept. Enable Identity Captive Portal 체크박스도 반드시 선택
TrackLog 로 추적
  1. 세션 변경을 Publish하고 Install Policy > Install 을 클릭합니다.

이 방식은 Security Management 가이드의 Infinity Portal 연동에서 본 것처럼, 온프레미스 게이트웨이를 클라우드 서비스와 이어 신원 정보를 통합 하는 흐름과 같습니다.

Application Control에서 신원 얻기

Identity Awareness는 Application & URL Filtering 블레이드와 함께 쓰여 Security Gateway에 사용자 인식, 컴퓨터 인식, 애플리케이션 인식 을 더합니다. 둘은 이렇게 맞물립니다.

  • Application & URL Filtering이 켜진 Access Control Policy Layer에서, 규칙의 Source로 Identity Awareness Access Role 을 씁니다.
  • 모든 종류의 신원 소스 를 써서 애플리케이션에 접근하려는 사용자의 신원을 얻을 수 있습니다.
  • 로그와 이벤트에 사용자·IP 주소 접근과 그들이 쓴 애플리케이션 이 함께 표시됩니다.

시나리오 — Application Control 로그에서 사용자 식별

ACME 조직은 Identity Awareness로 나가는(outbound) 애플리케이션 트래픽을 모니터링 해 직원들이 무엇을 하는지 파악합니다. IT 관리자는 Application Control과 Identity Awareness를 켜고, 로그·이벤트에 신원 정보가 보이도록 합니다.

  • 로그를 보려면 — Logs & Events > Logs
  • 이벤트를 보려면 — Access Control > Logs & Events

이후 IT 부서는 Application & URL Filtering Layer에 규칙을 더해 특정 애플리케이션을 차단하거나 다르게 추적할 수 있습니다(R82 Quantum Security Gateway Guide 참고).

필요한 SmartConsole 구성

  1. Security Gateway에서 Application Control 블레이드를 켭니다. 이렇게 하면 알려진 애플리케이션의 트래픽을 허용하고 추적은 Log 로 두는 기본 규칙이 Application Control Rule Base에 추가됩니다.
  2. Security Gateway에서 Identity Awareness 를 켜고, 신원 소스 중 하나로 AD Query 를 선택합니다.
  3. Access Control Policy 를 설치합니다.

로그에서의 사용자 식별

애플리케이션 트래픽과 관련된 로그·이벤트에서 식별된 사용자의 데이터를 볼 수 있습니다. 로그 항목은 출발지 IP를 사용자 신원과 매핑 한 결과를 보여 주고, 여기에 Application Control 데이터도 함께 나타납니다.

신원 소스 고르기 — 환경별 권장 조합

신원 소스마다 보안·환경 고려사항이 다릅니다. 조직 요구사항에 따라 따로 쓰거나, 서로 보완하도록 조합 할 수 있습니다.

요구사항권장 신원 소스
기본 시행을 곁들인 로깅·감사AD Query
로깅·감사만AD Query
Application ControlAD Query + Browser-Based Authentication. AD Query가 모든 AD 사용자·컴퓨터를 찾고, BBA는 모든 비(非)Windows 사용자를 포함 하며 AD Query가 사용자를 못 잡을 때의 폴백(fallback) 도 됩니다. Transparent Kerberos Authentication을 구성하면, Captive Portal의 사용자/암호 페이지를 보이기 전에 브라우저가 투명하게 신원을 받아 사용자를 인증하려 시도합니다
데이터 센터·내부 서버 보호① AD Query + BBA — 대부분이 데스크톱 사용자(원격 사용자가 아님)이고 쉬운 구성이 중요할 때. ② Identity Agents + BBA — 높은 보안 수준 이 필요할 때. Captive Portal로 Identity Agent를 배포하고, IP Spoofing 방지를 켤 수 있음
Terminal Server·Citrix 환경Terminal Servers. 각 Terminal Server에 Terminal Servers Identity Agent를 설치
VPN으로 접근하는 사용자Remote Access. Office Mode로 동작하는 Mobile Access·IPsec VPN 클라이언트를 식별
인증에 RADIUS 서버를 쓰는 환경RADIUS Accounting. Security Gateway를 RADIUS Accounting 클라이언트로 구성 하고 접근 권한과 공유 비밀을 부여

여러 소스를 함께 쓸 때, 신원이 겹치면 소스 간 우선순위 가 적용됩니다.

  1. Remote Access
  2. Identity Agent, Terminal Servers Identity Agent
  3. Captive Portal, Identity Collector, RADIUS Accounting, Identity Awareness API
  4. AD Query

이렇게 다양한 소스를 환경에 맞게 조합하며, 여러 소스의 신원이 겹칠 때는 PDP의 Identity Conciliation이 최종 조정을 맡습니다.