[内部ネットワーク] Slack DM ワークフロー結果の転送
概要
有効にする Slack の DM 通知を有効にすることで、ワークフロー内の承認者が Slack 内で承認または却下を行うことができます。QueryPie が内部ネットワーク内にある場合、承認 / 否認の結果を受信するためには、Slack サービスの IP レンジからインバウンド通信を開始する必要がある。しかし、Slack は IP レンジを公開していないため、直接受信することは難しい。
そのため、Slack と QueryPie 間のインバウンド通信の途中で、Slack からのワークフロー承認・否認結果を受信・配信するリバースプロキシとしての役割を果たすリソースが必要となる。回避策として、許可 IP 範囲を比較的公開している Okta のワークフローを利用してリクエストをルーティングし、配信する方法を紹介する。この方法であれば、別途運用リソースを用意することなく、Slack と QueryPie 間のワークフロー処理を完結させることができる。
参考リンク YouTube
https://help.okta.com/en-us/content/topics/securityhttps://help.okta.com/en-us/content/topics/security/ip-address-allow-listing.htm」ページ内の「Okta IP range allowlist」を参照し、該当テナントの IP 範囲を確認する必要があります。先取りインバウンドトラフィックの例外は、それに応じて許可する必要があります。
以下の対策を実施するためには、Okta IAM サービスへの加入が必要であり、Okta Workflows サービスへのアクセスが可能である必要があります。[Okta Workflowsのライセンスに加入していなくても、ユニバーサルディレクトリ(UD)+シングルサインオン(SSO)ライセンス以上を持っていれば、ケースオープンから Okta Workflows を有効化し、5フローまで無料で利用できます]。
Okta ワークフローの設定
これらの設定を行うには、Okta Workflows コンソールへのアクセス権限が必要です。また、Okta Workflows アプリケーションにアクセスするためには、Okta Super Administrator 権限が必要です。
Okta ワークフローのテンプレートは、以下のリンクから事前にダウンロードすることができます。
querypieWorkflowsRequestForwardFlow.flow
Okta/QueryPie/querypieWorkflowsRequestForwardFlow.flow
Okta 管理者コンソール内のワークフロー > ワークフローコンソールをクリックします。(Okta スーパー管理者のみアクセス可能)。
ワークフロー > ワークフローコンソール
Flowsタブに移動し、左側の[Folder]メニューで
⋮
> ↓Import
ボタンをクリックします。フロー > ⋮ > ↓ インポート
ダウンロードしたワークフローファイルをドラッグ&ドロップすると、すぐにフローが作成されます。
フォルダ "{{ターゲットフォルダ}}" にインポート
作成されたワークフローをクリックし、詳細を入力します。
フロー > フォルダ > 対象フォルダ
ワークフローテンプレートの中央にある
Compose
カード内で、URL 文字列を正しい QueryPie ドメインアドレスで更新します。https://{querypie_domain}}/api/slack/コールバック
右端の
Post
カードの上部にある「Unknown Connection」をクリックし、「+New connection
」をクリックする。その後、別のブラウザタブで QueryPie ページに進みます。投稿 > 不明な接続 >
+ 新規接続
QueryPie > Settings > General Settings > System > API Token に移動し、
+ Create API Token
をクリックしてトークンを生成し、トークンの値をコピーします。(オーナーと承認管理者がアクセス可能)設定 > 一般設定 > システム > APIトークン >
+ APIトークンの作成
Okta Workflows 画面に戻り、以下の値を入力し、「
Create」
ボタンをクリックします。投稿 > 不明な接続 >
+ 新規接続
Connection Nickname: 識別しやすいコネクタ名(例:QueryPie)を入力します。
認証タイプ: カスタム
ヘッダー名: 認証
Header Value: QueryPie からコピーした API Token の値を貼り付けます。
フローの右上にある
⏻フロー
はOFF
ボタンをクリックし、下部にあるフロー
はOFF
トグルを有効にします。フローはオフ
Save
ボタンをクリックしてフローを保存し、アクティブにします。フローの左端にある API Endpoint カードの下部にある
</>
ボタンをクリックします。APIエンドポイント
</>
コピーボタンを押して、Slack アプリに反映する Invoke URL アドレスをコピーします。
APIエンドポイントの設定 > Invoke URL >
copy
Slack アプリの再設定
https://api.slack.com/apps、以前に作成した QueryPie アプリをクリックします。
Features > Interactivity > Shortcutsに移動し、Interactivity の一番下にある Request URL アドレスを、Okta ワークフローからコピーした Invoke URL アドレスに置き換えます(以前は
{QueryPie URL}/api/slack/callbackに
ありました)。下部のSave Changes
ボタンをクリックして、設定変更を保存します。その後、Slack の承認者が再度ワークフローを承認 / 拒否しようとすると、結果に応じて、Okta ワークフローを通じて QueryPie にプロセスが到達し、正常に処理されたことが確認できるはずです。