Slide 1

Slide 1 text

標準技術と独自システムで作る 「つらくない」SaaS アカウント管理 2025/06/25 情シス・コーポレート IT の SaaS アカウント管理 効率化の取り組み 竹山 雄也 (@yuya-takeyama) 株式会社 LayerX コーポレートエンジニアリング室 アプリケーションチーム

Slide 2

Slide 2 text

自己紹介 © LayerX Inc. 竹山 雄也 (@yuya-takeyama) 福岡出身・浅草在住 株式会社 LayerX コーポレートエンジニアリング室 社内で利用するシステムや、それを構築するためのプラットフォームを作るのが仕事 すべての経済活動をデジタル化するために、すべての業務活動をデジタル化したいコー ポレートエンジニア 2

Slide 3

Slide 3 text

アジェンダ © LayerX Inc. LayerX における SaaS アカウント管理の課題 標準技術を活用した基盤整備 (SSO/SCIM) 独自システムによる自動化 ABAC Generator: 属性ベースのグループ管理自動化 Synthetix: 組織情報データ連携フレームワーク まとめ 3

Slide 4

Slide 4 text

1. LayerX における SaaS アカウント管理 の課題

Slide 5

Slide 5 text

組織の成長に伴う課題 手動でのアカウント・グループ管理が限界に © LayerX Inc. 全社で 400 名を超える規模に成長 毎月のように入社・異動が発生 利用する SaaS の増加 Google Workspace, Slack, Notion, GitHub, AWS, 1Password, SmartHR, バクラク... 5

Slide 6

Slide 6 text

なぜアカウント・グループ管理が重要なのか? 生産性への影響 © LayerX Inc. メーリングリスト、カレンダー、ドライブでの情報共有 適切な権限がないと業務が滞る 毎回マネージャー等があらゆるサービスの権限を申請するのは生産的ではない 申請側も作業側も 複数サービス間で一貫したグループでのメンション 6

Slide 7

Slide 7 text

なぜアカウント・グループ管理が重要なのか? セキュリティ・ガバナンス システム化による統制の実現が急務 © LayerX Inc. 各種サービスでの権限管理 退職者のアカウント削除の徹底 内部統制の観点からも重要 (SOC1 Type2 への対応) 財務報告に係る内部統制の保証が必要 適切な権限管理プロセスの実装 監査証跡(ログ)の確保 7

Slide 8

Slide 8 text

参考: 統制とセキュリティの全体像 https://speakerdeck.com/kanny/effortless-governance-and-security-enabled-by-the-cloud CISO の星 (kanny) による「開発も運用もビジネス部門も! クラウドで実現する「つらくない」統制とセキュリティ」より © LayerX Inc. 8

Slide 9

Slide 9 text

2. 標準技術を活用した基盤整備

Slide 10

Slide 10 text

SSO (Single Sign-On) の利用 Microsoft Entra ID を ID 基盤として採用 © LayerX Inc. 全社員のアカウントを一元管理 強力な認証機能 (MFA、Passwordless、条件付きアクセス) 原則として、ここでアカウントを止めればアクセスが止まることを目指す 10

Slide 11

Slide 11 text

SSO のメリット © LayerX Inc. パスワード管理の負担軽減 セキュリティポリシーの統一適用 アカウントのライフサイクル管理の簡素化 監査対応の効率化 11

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

SCIM 対応サービス でも、Microsoft Entra ID 上のグループ管理が大変... © LayerX Inc. Google Workspace, Slack, Notion, GitHub, AWS, 1Password... まだまだ対応していないサービスも多い 13

Slide 14

Slide 14 text

3. 独自システムによる自動化

Slide 15

Slide 15 text

Microsoft Entra ID のグループ管理の課題 手動管理の限界 属性に基づいた自動化が必要 © LayerX Inc. 毎月の入社・異動に伴うグループメンバーの更新 「〜〜〜事業部の Biz マネージャー」のような複雑な条件のグループ 新任マネージャーは追加 退職者は削除 別事業部のマネージャーになる場合は削除 などなど 15

Slide 16

Slide 16 text

RBAC vs ABAC RBAC (Role-Based Access Control) ABAC (Attribute-Based Access Control) © LayerX Inc. 役割ベースのアクセス制御 「管理者」 「一般」 「閲覧」などのロール 属性ベースのアクセス制御 部署、役職、雇用形態、職種などの属性で判断 16

Slide 17

Slide 17 text

