ADFS Study (3). Access Control Policy
ADFS에서도 M365에서 제공되는 Conditional Access 를 유사하게 설정할 수 있습니다.
Exchange Server 에서 ADFS 클레임 인증을 사용할 경우 내부망과 외부망의 인증 흐름은 다음과 같습니다. (AD는 생략)
<내부망>
<외부망>
설명을 돕기 위해서 아래와 같이 시나리오를 정해서 설정하겠습니다.
[시나리오1] 사용자가 OWA를 사내에서만 이용하도록 설정, 사외에서 접속시 차단
Access Contol Policies -> Add Access Control Policy
Policy Name 입력 -> Add
Everyone -> from specific network 체크 -> 하단의 specific 클릭
Internet 선택 -> OK
OK
OK
Policy 생성 확인
Relying Party Trusts -> OWA 클레임 인증 정책 -> 우클릭 -> Edit Access Control Policy
Use access control policy
생성한 정책 선택
설정된 정책 확인
외부망에서 OWA 접속 시도
해당 Relying party 가 차단되었다는 메시지 확인
ADFS 이벤트 로그에서 동일한 Activity ID로 로그인 실패 기록이 확인됩니다.
세부 정보를 보면 Extranet에서 Access하여 Block 된 것을 알 수 있습니다.
Fiddler 상에서도 Status-Code 가 500으로 기록됩니다.
만약 내부망에서 접속하면, Intranet으로 기록되면서 성공했다는 것을 확인할 수 있습니다.
[시나리오2] Exchange Server 2019 HMA 구성, Outlook Client 사내 허용, 사외 차단, 이미 설정된 계정들에 대해서 새로 적용 필요
우선 정책을 설정하지 않은 상태로 계정설정 진행 -> 아래와 같이 로그인시 ADFS 로 이동됩니다.
프로필 설정 완료.
Outlook 연결 상태에서 Authn 이 전달자(Bearer)로 표시됩니다.
Extranet 으로 인식됨 확인
Intranet에서만 액세스하는 정책 생성
정책을 설정한 뒤, 일정시간이 지나도 Outlook Client 상에서 연결이 끊어지지는 않았습니다.
아래의 옵션을 체크
-> Outlook 을 다시 실행해도 연결이 끊어지지 않습니다.
-> 그리고 ADFS 상에서 더 이상 로그인 로그의 기록을 확인할 수 없습니다.
-> 이미 자격증명이 저장된 토큰이 있다면, 일정시간 ADFS의 인증을 거치지 않는 것으로 추정됩니다.
최초 로그인시에는 모든 정책이 동일하지만 Application 단에서 토큰을 저장하는 개념이 존재한다면, 해당 토큰을 재인식할때까지는 정책이 적용되지 않는 것으로 보입니다. 이 부분은 토큰의 수명과 관련된 부분으로 다른 포스팅에서 다루도록 하겠습니다.
[시나리오3] 썬더버드(특정 App)에서 액세스 차단
아래와 같이 썬더버드에서 계정설정을 진행합니다.
ADFS 의 감사로그를 확인해 보면, UserAgentString 항목에서 Thunderbird로 기록됩니다.
이 항목을 근거로 차단 정책을 설정해 보겠습니다.
규칙 생성시 with specific claims in the request -> specific 클릭
Claim type을 보면 다양한 조건이 지원되는 것을 알 수 있습니다. Client User Agent를 선택합니다.
Contains -> Thunderbird -> OK
정책 적용후 다시 계정설정을 해보면 아래와 같이 차단되는 것을 확인할 수 있습니다.
ADFS 로그상에서도 실패 기록을 확인됩니다.
이와 같이 감사로그 상의 기록을 기반으로 차단이나 허용정책을 유연하게 생성할 수 있습니다.
제 생각이지만, ADFS의 Access Control Policy = Azure AD Conditional Access 로 봐도 될 것 같습니다.