はじめに こんにちは、 ネクストモード株式会社 のSaaSおじさん久住です 当エントリは『ネクストモード フルリモート業務を実現するSaaS活用&カルチャー Advent Calendar...
【Okta】Slack Enterprise GridのAdmin APIをOkta Workflowsで実行する方法
はじめに
こんにちは、 ネクストモード株式会社 テクニカルサポート担当です。
OktaのライセンスのひとつにOkta Workflowsがあります。このOkta WorkflowsはiPaaSとして70以上のSaaSコネクターや日付計算など関数が用意されており、組み合わせることでさまざまな自動化が行えます。
今回Slack Enterprise Gridで利用できるadmin.users.invite(Admin系API)にて有効期限付きシングルチャンネルゲストの招待を自動化しようとしましたが手間取ったので備忘録を兼ねて記事にします。
ちなみにSlack Enterprise Gridの検証環境はSlack Developer Programから取得可能です。
Okta Workflowsで用意されているSlackのコネクターについて
まずOkta WorkflowsにはSlack関連として以下の2つのコネクターが用意されています。それぞれさまざまなアクションカードが用意されています。その中にはCustom API Actionというコネクターの範囲で自由にAPIが実行できるカードが用意されています。
- Slack
- Slack Admin
Slackはコネクションを作成する際にワークスペースしか選択できませんでした。これはOrgレベルで実行する必要があるAdmin系APIをCustom API Actionで実行することができないことを意味します。
Slack Adminに用意されているCustom API Actionではドキュメントに以下の記載があり、Admin系APIは実行できないことがわかりました。
Slack Adminコネクターがクエリを実行できるのはSlack内のSCIMエンドポイントだけであり、Slack内の他の管理APIでは使用できません。このようなユースケースではSlackコネクターを使用してください。
汎用APIコネクターの利用
Okta Workflowsには汎用的なAPIを実行できるコネクターが用意されています。
このコネクターを利用し、admin.users.inviteを実行してみます。
Slack App作成
admin.users.inviteのリファレンスを参照し、admin.users:write
スコープを追加し、OrgレベルのSlack Appを作成し発行されたユーザートークンを控えます。
APIコネクターの利用
APIコネクターカードを追加し、以下のようにコネクションを作成します。
このコネクションを利用してAPIコネクターカードのPOSTを設定します。
スクリーンショットだとわかりづらいので以下に内容を紹介します。
リクエストURLは以下を指定します。
https://slack.com/api/admin.users.invite
Headerは以下を指定します。
{
"Content-Type": "application/json; charset=utf-8"
}
Bodyに以下を指定しました。実際にはObjectのConstructカードを利用して動的に組み立てられる仕組みを実施しています。
{
"email_password_policy_enabled": false,
"guest_expiration_ts": "1755393631.000000",
"is_restricted": true,
"is_ultra_restricted": true,
"channel_ids": "C0xxxxxx",
"email": "user@example.com",
"team_id": "T08xxxxx"
}
まとめ
以上のように、Okta WorkflowsでSlack Enterprise GridのAdmin系APIを実行するには、汎用APIコネクターを活用することで実現できます。Slack Appの作成とスコープの設定は事前準備として必要ですが、一度コネクターを設定すれば、Slack App側でスコープを編集するだけで、さまざまなAdmin系APIを実行できるようになります。最小権限の原則に基づき、目的別にSlack Appを複数作成し、Okta Workflowsでも対応する汎用APIコネクターを作成・利用することができます。
また、汎用APIコネクターは、Slack Enterprise Grid以外でも、専用コネクターが提供されていないSaaSとの連携に活用できます。
この方法を活用して、ぜひワークフローの自動化にチャレンジしてみてください。