Azure Application Proxy, 내 솔루션에 Azure AD와 연동된 SSO, MFA 넣기

눕눕·2022년 12월 18일
0

기존의 App에 뭔가 튼튼한 인증 절차를 넣을 수 없을까?

최근 회사에서 진행하는 프로젝트의 솔루션이 점유율도 꽤 되는 회사인데도 불구하고, SSO가 완벽히 지원되지 않고, MFA가 없기에 이 방법을 통해 보안을 강화하고 있다.

그리고 Application Proxy를 사용하는 가장 큰 문제는, 내가 해당 솔루션의 보안 수준을 믿지 못하겠다. 다시한번 말하지만 규모 및 점유율이 낮거나 작은회사가 아니지만, 앞에 Microsoft login 페이지부터 나온다면 보안적으로 훌륭하지 않은가?

요즘 같은 세상에, id/pw만 가지고 public에 내놓는 다뇨!!!
그리고 만약에 내가 Microfot login 페이지를 뚫을 수 있다면 현재 회사의 페이지가 아니라 금융권 털러갈듯.

튼튼한 인증절차?

요즘 MFA라는 단어를 많이 보았을 것이다. 많은 App들이 id/pw 에서 MFA를 지원하기 시작했다. 알고 있는 지식 외에, 가지고 있는 물건에 대한 인증 또는 생체 인증을 덧붙여, 보안적으로 조금 더 안전하게 인증을 진행하고 있다.

아직 비밀번호만 사용하는가?

어떻게 MFA를 내 솔루션에 적용할 수 있을까?

그럼 이러한 MFA를 내가 운영하는 솔루션에서는 어떻게 적용할까?

보편적인 선택지

보통 아래의 방법들 중 하나를 선택해서 많이 사용한다.

  1. 솔루션에서 자체적으로 MFA를 제공
  2. 솔루션에서 SSO를 제공하는지 확인하고, 제공된다면 MFA를 제공하는 SSO와 연결하여 사용한다.

1번의 경우, provider가 꽤 덩치가 크다면 제공할 확률이 있으나, 대부분은 제공되지 않는다.

주로 2번을 많이 사용하는 편이다.

내가 사용하는 솔루션이 Azure AD와 SSO 연결 되는지 확인하려면 아래의 링크에서 찾아보자!!
https://learn.microsoft.com/en-us/azure/active-directory/saas-apps/tutorial-list

나의 솔루션이 Azure에 있거나 On-prem에 있더라도, Azure AD의 Application Proxy를 이용한다면, MFA를 사용할 수 있다. 더 나아가, SAML을 이용한 SSO 등 Azure AD에서 Enterprise App에서 보이던 기능들 모두 사용할 수 있다.

User 관점에서 변경 사항

우선 user입장에서 정리해보자면 아래와 같은 순서로 변경된다.

기존 로그인

  1. target_solution.com 으로 접속한다.
  2. 일반 적인 id/pw로 로그인한다.

변경된 방식

  1. target_solution.com 으로 접속한다.
  2. Microsoft 로그인 페이지로 redirect 되어 로그인한다. (MFA를 설정했다면 여기서 진행)
    a. SAML을 통해 SSO가 된다면, 연동된 정보로 인해 로그인 되어 추가적인 id/pw 입력없이 사용
    b. SSO가 지원되지 않느다면, 솔루션에서 사용하던 id/pw로 한번 더 로그인

주로 MFA까지 사용 결정이 내려졌다면, 해당 솔루션에서 SAML을 통한 SSO까지는 지원되기에 사용을 할 것이다. 기존에 1번 로그인하던 user들을 2번 로그인하게 설득하는건 쉽지 않다.

어떻게 준비하나?

뭔가 복잡할 것 같지만, 인스톨러 하나 설치하는 수준이다.

필요 사항

  1. Azure AD premium
  2. Windows Server 2012 R2 or later (proxy 역할)
  3. Application Administrator Account (Azure AD Role)

적용 방법

먼저 아래와 같이 Azure AD의 Application Proxy 탭에서 Connector를 받는다.

받은 후, 준비된 Windwos Server 2012 R2 or later 서버에 아래와 같이 설치한다. 로그인 화면에서는 Application Administrator Account 이상의 권한을 가진 아이디로 로그인한다.

설치가 완료되면, Application Proxy 탭에서 해당 서버들이 IP와 host명으로 보일 텐데, Connector 그룹을 아래와 같이 만들고 넣어준다. 만들 때, 지역을 유의해서 만들자.

이후, 아래와 같이 Enterprise Application을 On-prem 용으로 하나 만들고 설정 또한 진행하자!!
기본적으로 proxy이기에 외부에서 받는 url, https를 위한 인증서, proxy로서 다시 보내는 url 모두 필요하다.

이후, Enterprise Application에서 나의 솔루션에 사용할 사람을 선택하여 넣어주면 사용 준비가 끝이난다.

어떻게 작동될까?

cookie에 samesite는 none

먼저 아래와 같이 cookie에 samesite는 none으로 들어가있다. (redirect해도 cookie에 있어야하니 당연한거 아닌가?)

target_solution.com에 CNAME으로 Microsoft login 페이지로 redirect 될 때 위의 cookie가 있다면 계속 login 한채로 쓸 수 있다.

또한 SSO까지 지원된다면 SAML을 통해 여러 정보들을 받아올 수 있으니 처음 가입처리를 해야한다면 해당 정보를 활용해서 만들면 된다.

아래는 cookie 안넣고 그냥 접근 시도할 때!!!
아래의 결과를 자세히 보면 Microsoft login 페이지인 것을 알 수 있다.

아래는 Postman cookie에다 기존에 발급받은 쿠키를 넣고 똑같이 접근했을 때!!!
iis 기본 페이지가 뜬 것을 볼 수 있다.

마치며

기존의 Application이 SSO나 MFA가 없을 경우, 로그인 보안을 챙기고 싶다면 매우 좋은 옵션이라 생각된다. 내 프로젝트는 SSO 안되서 실제 사용자들이 로그인 2번해야된다. 날 욕하지 말고 나사하나 빠진 솔루션을 욕하길 간절히 바란다.

profile
n년차 눕눕

0개의 댓글