Upgrade to Pro — share decks privately, control downloads, hide ads and more …

標準技術と独自システムで作る「つらくない」SaaS アカウント管理 / Effortless ...

標準技術と独自システムで作る「つらくない」SaaS アカウント管理 / Effortless SaaS Account Management with Standard Technologies & Custom Systems

2025/06/25 情シス・コーポレートITのSaaSアカウント管理 効率化の取り組み
https://findy.connpass.com/event/358280/
#情シス_findy

Avatar for Yuya Takeyama

Yuya Takeyama

June 25, 2025
Tweet

More Decks by Yuya Takeyama

Other Decks in Technology

Transcript

  1. 自己紹介 © LayerX Inc. 竹山 雄也 (@yuya-takeyama) 福岡出身・浅草在住 株式会社 LayerX

    コーポレートエンジニアリング室 社内で利用するシステムや、それを構築するためのプラットフォームを作るのが仕事 すべての経済活動をデジタル化するために、すべての業務活動をデジタル化したいコー ポレートエンジニア 2
  2. アジェンダ © LayerX Inc. LayerX における SaaS アカウント管理の課題 標準技術を活用した基盤整備 (SSO/SCIM)

    独自システムによる自動化 ABAC Generator: 属性ベースのグループ管理自動化 Synthetix: 組織情報データ連携フレームワーク まとめ 3
  3. SSO (Single Sign-On) の利用 Microsoft Entra ID を ID 基盤として採用

    © LayerX Inc. 全社員のアカウントを一元管理 強力な認証機能 (MFA、Passwordless、条件付きアクセス) 原則として、ここでアカウントを止めればアクセスが止まることを目指す 10
  4. SCIM による自動プロビジョニング SCIM (System for Cross-domain Identity Management) © LayerX

    Inc. ユーザー・グループ情報の自動同期プロトコル Microsoft Entra ID → 各種 SaaS への自動連携 各サービス (Application) への割り当てによって、どのグループがどのサービスにアクセスできるかを管理できる 各種サービスにおける、手動でのアカウント作成・削除、グループの管理が原則不要に 12
  5. SCIM 対応サービス でも、Microsoft Entra ID 上のグループ管理が大変... © LayerX Inc. Google

    Workspace, Slack, Notion, GitHub, AWS, 1Password... まだまだ対応していないサービスも多い 13
  6. Microsoft Entra ID のグループ管理の課題 手動管理の限界 属性に基づいた自動化が必要 © LayerX Inc. 毎月の入社・異動に伴うグループメンバーの更新

    「〜〜〜事業部の Biz マネージャー」のような複雑な条件のグループ 新任マネージャーは追加 退職者は削除 別事業部のマネージャーになる場合は削除 などなど 15
  7. RBAC vs ABAC RBAC (Role-Based Access Control) ABAC (Attribute-Based Access

    Control) © LayerX Inc. 役割ベースのアクセス制御 「管理者」 「一般」 「閲覧」などのロール 属性ベースのアクセス制御 部署、役職、雇用形態、職種などの属性で判断 16
  8. 課題: 多くの SaaS は RBAC しかサポートしない ABAC Generator というツールを実装 ©

    LayerX Inc. SmartHR の属性情報を基に、自動的に Microsoft Entra ID のグループメンバーを更新 RBAC のシステム上で、擬似的に ABAC を実現 17
  9. ABAC Generator によるグループ管理の流れ © LayerX Inc. 毎日定時で実行 任意のタイミングでの手動実行も可能 ABAC Generator

    が実際にやるのは Terraform でのグループ定義ファイルの出力まで GitHub Actions で Pull Request を自動作成 人間がそれを approve してマージすると、CI/CD パイプラインによって適用される さらに自動プロビジョニングによって必要なサービスに同期される 18
  10. 組織図の同期 © LayerX Inc. 当初、「組織図」を管理するサービスが 3 つ存在 SmartHR 勤怠打刻サービス バクラク

    勤怠打刻サービスをバクラク勤怠に置き換えることに SmartHR から自動同期すれば、1 つだけの管理で良くなる! 22
  11. 2 つのアプローチ アプローチ 1: 組織情報マスタ (Single Source of Truth) アプローチ

    2: 各所からデータを集約 © LayerX Inc. 理想的だが構築が大変 全業務・システムの改修が必要 既存システムはそのまま 段階的な改善が可能 24
  12. Synthetix の特徴 © LayerX Inc. 中央に共通スキーマを持つ TypeScript のスキーマライブラリ zod を使用

    データソースから Loader でスキーマに適合するデータを生成 スキーマに従ったデータを Processor で処理 今回はバクラクの組織情報の同期処理 要は TypeScript による組織情報の ETL パイプライン 26
  13. 共通の設計原則: 純粋関数をベースとした設計 © LayerX Inc. 事前に必要なデータを全部集める SmartHR、Microsoft Entra ID などから必要なデータを集約

    データを元にあるべき状態を決める ABAC Generator: SmartHR の属性情報・設定 → Microsoft Entra ID のグループメンバー Synthetix: SmartHR の組織情報 → バクラクの組織図 あるべき状態に収束させる処理を行う 途中でエラーが起きても、収束するまでリトライすれば良い Terraform、Kubernetes 等のアイディアを参考に 27
  14. それぞれのツールの成果 ABAC Generator Synthetix © LayerX Inc. 月次のグループ管理に関する手作業がほぼ不要に 元々は月の最終営業日に数時間かかけて行ったりしていた 特に問題なければ自動で作られた

    Pull Request をチェックしてマージするだけに バクラク上の組織情報についても手作業がほぼ不要に バッチ処理を実行して、変更内容を確認し、適用するのみ ミスもほぼなくなった (あったとしたらバグなので修正することで対応可能) 28
  15. まとめ 標準技術の活用 独自システムの構築 © LayerX Inc. SSO: 全ての基本はこれ。原則として SSO が使えるサービスを選定する

    SCIM: まだまだ使えないサービスも多いが、使えるサービスは使う IdP のグループ自体も属性ベースで自動化すると入退社・異動時の管理が楽になる SCIM が使えないケースはデータ連携の仕組みごと作ってしまっても良いかも 純粋関数をベースとした設計にすることで、安定したデータ連携が可能になる 30