[내부망] Slack DM Workflow 결재 처리 결과 전달하기
Overview
Slack DM 개인 알림 사용하기 설정을 통해 Workflow의 승인자가 Slack 내에서 승인 및 반려를 수행할 수 있게 하는 것이 가능합니다. QueryPie가 내부망 안에 위치하고 있다면 승인/반려 처리 결과 수신을 위해 Slack 서비스 IP대역의 인바운드 오픈이 필요하나, Slack에서 해당 IP대역이 공개되지 않으므로 직접 수신이 어렵습니다.
결과적으로 Slack-QueryPie 간 인바운드 통신 중간 위치에서 Slack에서 Workflow 승인/반려 처리 결과를 수신하여 전달할 수 있는 리버스 프록시 역할을 할 리소스가 필요합니다. 이에 대한 워크어라운드로 상대적으로 IP대역이 공개된 Okta의 워크플로를 활용해 요청을 경유해서 전달할 수 있는 방안을 소개합니다. 본 방식을 통해 별도의 운영 리소스를 들이지 않고 Slack-QueryPie의 Workflow 처리를 완성할 수 있습니다.
참고 영상: https://www.youtube.com/watch?v=2HnFN56xlH4
https://help.okta.com/en-us/content/topics/security/ip-address-allow-listing.htm 페이지 내 Okta IP range allowlist를 참조하여 해당하는 테넌트의 IP대역을 확인하여 사전에 인바운드 트래픽 예외처리 허용을 해야 합니다.
아래의 방안을 적용하기 위해서는 Okta IAM 서비스의 구독이 필요하며, Okta Workflows 서비스 접근이 가능해야 합니다. [Okta Workflows 라이선스를 미구독 중이라도 최소 Universal Directory(UD)+Single Sign-On(SSO) 라이선스를 구독 중인 경우, 케이스 오픈을 통해 Okta Workflows를 활성화하여 최대 5개의 플로우까지 무료 이용이 가능합니다.]
Okta Workflows 설정하기
본 설정을 위해 사용자는 Okta Workflows 콘솔에 접근할 수 있는 권한이 있어야 합니다. Okta Super Administrator 권한이 필요하며, Okta Workflows 애플리케이션에 Assign되어 있어야 이용 가능합니다.
사전에 미리 제작된 Okta 워크플로 템플릿을 하단의 링크를 통해 다운로드 받습니다.
Okta 관리자 콘솔 내 Workflow > Workflows console 메뉴를 클릭합니다. (Okta의 Super Administrator만이 접근 가능합니다.)
Flows 탭으로 이동하여 좌측의 Folder 메뉴 내 플로우를 저장할 위치의 폴더의
⋮
>↓ Import
버튼을 클릭합니다.다운로드한 워크플로 파일을 드래그하여 옮기면 바로 플로우가 생성됩니다.
생성된 워크플로를 클릭하여 내부로 진입합니다.
워크플로 템플릿 내 중간의
Compose
카드 내 url 스트링에 쿼리파이 도메인을 올바른 주소로 변경합니다.맨 우측
Post
카드 상단의 Unknown Connection을 눌러+New connection
을 클릭한 뒤, QueryPie 페이지로 이동합니다.쿼리파이 Administrator > General > System > API Token에서
Create API Token
을 클릭하여 토큰을 생성한 뒤 토큰 값을 복사합니다. (Owner와 Approval Admin이 접근 가능합니다.)다시 Okta Workflows 화면으로 돌아와서 이하의 값을 기입한 다음,
Create
버튼을 클릭합니다.Connection Nickname : 쉽게 식별 가능한 커넥터 명칭을 기입합니다 (예. QueryPie)
Auth Type : Custom
Header Name : Authorization
Header Value : 쿼리파이에서 복사한 API Token 값을 붙여 넣습니다.
플로우 우측 상단의
⏻ Flow is OFF
버튼을 클릭하고 하단의 Flow is OFF 토글을 활성화합니다.Save
버튼을 클릭하여 플로우 설정을 저장하고 활성화합니다.플로우 맨 왼쪽 API Endpoint 카드의 맨 하단의
</>
버튼을 클릭합니다.Slack App에 반영할 Invoke URL 주소를 copy 버튼을 눌러 복사해둡니다.
Slack App 재설정
https://api.slack.com/apps 에 들어가서 기존의 생성한 QueryPie 앱을 클릭합니다.
Features > Interactivity & Shortcuts에서 Interactivity 하단의 Request URL 주소를 기존의
{QueryPie URL}/api/slack/callback
에서 Okta 워크플로에서 복사해 둔 Invoke URL 주소로 교체한 다음 하단의Save Changes
버튼을 눌러 설정 변경사항을 저장합니다.이후 슬랙에서 승인자가 Workflow 승인/반려 처리를 다시 시도하면 그 결과에 따라 정상적으로 옥타 워크플로를 경유해 QueryPie까지 도달하여 정상 처리되는 것을 확인할 수 있습니다.