はじめに
この記事は株式会社ビットキー 情シス Advent Calendar 2023 の21日目の投稿です。
はじめまして。@y_okeです。情シス内で色々な社内システムを内製しています。
登板3回目、今週も木曜日の投稿となりました。好きなタイプはくさタイプです。
記事の要約
- 社内でユーザーや時間を限定してWi-Fiを使わせたいニーズがあるよ
- MerakiはAPI経由でWi-Fiの制御ができるよ
- Okta Access Requests & Okta Workflowsで制御してみよう!
課題
- 製品やアプリの検証等でWi-Fiを使いたいという要望がたまにある
- 検証用のWi-Fiを常時吹いていると、用途外の使用をされてしまい、本来使いたい業務PC用の帯域も圧迫してしまう
- 一定時間だけ使える、かつ申請者以外は使えないWi-Fiを用意したらいいんじゃないか?
要件と解決策
- Okta Access Requestsで申請したら、Meraki Dashboard APIを実行するようにしたい
- Okta Workflowsを使えば繋げられそう
- Wi-Fiの不適切な申請や利用は防止したい
-
12/12の記事の内容で行けるよ
- 今回はCase2を使うよ
- 上の記事と同じ内容はここでは割愛
-
12/12の記事の内容で行けるよ
メリット
- 申請・承認業務は残すものの、ユーザーが使いたいときに申請すればほぼ自動で、かつ時限付きで特定のWi-Fiを使用可能状態にすることが出来る
- いつ誰が申請し承認したのかがログに残るため、不適切な利用等の確認・防止につながる
やってみた
1. Meraki Dashboard APIキーの取得
-
Organization
→API & webhooks
-
API keys and access
→Generate API Key
を選択してAPI Keyを発行 -
コピーできるのはこの瞬間だけなので、安全な場所へ保存しておくこと
2. Okta Workflowsの設定
-
Okta Workflowsを作成
-
イベントを作成する
-
アクションを作成する
-
Meraki Dashboard API公式ドキュメントを参考にしてAPIコネクタを作る
- 今回はupdate-network-wireless-ssidを実行する
- headerは公式の通りに設定
- 先程取得したAPI Keyを入力
- bodyは
enabled
とpsk
の2つ- 入力変数から加工する
- headerは公式の通りに設定
- 今回はupdate-network-wireless-ssidを実行する
- 二重で有効化してパスワードが上書きされるのを防ぐ処理も入れてある
- 一度get-network-wireless-ssidを実行して、状態が
enalbed
かつ入力変数が有効化する
ならば止める
- 一度get-network-wireless-ssidを実行して、状態が
-
Meraki Dashboard API公式ドキュメントを参考にしてAPIコネクタを作る
-
フローの全体イメージ
-
作成したOkta WorkflowsをOkta Access Requestsに表示させる
本当はOkta Access Requests上にOkta Workflowsのフローを表示するためには、この他にも色々と設定が必要だったそうです。その作業はこっそりと他の人(@h_r_w_t_r)がやってくれていたのですが、当時は知りませんでした。
その部分の説明について聞きたい方は、本人にX(旧Twitter)で聞いてみてください。
3. Okta Access Requestsの設定
- 今回は前提条件からUIとして以下を用意
- Wi-FIの有効化・無効化を指示するためのセレクトメニュー
- 任意のパスワードを入れるためのテキストボックス
-
基本的な作成方法は12/12の記事を参照
-
Questionsの入力欄は2つ
-
Actionでは
Run a workflow
を選択
4. 実践
-
申請前のMeraki Dashboardの状態
-
申請(Slackから行った場合)
-
Okta Access Requests承認後、Wi-Fiが有効化され、パスワードが変更される
-
Meraki管理画面にはAPIで変更した旨のログが残る
継続課題
- 申請後に他の人から申請があった場合も時間延長はされない
- Okta Access Requestsのタイマーは途中で終了できないため、必ず指定時間後に無効化処理が走る
- うまいやり方が無いか考え中
- Okta Access Requestsのタイマーは途中で終了できないため、必ず指定時間後に無効化処理が走る
- Okta Access Requestsのタイマー時間にユーザー入力変数は使えず、固定値しか扱えない
- 現時点では仕様なのでしょうがない
- Okta Access RequestsのAudienceを編集していると、偶にワークフロー自体が消えてしまう
- 権限上見えないところにいる気はするが、何か手立てはないだろうか
- 有効化するAPを限定したい
- 入力の選択肢を増やして、選択肢に応じてAPを割り当てるようにする、とかはAPIをうまく使えばできるはず
最後に
- Okta Access Requestsは簡単に承認WFが作れる良いノーコードワークフローツール
- Okta Workflowsは任意のAPIを実行できる、高機能なノーコードワークフローツール
- Okta Access RequestsとOkta Workflowsを組み合わせることで、様々なサービスを申請・承認行為付きで連携できる可能性が示せた