Okta Workflowsについてよく聞かれるのは次の質問です。
これはOkta Workflowsで実現できますか?
多くの開発者やIT管理者から、この質問が寄せられます。新規採用者の入社時にSlackアラートを送信する、退職時にユーザーを自動的に無効化するといった、アイデンティティ関連の作業を自動化したいと考えてのことです。
まず、Okta Workflowsとは、ノーコードで利用できるアイデンティティ自動化プラットフォームです。Workflowsを使えば、Oktaをカスタマイズし自動化できます。たとえば、オンボーディングとオフボーディングを自動化したり、ログイン失敗が複数回発生した際にセキュリティアラートを送信したり、アプリケーションへのアクセス権を自動的に付与したりできます。
最初に考えるべきなのは、Okta Workflowsのフローをどのように開始するかという点です。まずはそこから見ていきましょう。
Okta Workflowsの自動化は、次の方法でトリガーできます。
- イベント発生時
- スケジュール実行
- APIエンドポイント
- 手動実行
それでは、フローをトリガーするそれぞれの方法を確認していきます。
イベント発生時
Okta内でイベントが発生したタイミングで、フローをトリガーできます。たとえば、Oktaでグループが作成された際に、Group Created(グループの作成)イベントをきっかけにフローを実行することができます。
イベント発生時のトリガー方法には、次の3つの選択肢があります。
- コネクターカードを使用する
- ウェブフックを使用する
- Oktaシステムログを検索する
それでは、それぞれのトリガーについて詳しく見ていきましょう。
コネクターイベントを使用する
Okta Workflowsはノーコードプラットフォームなので、ほとんどのOktaイベントには専用のイベントカードが用意されています。
たとえば、これは新しいOktaグループが作成されたときにフローをトリガーするためのイベントカードです。
また以下のように、他のイベントもフローをトリガーするために使用できます。
つまり、Oktaのイベントに対応する専用カードがOkta Workflowsに用意されていれば、そのイベントを使ってフローをトリガーできます。
しかし、利用できるのはOktaのイベントだけではありません。Okta Workflowsのコネクターカタログを使えば、外部アプリケーションで発生したイベントをきっかけにフローをトリガーすることも可能です。
たとえば、次のようなSlackイベントを使用してフローをトリガーできます。
Okta Workflowsは、これらのアプリケーションとどのように接続するのでしょうか?
Okta Workflowsには80種類以上の事前構築済みコネクターが用意されており、Slack、ServiceNow、Google、Oktaなど、さまざまなサービスへ接続できます。ただし、これらのコネクター(Okta用のコネクターであっても)を使用するには、まず接続(コネクション)を作成する必要があります。
コネクションは、認証情報を安全に保存する仕組みです。具体的には、APIキーやOAuthトークンといった認証情報を指します。この認証情報によって、対象サービスのAPIを呼び出すことができます。1つのコネクターに対して複数のコネクションを作成することもできます。たとえば、テスト環境用と本番環境用にそれぞれコネクションを作成するといった使い分けが可能です。
では、イベントの話に戻りましょう。コネクターのイベントを使用してフローをトリガーする場合、技術的には、Okta Workflowsがバックグラウンドでウェブフックを登録します。他のほとんどのコネクターでは、Okta Workflowsはポーリング方式(新しいイベントがないかを定期的に確認する方法)を使用します。
Group Createdイベントカードを確認すると、このイベントがOktaコネクターから発生していることがわかります。そして、「Okta」という名前のコネクションが使用されています。
イベントカードのフィールド(Date and Time、Message、Event IDなど)は、そのイベントがフロー内で利用できるデータです。
ウェブフックを使用する
Oktaや他のアプリケーションのイベントの中には、コネクターにイベントカードが用意されていないものもあります。そのようなイベントに対しては、ウェブフック(Oktaではイベントフックとも呼ばれます)を登録できます。ウェブフックでは、特定のイベント発生時に自動呼び出されるURLを、Oktaや外部システムなどのアプリケーションに登録します。
この図は、Oktaグループの作成イベントに対してイベントフックを登録する様子を示しています。イベントフックで使用できるイベントを探すには、event-hook-eligibleタグが付いたイベントを確認してください。
Endpoint URLは、このフローのAPIエンドポイントを参照しています。
APIエンドポイントカードの</>をクリックすると、エンドポイントURLが表示されます。
別のアプリケーションにウェブフックを登録し、そのアプリケーションでイベントが発生した際にフローをトリガーすることもできます。以下は、Typeformのフォームが送信されたときにフローをトリガーする例です。
Oktaシステムログを検索する
Oktaコネクターにイベントカードがない場合、またはそのイベントがイベントフックに対応していない場合は、特定のイベントをOktaシステムログで検索するという方法もあります。
この図は、スケジュールに従ってシステムログを検索し、ログイン失敗を検出する例を示しています。
システムログを検索してイベントが見つかった場合、そのままフローの実行を続けられます。
以下のリソースでは、Okta Workflowsのイベントについてさらに詳しく学ぶことができます。
APIエンドポイント
APIエンドポイント経由でフローをトリガーすることもできます。これはウェブフックを使用する場合と似ています。フローの最初のカードがAPIエンドポイントカードの場合、そのフローにはエンドポイントURLが割り当てられています。このAPIエンドポイントURLを呼び出すと、フローがトリガーされます。APIエンドポイントは、任意の外部システムから呼び出すことができます。
以下はAPIエンドポイントの設定です。
ウェブフックとAPIエンドポイントの違いをまとめると、次のとおりです。
- ウェブフック(イベント発生時):何か(イベント)が発生したタイミングで、他のアプリがOkta WorkflowsのAPIエンドポイントを呼び出します。
- APIエンドポイント(オンデマンド):Workflowsは、フローを開始するために誰かが明示的に呼び出すのを待っている状態です。
手動実行
フローを実行するもう1つの方法は、「Run(実行)」ボタンをクリックして手動で実行することです。
フローの実行方法のまとめを以下に示します。
| トリガー方法 | 用途 | カード |
|---|---|---|
| イベント発生時 | Oktaまたは外部アプリで何らかのイベントが発生した場合(例:グループが作成された場合) | コネクターイベントカードまたはウェブフック(イベントフック) |
| スケジュール実行 | 定期的なタスクの場合(例:毎朝) | スケジュール実行カード |
| APIエンドポイント | 外部システムが明示的にフローを開始する必要がある場合 | APIエンドポイントカード |
| 手動実行 | テストの場合または単発の実行の場合 | 実行ボタン |
アクションカードと関数カードを使ってフローのロジックを構築しておくと、上記のいずれかの方法でフローが正常に開始されたときに自動ロジックが実行されます。
フローのロジックを構築
利用できるカードには、次の2種類があります。
- アクションカード
- 関数カード
アクションカード
Okta Workflowsには、さまざまなアプリケーションやサービスに接続する80以上のコネクターが用意されています。
すべてのコネクターにはアクションが用意されています。内部的には、アクションは対象アプリケーションのAPI呼び出しです。アイデンティティ自動化を構築する際、アクションを使用すると他のアプリケーションを呼び出すことができます。たとえば、Oktaで新しいグループが作成された際に、Office 365コネクターを使ってEメールを送信し、さらにSlackコネクターを使ってSlackにメッセージを送信するといった処理が可能です。
事前に構築されたコネクターがないAPIを利用したい場合は、API Connector関数カードを使用して任意のAPIに接続できます。
関数カード
Oktaや他のコネクターとやり取りを行うと、ユーザーリストやグループリストなどのデータが返されます。関数カードは、こうしたデータを編集したり、新しいデータを作成したりするために使用します。たとえば、Slackにメッセージを送信する際には、Text-Composeカードを使ってメッセージを作成できます。
このフローは、この記事で説明してきたすべての内容を示しています。
1. OktaのOkta-Group Createdイベントがフローをトリガーします。このイベントは、Oktaコネクターから発生します。
2. Text-Composeカードがメッセージを作成します。Composeは、Textカテゴリの関数カードです。
3. Office 365 Mail-Send Emailのアクションカードが、そのメッセージを含むEメールを送信します。このアクションはOffice 365 Mailコネクターによるものです。
4. Slack-Send Message to Channelアクションカードが、Slackチャンネルにメッセージを送信します。このアクションはSlackコネクターによるものです。
結局、Okta Workflowsで実現できることは?
このブログ記事の要点を簡単にまとめると、次のとおりです。
| 用語 | 目的 | 例 | 重要な理由 |
|---|---|---|---|
| コネクター | Okta Workflowsと他のサービスやアプリとの間に構築済みの連携機能 | Slack、Okta、Office 365 Mail、Google Workspace | API呼び出しを手動で構築する代わりに、既製のアクションカードとイベントカードを使用できる |
| 接続 | Okta Workflowsとサービスの特定インスタンス間の認証済みリンク(APIキーまたはOAuthトークンを使用) | お客様環境のSlackワークスペース、Oktaテナント | WorkflowsがアプリのAPIを呼び出せるように、認証情報を安全に保存する |
| イベント | 接続されたシステムで発生し、フローを開始(トリガー)できるもの | Oktaで新しいグループが作成された、Oktaで新しいユーザーがアクティブ化された | フローが開始されるタイミング(自動処理を開始するトリガー)を定義する |
| スケジュール | スケジュールに基づいてフローを開始する組み込みのトリガー | 毎週金曜日の午前9時、週に1回 | スケジュールに基づいてフローを開始する |
| アクションカード | コネクターまたはサービスでアクションを実行する。内部的には、APIを呼び出す | Slack-Send Message、Office 365 Mail-Send Email、Okta-Ad User to Group | 自動ロジック(メッセージの送信、ユーザーの更新、レコードの作成など)を実行する |
| 関数カード | データの操作またはフォーマット | Text-Compose、List-Filter、Date-Format | データの変換とフォーマットを支援する |
まず、フローをどのようにトリガーするかを決定します。方法としては、イベント発生時、スケジュール実行、API エンドポイントという選択肢があります。次に、フローを開始したら、アクション(コネクターから提供される機能)を使って他のサービスを呼び出し、関数を使ってデータの編集や作成を行います。