課題: 多くの SaaS は RBAC しかサポートしない ABAC Generator というツールを実装 © LayerX Inc. SmartHR の属性情報を基に、自動的に Microsoft Entra ID のグループメンバーを更新 RBAC のシステム上で、擬似的に ABAC を実現 17

Slide 18

Slide 18 text

ABAC Generator によるグループ管理の流れ © LayerX Inc. 毎日定時で実行 任意のタイミングでの手動実行も可能 ABAC Generator が実際にやるのは Terraform でのグループ定義ファイルの出力まで GitHub Actions で Pull Request を自動作成 人間がそれを approve してマージすると、CI/CD パイプラインによって適用される さらに自動プロビジョニングによって必要なサービスに同期される 18

Slide 19

Slide 19 text

ABAC Generator: グループの設定 ※かなり端折ってます © LayerX Inc. 19

Slide 20

Slide 20 text

ABAC Generator: Terraform ファイルの出力 SCIM が使えるサービスであれば、ABAC Generator で大体いい感じになった © LayerX Inc. 20

Slide 21

Slide 21 text

新たな課題: バクラクの組織情報の同期 © LayerX Inc. バクラクは SCIM には未対応 開発チームにはめっちゃお願いしています!!! よくあるサービスとは違い、フラットな「グループ」 「ロール」ではなく、階層を持っ た組織図で管理されている 21

Slide 22

Slide 22 text

組織図の同期 © LayerX Inc. 当初、「組織図」を管理するサービスが 3 つ存在 SmartHR 勤怠打刻サービス バクラク 勤怠打刻サービスをバクラク勤怠に置き換えることに SmartHR から自動同期すれば、1 つだけの管理で良くなる! 22

Slide 23

Slide 23 text

Synthetix: データ連携フレームワーク 想定される将来の課題 © LayerX Inc. サービス間同期の組み合わせは今後も増える アドホックな実装では管理が困難に 拡張性のあるアーキテクチャが必要 23

Slide 24

Slide 24 text

2 つのアプローチ アプローチ 1: 組織情報マスタ (Single Source of Truth) アプローチ 2: 各所からデータを集約 © LayerX Inc. 理想的だが構築が大変 全業務・システムの改修が必要 既存システムはそのまま 段階的な改善が可能 24

Slide 25

Slide 25 text

Synthetix のアーキテクチャ © LayerX Inc. 25

Slide 26

Slide 26 text

Synthetix の特徴 © LayerX Inc. 中央に共通スキーマを持つ TypeScript のスキーマライブラリ zod を使用 データソースから Loader でスキーマに適合するデータを生成 スキーマに従ったデータを Processor で処理 今回はバクラクの組織情報の同期処理 要は TypeScript による組織情報の ETL パイプライン 26

Slide 27

Slide 27 text

共通の設計原則: 純粋関数をベースとした設計 © LayerX Inc. 事前に必要なデータを全部集める SmartHR、Microsoft Entra ID などから必要なデータを集約 データを元にあるべき状態を決める ABAC Generator: SmartHR の属性情報・設定 → Microsoft Entra ID のグループメンバー Synthetix: SmartHR の組織情報 → バクラクの組織図 あるべき状態に収束させる処理を行う 途中でエラーが起きても、収束するまでリトライすれば良い Terraform、Kubernetes 等のアイディアを参考に 27

Slide 28

Slide 28 text

それぞれのツールの成果 ABAC Generator Synthetix © LayerX Inc. 月次のグループ管理に関する手作業がほぼ不要に 元々は月の最終営業日に数時間かかけて行ったりしていた 特に問題なければ自動で作られた Pull Request をチェックしてマージするだけに バクラク上の組織情報についても手作業がほぼ不要に バッチ処理を実行して、変更内容を確認し、適用するのみ ミスもほぼなくなった (あったとしたらバグなので修正することで対応可能) 28

Slide 29

Slide 29 text

4. まとめ

Slide 30

Slide 30 text

まとめ 標準技術の活用 独自システムの構築 © LayerX Inc. SSO: 全ての基本はこれ。原則として SSO が使えるサービスを選定する SCIM: まだまだ使えないサービスも多いが、使えるサービスは使う IdP のグループ自体も属性ベースで自動化すると入退社・異動時の管理が楽になる SCIM が使えないケースはデータ連携の仕組みごと作ってしまっても良いかも 純粋関数をベースとした設計にすることで、安定したデータ連携が可能になる 30

Slide 31

Slide 31 text

ご清聴ありがとうございました @yuya-takeyama © LayerX Inc. 31