Okta
オクタ
Okta Anything-as-a-Source(XaaS)とAWS Lambdaを用いてMicrosoft Entra IDをマスターにしてみた!
はじめに
本記事は、マクニカのブログとして、NTTドコモビジネス様の技術協力並びに寄稿・解説を受けてお届けしております。ご質問や導入検討のご相談はまずマクニカまでお問い合わせください(導入/設計/構築についてはNTTドコモビジネス様と連携してご支援させていただきます)。
OktaのAnything-as-a-Source(以降、XaaS)は、あらゆるデータソースをOktaの「信頼できるアイデンティティ情報源」として活用できるフレームワークです。従来、Active Directory、CSVファイル、一部のHRシステムに限定されていたIDソースが、XaaSによってあらゆるデータソースとの連携が可能になりました。
今回は、Microsoft Entra ID(旧Azure AD)をOktaのアカウント源泉として設定し、AWS Lambdaを活用したユーザー同期の実装方法を検証してみました。
XaaS(Anything as a Source)とは
XaaSは企業のあらゆる人材データを活用するための戦略的基盤です。Identity Sources APIとOkta Workflowsを組み合わせることで、あらゆるデータソースからOktaへの統合を実現します。
主なメリット
- Oktaとのコネクタがない独自システムも連携可能
- 入社・異動・退社のID管理を完全自動化
- 開発コストと時間の大幅削減を実現
従来API実装の課題
従来のAPI実装において、個別のCRUD操作による非効率なロジック実装と複雑性によるスケーラビリティに限界がありました。
- 複雑性と非効率性:個別のCRUD操作による非効率なロジック実装
- レート制限の問題:大量ユーザー(数万~数十万)の同期時のAPI制限
- 差分同期の困難:増分更新ロジックの実装困難
- エラー処理の複雑さ:タイムアウトやネットワークエラーへの対応と同期状態の追跡監視が困難
AWS Lambdaとは
AWS Lambdaは、サーバー環境を自分で用意・管理することなくプログラムのコードを実行ができるAWSのサービスです。可用性が高く耐障害性に優れたAWSのプラットフォーム上で動作します。各リージョンの複数のアベイラビリティゾーンで動作しているため、信頼性の高い運用パフォーマンスを提供することができます。
AWS Lambdaの特徴として、何らかのイベントなどをトリガーとして自動的にプログラムコードが実行されることが挙げられます。AWS Lambdaで実行するコードは「Lambda 関数」と呼ばれます。開発言語は、Node.js、Java、C#、Pythonに対応しています。
Entra IDをアカウント源泉とするAWS Lambda構成例
今回はEntra IDをアカウント源泉としたAWS Lambdaを活用した同期の仕組みをご紹介します。
- Event Bridge をトリガーに ユーザー/グループ/グループメンバーシップ情報取得用のLambda(同期用情報抽出)を実行します。
- Lambda(同期用情報抽出)にて、ID ソース(Entra ID)から同期対象のグループ・ユーザー・メンバーシップを抽出し、抽出した内容から、後続の Lambda(Okta同期)が処理できるように SQS にメッセージとして投入、スナップショットを S3 に保存します。
- SQS に投入されたメッセージをもとに、Lambda(Okta同期)を実行します。Lambda(Okta同期)ではOktaのIdentity Source APIを用いてOkta 側のグループ、ユーザー、メンバーシップ情報を順に同期します。
使用するエンドポイントは下記です。
グループの追加・更新: bulk-groups-upsert
ユーザーの追加・更新: bulk-upsert
グループメンバーシップの更新:bulk-group-memberships-upsert
同期対象のグループ削除、ユーザー削除、ステータス変更については、Okta API を使用して同期を行います。
グループおよびグループメンバーシップ向けAnything-as-a-Source(EA)の利用
先ほど紹介したAWS Lambdaを活用した同期の仕組みの中で使用した、グループおよびグループメンバーシップ向けAnything-as-a-Sourceが、2025年9月に早期アクセス(EA)機能として公開されました。当該機能リリースに伴い、Identity Source API を使用した外部 ID ソース主導のグループの作成と更新、OktaのUniversal Directoryへのグループメンバーシップ同期を制御できるようになりました。今回の検証におけるナレッジを一部紹介します。
【処理順序について】
本機能を利用するにあたっては、Anything-as-a-Sourceによるユーザー同期と同様に下記の実行順序を意識し実装する必要があります。
- セッション作成(sessions)
- 変更内容の送信(bulk-groups-upsert または bulk-group-memberships-upsert)
- セッション確定(start-import)
※なお、bulk-group-memberships-upsert(グループメンバーシップの upsert)は、対象グループが該当 Identity Source 内に既に存在していることが前提となります。そのためbulk-groups-upsertによるグループ作成完了後にbulk-group-memberships-upsertを実行する必要があります。
【インポートセッションについて】
Anything-as-a-Sourceによるユーザー同期と同様に下記の制約があります。
- 1つのIdentity Source に対し、1セッションのみ実行可能であり、並列実行不可
- 1リクエスト200KBまで、1セッション最大 50 リクエストまで処理可能
※payloadサイズ(取込対象のJSON合計サイズ)の上限はstart-import時にセッション全体でチェックされます。そのため、bulk-groups-upsert または bulk-group-memberships-upsertにてpayloadサイズを意識した設計が必要です。
【処理時間について】
ご紹介のAWS Lambdaを使用した構成での性能参考値は、IDソース1000件当たり Oktaへの同期完了まで18分程度となっています。
※実行環境によって、処理時間が変動する場合があります。
まとめ
本ブログでは、EA機能であるグループおよびグループメンバーシップ向けAnything-as-a-Sourceを使用した XaaS とAWS Lambdaを活用したMicrosoft Entra IDとのユーザー・グループ連携をご紹介しました。
本機能により、Microsoft Entra ID をはじめとするOkta以外の既存 ID 管理基盤を利用しつつ、認証やアプリ連携は Okta で統合したいというユーザー様に対して、以下の価値を訴求できるといえます。
- 既存の ID 管理基盤のユーザー・グループ・メンバーシップを Okta に自動同期できる。
- 既存のMicrosoft Entra ID ベースの運用を崩さずOktaを導入できる。
また、XaaSを使用したユーザー・グループ連携の構築方式としては今回ご紹介した AWS Lambda による実装だけでなく、Okta Workflows での機能実現を利用したノーコード同期も可能です。要件やスキルセット、運用体制に応じて実装方式を使い分け、機能を実現してみてはいかがでしょうか。
Entra IDとの連携やその他データソースとの連携にご興味のある方は、是非弊社までご連絡ください。
※本記事はマクニカのブログとして、NTTドコモビジネス様の技術協力を受け、共同で制作しています。お問い合わせはマクニカにて承り、導入/設計/構築は同社と連携してご支援します。
本記事はマクニカネットワークス株式会社とNTTドコモビジネス株式会社による共同制作コンテンツです。無断転載を禁止します。
お問い合わせ・資料請求
株式会社マクニカ Okta 担当
- TEL:045-476-2010
- E-mail:okta@macnica.co.jp
平日 9:00~17:00