ローコードで実現!社員の最終出社日後にOktaアカウントを自動で無効化する方法

 
こんにちは。 
情シスSlackのアドベントカレンダーでブログを書いています。 こういう機会が無いと中々アウトプットしないので、ありがたいことです。 来年はもう少しブログを書こうと思います。
 
さて、私はNOT A HOTELという会社でCorporate ITを担当しています。一人情シスとして業務を行っており、200人以上のメンバーと3社以上の子会社の情シス業務も担当しています。一人で全てを回すために、面倒な作業はできるだけ自動化する必要があります。
 
NOT A HOTELの現場については、こちらのブログもご確認ください。
 
ちなみに情シスも募集中です。 少しでも興味持たれた方は、ご応募よろしくお願いいたします!
 
今回は、私が実践している「社員の最終出社日後にOktaアカウントを自動で無効化する方法」についてご紹介します。
このブログが皆様のお役に立てれば幸いです。

オペレーティブな仕事はなるべく自動化しましょう。

アカウントの無効化は、情報システム担当者にとって避けては通れない重要な作業です。しかし、このシンプルな作業が持つ心理的負担は意外と大きく、業務効率や精神的な余裕に悪影響を与えることがあります。
 
1. アカウント無効化の重要性と心理的負担
重要なのはわかっていますが、この作業は担当者の心理的負担が凄いと思っています。ざっと上げると3つの観点があるかと思ってて、
  • 情報漏えいのリスク 退職者のアクセス権が有効なままだと、意図せぬ形で社内情報が漏えいするリスクがあります。また、これは外部からの攻撃に対する脆弱性にもなります。
  • 担当者への責任集中 トラブルが発生した場合、その責任は情報システム担当者個人に集中します。「無効化作業を忘れていたのでは」という指摘を受けるプレッシャーが、担当者の心理的負担となります。
  • 休みが取りづらい状況 アカウント無効化は期日厳守の作業であり、「この日は必ず対応が必要」という状況を生みます。そのため、重要な作業日に休暇を取ることが困難になります。
 
2. クリエイティブな業務に対する影響
情報システム担当者は、新しいシステムの導入やプロセス改善などのクリエイティブな業務に取り組む必要があります。しかし、アカウントの無効化などのオペレーティブな作業が割り込むと、次のような悪影響が生じます。
クリエイティブな業務からルーティン作業への切り替えには、膨大なエネルギーを消費します。この頻繁な切り替え(スイッチングコスト)により、創造的な仕事への集中力が著しく低下してしまいます。結果として、優先度の高い業務に十分なリソースを配分できず、業務全体の生産性が低下することになります。
ということで、自動化しましょう!
自動化によってミスを防ぎ、心理的負担も軽減できます。そして何より、人間にしかできない創造的な仕事に集中できるようになります!
 

どの情報を参照して実行する?

Notionに社員一覧のデータベースがあるので、このデータベースにアカウント削除日のプロパティを設けておりまして、こちらのデータを取得し実行する仕組みになっています。
社員一覧のデータベース
社員一覧のデータベース
社員一覧のデータベースは、社員の自己紹介ページも兼ねていて、プロフィールを作成・公開しています。 弊社は完全リモートワークの会社ですので、自己開示される情報はなんぼあっても困りませんからね。
実は、この自己紹介ページの作成も自動化されています。入社が決まると自動的にページが作成され、社員がSlackに参加すると自己紹介ページの作成が促される仕組みになっています(この詳細については、また別の機会にご紹介します)。
 
 
アカウント削除日について
退職者が発生すると、以下のSlackワークフローで関係部署に依頼が流れます。
このデータ入力をトリガーとして、Notionデータベースに退職日、最終出社日、アカウント削除日(初期値は最終出社日と同じ)が自動入力され、同時に在籍ステータスが「退職予定」に変更されます。
 
このインテグレーションは、Webhook等で受けてコード書いて実現しても良いですし、ZapierなどのiPaaSを使えば、簡単にインテグレーションできると思うので、ここの仕組みは割愛します。
こんな感じでデータが入ってきます。
サンプルデータ
サンプルデータ
 
「最終出社日」と「アカウント削除日」を別々のプロパティとしている理由は?
当社では最終出社日の業務終了時にアカウントを停止することが規定ですが、事情があって最終出社日にアカウント抹消できない場合もあります。別々のプロパティとすることで、このような状況にも柔軟に対応できます。
 
 

さぁ自動化をローコードで実装しましょう

今回はZapierを使って実装を行っています。
テンプレート機能を活用して、基本的な構造のみ共有させていただきます。 余談ですが、Zapierのテンプレート機能は設定が全て初期化されてしまうため、あまり実用的ではありませんよね 笑
 
Zapier初めてって人も居ると思うので、少し丁寧に解説させていただきます。
処理の流れは以下の通りです。

トリガーの設定

毎日実行するトリガーを実施するのは、 を使います。
毎日、10:00 PM で実行するようにしています。
 

アカウント削除日が本日のものを取得する

NotionのAPIキーを取得する。
  • Notionの設定から「自分のコネクト」を開き、「インテグレーションを作成または管理する」をクリックします。
  • 新しいインテグレーションを作成します。
  • 今回の例では、サンプルとして という名前を付けました(任意の名前で構いません)。
  • 必要なパーミッションを設定し、 を取得します。
  • 最後に、API経由で操作したいデータベースに、作成したインテグレーションを追加します。
 
詳細は を確認すると良いと思います!
 
 
Zapierで設定を行う。
を使って、 を選択します。
設定値(Configure)を以下の通り設定します。
Input Dataの設定値
apiKey上記の手順で取得したAPIキーをコピペ
databaseId操作を加えたいNotionデータベースのIDをコピペ IDはNotionのURLに記載されています。 書式は以下の通りです。 https://www.notion.so/{workspace_name}/{database_id}?v={view_id}
 
実際の設定値です。
 
Code
「アカウント削除日」は、実際の環境に応じてプロパティ名を入力ください。
 

フィルター

前述の実行結果で、items Countが1件以上の場合は処理が続行されます。0件の場合はフィルタされ、処理が終了します。
 
 

ループの設定

Notion APIのリクエスト結果が複数ある場合に対応するため、ループ処理を設定します。
設定する値は以下の通りです:
  • Oktaの処理に必要なメールアドレス
  • Slack通知に必要な退職日と最終出社日
 

EmailからOktaのUser IDを取得

OktaのAPIトークンの準備
以下の記事が参考になると思うので、こちらを参照ください。
 
Zapierの設定値について
を選択肢、イベントは を選択する。
設定値は以下の通りです。
  • URLの書式は https://-admin.okta.com/api/v1/users?q={email}
  • Authorization書式は です。
 
無効化対象者のUser IDを取得し、次の処理でOktaアカウントを無効化を行います。
 
 

Oktaアカウントの無効化処理を実行する

アプリケーションでOktaを選択し、 イベントは を選択します。
設定値を参考にしてください。
 
APIエンドポイントの形式は次の通りです。
に詳細なオプションが記載されていますので、ご参照ください。
なお、User IDには前のアクションで取得した値を代入します。
 
 

最後!Slackに通知します。

処理完了をチームと共有するため、Slackで通知を行っています。
また、Oktaの該当ユーザーページへのリンクを添付し、詳細確認をスムーズにしています。
 

リマインドも簡単に実装できます。

同様の仕組みを利用して、対象者へ朝にSlackでリマインドを送信しています。プロフィールのデータベースをトリガーとしているため、必要な場合は各自で「アカウント削除日」を変更することができます。
これにより、アカウント抹消の日程が変更になった際に、人事チームからITチームへの共有が漏れた場合でも安心です。 
 
 

最後に

いかがでしょうか。 
このようにSaaS間のインテグレーションを自動化することで、私たちの業務負荷を軽減しながら、高品質な作業を繰り返し実行できるようになります。
この取り組みは「SaaSOps」と呼ばれています。SaaSやクラウドサービスが一般的になった今だからこそ、情報システム部門の役割も新たに定義し直す必要があるのです。
これからの情シスに求められるのは、SaaSを使いこなし、SaaS同士をインテグレーションして自動化を実現できる力です。SaaSOpsを実践できる人材こそが、モダンな情シス担当者と言えるでしょう。
コードを書くことに躊躇する方も多いかもしれませんが、この程度の量であればAIの支援を受けるのも一つの手段です。まずは一歩を踏み出し、実践を重ねることで、できることは着実に増えていきます。さあ、新しいチャレンジを続けていきましょう。
 
ご質問や、実装に迷ったら、情シスSlackで声かけてもらえたらありがたいです。 
もちろん、お仕事としての依頼も大歓迎です。