京都工芸繊維大学における ID 管理システム midPoint の導入事例
永井 孝幸 1)
1) 京都工芸繊維大学 情報科学センター
nagai@kit.ac.jp

Implementation Case Study of the ID Management System’midPoint’ at Kyoto Institute of Technology
Takayuki Nagai1)
1) Center for Information Science, Kyoto Institute of Technology

概要
京都工芸繊維大学では 2022 年度の第 11 世代情報基盤計算機システム (System11) への更新に伴って ID 管理システムを OSS の midPoint を用いて内製した．midPoint は Evolveum 社が提供する ID ガバナンス・管理(Identity Governance and Administration, IGA) 用ソフトウェアである．midPoint は Shibboleth や Grouperと並んで InCommon Trusted Access Platform における主要コンポーネントの 1 つであり，国外の大学では商用の ID 管理システムや独自開発システムからの置き換えに成功した事例が報告されている．
本学の既存の ID 管理システムは利用者原簿管理・アカウントプロビジョニング機能に加え，教務・人事システム
連携，アカウント発行管理，利用者向けセルフサービスポータル，LMS 連携などの本学独自改修を施したベンダー製品であったが，これを midPoint を中心とした ID 管理システムとして再構築した．具体的なシステム構成や導入
手順，システム更新に伴う旧システムとの並行稼働からの切り替えなど，本学における経験を共有することで高等教育機関における IAM(Identity and Access Management) 基盤の水準向上につなげたい．

1 はじめに2 midPoint の概要

ID 管理システムはシステム連携の要となる部分でmidPoint では一般的な ID 管理機能 (原簿管理, プ

ある．セキュリティポリシーや組織運営体制と密接な

ロビジョニングなど）に加え，セルフサービス用の関係があるため各大学により実現方法が異なり，商用Web UI も備えており (図 1)，一般ユーザ向けのサーシステムによる実現 [1][2] や独自システムによる実現

ビスポータルを提供することもできる．この画面で[3][4] など様々な導入事例が報告されている．

ユーザは登録情報の確認 (図 2) やパスワード変更, 利

京都工芸繊維大学では前システム (System10) にお用サービス指定 (図 3) を行える．

いて独自改修を施したベンダー製品を ID 管理システ
ムに用い，これに OSS による統合認証基盤を組み合わせた構成でシステムを運用していた [5]．今回のシステム更新ではこの ID 管理部分を OSS の midPoint を中心に内製した．midPoint は最初のリリースから 10
年以上の歴史を持つソフトウェアであるが日本国内の大学での利用について公開された事例は見当たらず，

図1

ダッシュボード画面

本学の事例を共有することは価値があると考える．
本稿ではまず第 2 節で midPoint の概要について述

midPoint の主な機能は，事前に定義されたマッピ

べ，ID 管理ならびにサービス利用資格管理に関係する

ングルールに基づいて「ID 管理原簿に登録された個機能について紹介する．続く第 3 節で本学の ID およ人（ユーザ）」と「データリソース (LDAP 等) に登録

びアクセス管理システムに関する要求事項をまとめ，されたユーザ情報（アカウント）」の間の情報の整合性

第 4 節で midPoint の導入結果について述べる．

を双方向に保つことである．原簿情報を整形してデー
タリソースに出力するためのプロビジョニングツール

1

新)」「normal(ユーザ・管理者による値の手動更新を許可)」「strong(midPoint の出力値を強制)」の 3 種類の強度を指定することが出来，例えばパスワードを保持する項目については weak マッピングを指定することで初期パスワードの登録を行うことができる．手動でのアドホックな変更を一切認めない項目に対してstrong マッピングを用いることでセキュリティポリ
シーを強制することができる．
図2

ユーザプロファイル画面

2.1.2

ロール, サービス, 組織と誘導 (inducement)

ユーザに種類別の権限を付与するための基本的な仕組みとして「ロール (Role)」が用意されている．ロー
ルには「認可」と「誘導 (詳細は後述)」を設定することができ，ユーザにロールを割り当てることで，そのユーザに認可と誘導の設定内容が適用される．認可には原簿に対する操作 (read/write 等) の許可を種類別・
図3

属性単位に指定できるだけでなく，利用者ポータル上

利用サービス指定画面

でアクセスできる画面・機能を限定することもできる．
例えば，「管理者ロール」には原簿上の全ての属性と利としての側面もあるが，定義ルールにもとづいてユー

用者ポータルの全ての機能の利用許可を設定し，「一般

ザ原簿を適切な状態に保つための機能が整備されていユーザロール」には原簿上の自身のデータの read 権

ることが特徴である．

限のみを付与するといった使い方である．「誘導」はmidPoint は CSV, リ レ ー シ ョ ナ ル デ ー タ ベ ー「ユーザがそのロールに所属することで自動的に登録

ス,LDAP,ActiveDirectory 等様々な種類のデータリ対象となるリソース・ロール・サービス・組織」のこ

ソースと連携し，ユーザ原簿へのデータの取り込みやとであり，例えばユーザを「管理者ロール」に割り当

アカウント情報の書き出しを行うことが出来る．デー

てると自動的に LDAP リソース上の管理者グループ

タリソースの種類毎にコネクタが用意され，コネクタに登録されるようにする，といった使い方が出来る．

を追加することで対応するデータリソースの種類を増ロールに似た仕組みとして「サービス (Service)」とやすことが出来る．また，データリソースとの通信は「組織 (Org)」が用意されている．機能的にはロール標準プロトコル (JDBC,LDAP など) を用いて行われと同じであるが，管理画面や条件指定の際に別種のもるため，連携先のリソースに追加のソフトウェアをイの (それぞれ RoleType,ServiceType,OrgType) としンストールする必要が無い．

て区別される．サービスは「PC 端末」「プリンター」

2.1 midPoint の機能など提供サービスを表現するのに用いることが想定さ

2.1.1

れており，誘導の機能と組み合わせることで「ユーザマッピング

midPoint ではデータリソース上のデータ項目とにあるサービスを割り当てることで特定の LDAP リ

ユーザ原簿の各項目との入出力対応付けをマッピン

ソースにアカウントを登録し，更に LDAP 上の利用

グによって定義する．マッピングには単純な文字列処者グループのメンバーとして登録する」といった使い

理だけでなく JavaScript や Groovy 言語を用いた関方が出来る．組織はユーザやリソースなどをグループ数も記述できる．マッピングによって定義された各属としてまとめて階層化することが想定されている．組性について入力値・出力値の依存関係が自動的に検出織に誘導を設定することで，例えば「教員グループにされ，入力値に変更があった場合は影響を受ける出力

所属するユーザに対して自動的に教員ロールを割り当値が即座に更新される．ユーザ原簿とデータリソース

てる」といった使い方が出来る．

の差分は midPoint 本体によって計算され，データリ

2.1.3

アサインメント

ソース上の情報を最新状態に保つためのトランザク

ユーザに対してロール・組織・サービス・リソース

ションが midPoint からコネクタを通じて発行される．

を割り当てることを「アサインメント (assignment)」

値の更新に対して「weak(値が未定義の場合のみ更と呼び，アサインメントを通じて「ユーザが満たすべ2

き状態」を定義する．アサインメントの結果とデータ

る生涯アカウントと学籍・職籍に対応する情報科学セ

リソースの状態に差異があれば，その差異を埋めるた

ンターアカウント (CIS アカウント) の発行と管理がめにデータリソースの状態が自動的に更新される．ア可能であること (要求 1)．なお，CIS アカウントと生

サインメントにより表現されたユーザ状態がデータ

涯アカウントは個人識別用 ID (KIT パーソナル ID)

リソース上にどのように反映されるかは，各データリ

により相互に紐づけされていること (要求 2)．また，

ソースに対応するコネクタのマッピングによって決定

本学指定の ID 生成ルールにもとづいて KIT パーソナされる．例えば，ユーザに LDAP リソースを割り当て

ル ID の発行管理が行えること (要求 3)．さらにシスることで LDAP 上にアカウントを登録し，ユーザを組テム管理者の操作でユーザ属性項目の追加が可能であ織に割り当てることでユーザを特定の LDAP グルー

ること (要求 4)．

プに登録する，といった使い方ができる．前述の「誘3.2

サービス利用資格管理に関する要求事導」と組み合わせることで，1 つのロールを割り当て

利用者の種類ごとに利用できるサービスの範囲，初るだけで複数のサービスや組織を芋づる式に割り当て期状態で使えるサービスの範囲，割り当てるリソース

ることもでき，「複数リソースへの一括登録 (削除)」をの量 (ディスク容量など) を変えられること (要求 5)．

「ロールの割り当て (解除)」として扱うことが出来る．

例外的な利用者については利用可能サービス・割り当

2.1.4

オブジェクトテンプレートてリソースを手動で調整できること (要求 6)．また，

ID 管理システムではデータリソースから取り込ん

一部のサービス（追加サービス）についてはオンライだ値をユーザ原簿に反映する際に，値を正規化したン研修受講をサービス利用資格付与の条件にできるこり派生値を計算することが必要になる．midPoint でと (要求 7)．

はそのための仕組みとしてオブジェクトテンプレー

3.3

利用者ポータルに関する要求事項

ト (object template) の機能が用意されている．オブパスワード変更ならびに原簿登録内容の確認をユー

ジェクトテンプレートにはユーザ原簿の属性値毎に出ザ自身で行えること (要求 8)．また，追加認証情報

力マッピングを指定することができ，ユーザ原簿上の(ex.SSH 公開鍵) を登録できること (要求 9)．追加

属性を入力値としてマッピング結果で属性値を更新すサービスをユーザ自身で有効化/無効化できること (要ることができる．例えば，ﬁrstName 属性と lastName

求 9) に加え，オンライン研修受講状況に応じて利用属性を組み合わせて fullName 属性を算出するような指定可能な追加サービスを変えられること (要求 10)．

処理を記述するのに用いられる．

4 midPoint 導入結果

midPoint では更にオブジェクトテンプレート内でユーザ属性値を元にしてロール・サービス・組織・リ

第 3 節で述べた要求を満たす IAM システムをｍ

ソースを自動的に割り当てるルールを記述することも

idPoint を中心に構築した．要求 4 から要求 10 はできる．この仕組みにより，例えばデータリソース上

midPoint で対応し，要求 1 から要求 3 はデータ連係

で管理者フラグが立っているユーザに対して自動的にサーバ上の処理として自作している．

管理者ロールを付与する，といったことができる．

4.1

サーバ構成

System11 のサーバ群は ESXi 仮想化基盤 (HPE

3 IAM システムに関する要求事項

ProLiant DL360 Gen10/Intel Xeon Gold 5220R

情報科学センターでは演習室端末，プリンタ，電子

2.20GHz) 上 に 仮 想 サ ー バ と し て 構 築 さ れ て い る ．

メール，無線 LAN，VPN 接続，ファイル共有，LMS

仮想サーバへのリソース割り当ては midPoint サーなど様々なサービスを提供しており利用者の種類（教バ (CPU:4 コア, メモリ:16GB),LDAP(389ds) サーバ

員，学生など）によって提供するサービスの範囲や内(CPU:2 コア, メモリ:4GB),ActiveDirectory サーバ

容（利用可能なリソース上限など）に差を設けている．

(CPU:4 コア, メモリ:16GB) である．

このようなサービス提供を実現するために本学の ID

System11 における利用者原簿管理システムと統およびアクセス管理システム (IAM システム) が満た

合認証基盤の構成を図 4 に示す．midPoint は図中すべき要求事項をまとめる．

の 利 用 者 原 簿 管 理 シ ス テ ム に 対 応 し ，デ ー タ 連 係

3.1

利用者原簿管理に関する要求事項

サーバを介して人事システム・学務システムとの自学務システムが出力する学生情報，人事システムが動連携を実現している．連携先のデータリソースには出力する教職員情報を取り込み，個人に一意に対応す

LDAP,ActiveDirectory, リレーショナルデータベース

3

の他，ファイルサーバ (NetApp)，メールサーバ，図考に nsAccountLock 属性にユーザのロック状態を反書館システムなどがある．

映させるよう LDAP コネクタの改修を行った．

旧システム (System10) ではサービス毎の利用者を

4.3.3

Grouper コネクタの大規模グループ対応

Grouper で管理しており，現在でも Grouper のグルー

ユーザ数が数千人規模のグループを Grouper コネ

プ情報を参照しているシステムが残っている．このたクタで midPoint に取り込む際，内部的に生成される

め，midPoint 上での各ユーザのサービス選択状況をXML 文書のサイズが肥大化してグループ同期処理のデータ連係サーバを介して Grouper にも反映させる

時間が大幅に長くなるだけでなくグループ管理画面上ようにしている．

での操作に支障がでた．そこで，1 ユーザにつき 1 つ

4.2 midPoint システム構成の XML ノードを生成する実装を修正し，1 つの XML
ノードに複数ユーザをまとめて登録する方式に改修す

RedHat Enterprise Linux 8 上の rootless コンテ
ナ環境 (podman) で midPoint コンテナを動作させることでこの問題を解消した．

ている．可用性向上のためにクラスタ構成としてお

4.4

導入手順

り，コンテナ同士でクラスタとして動作させるために

midPoint の導入は System11 の構想段階から自力コンテナのネットワークを host モードにしている．

で技術検証を行い，旧システムとの並行稼働を経て最Evolveum 社による配布コンテナ*1 を用いているが，終的な利用者原簿管理システムの切替まで約 2 年を費

配布コンテナ内の JDK には JavaScript のランタイやした．本節では導入の各段階について述べる．

ムが付属していなかったため，JDK を OpenJDK11

4.4.1

技術検証段階 (2021)

まずは技術検証環境を立ち上げて System10 の利に差し替えてビルドし直した．また後述するように用者原簿を取り込み LDAP/AD にアカウントを登録

midPoint 本体・コネクタに改修を施している．
midPoint 用 デ ー タ ベ ー ス に は pgpool で ク ラするところから着手した．midPoint の標準ユーザス

ス タ 化 し た Postgresql13 を 用 い た ．標 準 の ロ ー

キーマでは属性が不足するため，ユーザ種別識別用の

ド バ ラ ン ス 設 定 で は 動 作 に 問 題 が あ り dis-

属性（利用者区分コード, 職種コード, 部局コードなど)

able load balance on wirte に always を設定した．

や在籍管理 (学籍離脱日，退職日など)，UID/GID，追Web 画面のユーザ認証は midPoint の標準機能を用

加認証情報 (SSH 公開鍵など)，サービス選択状況を保いて SAML 認証に対応させ，管理者アカウントでのロ持するための属性をカスタムスキーマに登録した．ス

グイン用にローカルアカウント認証も設定している．

キーマに追加した属性はユーザプロファイル画面の項

4.3

目に自動的に追加される（図 5) ので，プロファイル編

改修内容

集画面自体のカスタマイズは不要であった．

技術検証ならびに旧システムとの並行稼働で判明し文字列属性については注意が必要であり，スキーマ

た不具合に対応するため，以下の改修を行った．

4.3.1

サロゲートペア対応

上で「インデックス対象」に指定しておくことで検索

System10 の利用者情報を midPoint に登録する技の対象とすることができるが，その代わりに最大長が術検証の過程で一部利用者の氏名が登録できないこと

255 文字に制限される．そのため SSH 公開鍵など長が判明した．氏名の文字列に「サロゲートペア」が含い文字列を保持する属性についてはインデックス対象

まれているケースが該当し，ソースコードレベルでのから外す必要がある．また midPoint では文字列属性

修正を要した．文字列処理に String.charAt メソッドの一致判定の際に用いる normalizer を切り替えられを使っている箇所を String.codePointAt メソッドにるようになっており，動作検証の結果 PassThrough-

修正した他，オブジェクトのシリアライズに使用する

PolyStringNormalizer を用いることにした．初期設

Xalan をサロゲートペアの処理で問題を起こさない

定の AlphanumericPolyStringNormalizer では文字列

OpenJDK 付属の Xalan に切り替えて解決した．

中の英数字以外の文字を削除したうえで一致判定が行4.3.2 LDAP コネクタの 389 Directory Server 対応

われるため，例えばユーザ名 hkimura と h-kimura で

midPoint 上のユーザのロック状態を LDAP 上のア

ユーザ名が衝突し，既存アカウントの引継ができない

カウントに反映させる機能が 389 Directory Server にことが判明したためである．

対応していなかったため，OpenLDAP 用の実装を参DatabaseTable コネクタを用いて Postgresql 上のデータを取り込むことで利用者原簿の取り込みを行った．この際，サロゲート文字の取り込みで問題が生じ*1 https://github.com/Evolveum/midpoint-docker

4原簿管理者

ユーザ

手動アカウント発行
原簿修正

System11統合認証基盤
パスワード変更
利用サービス指定LDAP(389ds)

SAML IdP

アカウント/グループ更新

ldaps
ActiveDirectory
ldaps

利用者ポータル人事システムアカウント/グループ更新

データ連携サーバ

職籍情報

RADIUS

ファイルサーバ(NetApp)

ssh

ホーム作成/削除
クオータ設定図書館システム

連携用DB

ユーザ登録

jdbc
差分検出

学籍情報

CSV生成

利用者DB

REST API

メールサーバjdbc
学務システムMoodleDB

ユーザ登録
ユーザ状態更新

midPoint

差分検出

テスト合否情報

利用者DB

利用者原簿管理システム

管理コマンド実行

図 4 System11 構成図 (抜粋)

ること，データベースのカラム名に英大文字が使わ

Listing 1 LDAP グループへのマッピング定義例

れていると正常に動作しないことが判明した．デー< a s s o c i a t i o n>

タの取り込み周期についてはインターバル指定, スケ< r e f> r i : m a i l l i s t</ r e f>
<displayName>M a i l L i s t A s s o c i a t i o n</displayName><t o l e r a n t>t r u e</ t o l e r a n t>
<e x c l u s i v e S t r o n g> f a l s e</ e x c l u s i v e S t r o n g>
<k i n d>e n t i t l e m e n t</ k i n d>

ジュール指定, リアルタイム更新 (live sync) の 3 通りの方式について動作検証を行い，スケジュール指定
方式とリアルタイム方式を併用することにした．イン
ターバル指定では処理が異常終了した際に自動復旧せ<i n t e n t> m a i l l i s t</ i n t e n t>
< d i r e c t i o n>o b j e c t T o S u b j e c t</ d i r e c t i o n>
<a s s o c i a t i o n A t t r i b u t e>r i : m e m b e r</a s s o c i a t i o n A t t r i b u t e><v a l u e A t t r i b u t e> r i : d n</ v a l u e A t t r i b u t e></ a s s o c i a t i o n>

ず，データ取り込み処理が停止してしまうことがあったためである．リアルタイム更新はデータベース上のtimestamp 属性と最新のデータ取り込み実行時刻を比較して更新のあったデータエントリだけを取り込む方式であり，実用上十分な頻度 (数分間隔) で安定して最新データの取り込みが行えることを確認した．

LDAP コネクタの設定では，LDAP スキーマ通り

パスワードハッシュ値の生成も，マッピング定義にのデータ型になるようマッピングを定義する必要がMD4 ハッシュ値を計算する Groovy のコードを書くあった．例えばバイナリ値を保持する項目は Base64

ことで実現した．

エンコードした文字列を出力するのではなく，バイナ

また LDAP コネクタの association 項目にマッピリ値を出力するように設定する必要がある（最終的なングを定義することで，サービスや組織のメンバー

Base64 文字列への変換は LDAP スキーマに基づいてが LDAP 上のエントリに反映されることを確認した．

コネクタ自身が行う）．MSChapv2 認証に用いる NT

リスト 1 は，グループメンバーの dn 値を LDAP グ
ループの member 属性に登録する association の例である．あるサービス（あるいは組織，ロール）を LDAP
リソースに「エンタイトルメント」として割り当てる
ことで，association の定義に基づいて LDAP グルー
プが更新されるようになる．

midPoint からリモート計算機上のスクリプトを実行するための仕組みとして SSH コネクタが用意され
図5ている．SSH 接続により任意のコマンドをリモート実

カスタム属性に対して生成された入力欄

行することができ，ファイルサーバ上にユーザのホー5

4.4.2

Listing 2 SSH コネクタの設定例

並行稼働段階 (2022)

System10 から System11 へ移行する際，システム< s c r i p t s>
< s c r i p t>

切替を年度途中で行う関係から「一般ユーザ（学生，<h o s t>r e s o u r c e</ h o s t>
<l a n g u a g e>bash</ l a n g u a g e><argument><name>username</name><path>$ f o c u s /name</ path></ argument>

教職員）の目に触れる部分は System10 のまま，認証基盤だけを System11 に切り替える」という並行稼働を行うことになった (図 6)．アカウント発行と利用者
ポータルについては System10 の利用者原簿管理シス
テムを継続利用し，System10 の Grouper ならびに<code>/ opt / m i d p o i n t / t o o l b o x / b i n /createUserHome . sh $ username</ code>< c r i t i c a l i t y> p a r t i a l</ c r i t i c a l i t y><o p e r a t i o n>add</ o p e r a t i o n>
<k i n d>a c c o u n t</ k i n d><o r d e r> a f t e r</ o r d e r>

データ連係サーバのデータを取り込むことで利用者原簿の情報を midPoint に中継する構成とした．

Grouper によるグループ管理と midPoint による
グループ管理が LDAP 上で競合しないようにするた</ s c r i p t></ s c r i p t s>

め，Grouper 上でのグループ所属については mem-

berOf 属性，midPoint 上でのグループ所属については
eduPersonEntitlement 属性にマッピングを行った．
ムディレクトリを作成するといった処理に用いるこ

System10/System11並行稼働状態とが想定されている．このコネクタは補助コネクタと

ユーザ

原簿管理者

System11切替完了状態
ユーザ

原簿管理者

して実装されており，他のコネクタと組み合わせて使用する必要がある．なお，補助コネクタを設定するとデータ連携サーバ(System11)

midPoint のコネクタ設定ウィザードが利用できなく

利用者原簿管理システム(System10)なるため，コネクタ設定にはコネクタ定義の XML を
データ連携サーバ(System10)

直接編集する必要がある．

人事システム
学務システム利用者ポータル

具体的な設定例が公開されていないため試行錯誤をGrouper(System10)

要したが，以下の設定により LDAP コネクタとの組み合わせで動作させることができた：
System10連携用DB• LDAP コネクタの script 実行機能を disable に設midPoint

連携用DB

統合認証基盤(System11)

定し，additionalConnector 項目に SSH コネクタを記述する

• SSH コネクタ側の script 実行機能を enable に設

図 6 System11 切り替え時の構成

定する• LDAP コネクタの script 属性に実行するスクリ
プトを書く

4.4.3

最終切替段階 (2023)

例えば，ユーザを新規登録した際にリモートホスト

アカウント発行と利用者ポータルについても Sys-

上でシェルスクリプト createUserHome.sh を引数付

tem11 に完全に切り替え，一般ユーザが midPoint をきで実行するにはリスト 2 のように書けばよい．

直接利用する状態になった．利用者原簿ならびに利用

midPoint には外部サービスの REST API と連携

サービス指定は並行稼働段階における各ユーザの状態する汎用のコネクタが用意されていないが，RESTを引き継ぎ，設定作業のやり直しを一般ユーザに強い

API を呼び出すシェルスクリプトをこの SSH コネ

ることがないようにした．

クタを通じて呼び出すことでユーザ原簿の更新に応2023 年の 4/1 に前年度ユーザの一括削除 (約 1,200

じて REST API を呼び出すことが出来る．これを利件)・更新 (約 2,600 件) と新年度ユーザの一括登録処

用し System11 では SSH コネクタ経由で NetApp の理を学務システムとの自動連携により行い，1215 ユー

REST API を呼び出すことでユーザディレクトリのザの新規登録・プロビジョニングを 50 分程度で終えクォータを自動設定している．

ることが出来た．

6

4.5 midPoint を用いた利用資格の管理

Listing 3 利用者区分によるサービスの自動割り当て

本節では第 3.2 節で述べた要求事項を満たすように<e x p r e s s i o n>
<a s s i g n m e n t T a r g e t S e a r c h><t a r g e t T y p e>S e r v i c e T y p e</ t a r g e t T y p e>
< f i l t e r>
<q : e q u a l xmlns=” ”><q : p a t h>e x t e n s i o n /a u t o a s s i g n U s e r C a t e g o r y</ q : p a t h>

midPoint 上でロール・サービス・リソースをどのように組み合わせたか説明する．

4.5.1

ロール・サービス・リソースの自動割り当て

情報科学センターでは発行するアカウントに対して利用者区分コードを割り当て，アカウントを職種や所をもとにロール・サービスを自動割り当てする方式と<e x p r e s s i o n><path>$ u s e r C a t e g o r y</ path></ e x p r e s s i o n></ q : e q u a l></ f i l t e r ></ a s s i g n m e n t T a r g e t S e a r c h>

した．そのためにロール・サービスのスキーマを拡張</ e x p r e s s i o n>

属に応じて 52 通りに分類 (教職員・学生・その他) している．提供するサービス内容は利用者区分コードと対応しているため，midPoint 上でも利用者区分コード

し，自動割り当て対象となる利用者区分コード（複数）を保持できるようにしている．リソースについては認

Listing 4 assignment に subtype を指定する例

証基盤側の構成に変更があった時に備え，直接ユーザ<e x p r e s s i o n>
<a s s i g n m e n t T a r g e t S e a r c h><t a r g e t T y p e>S e r v i c e T y p e</ t a r g e t T y p e>に割り当てるのでは無く，サービスからの誘導として間接的に割り当てる方式とした．

< f i l t e r>
<q : e q u a l xmlns=” ”><q : p a t h> i d e n t i f i e r</ q : p a t h><e x p r e s s i o n><path>$ d e f a u l t S e r v i c e s</ path></ e x p r e s s i o n>

オブジェクトテンプレート内のマッピングで利用
者区分コードに合致するロール・サービスを検索し，ユーザの assignment 属性に登録することで自動割り当てが完了する (リスト 3)．ここでマッピングの強度に strong を指定することで，利用者区分に変更があっ</ q : e q u a l></ f i l t e r ><a s s i g n m e n t P r o p e r t i e s><s u b t y p e>s y s t e m 1 1 d e f a u l t</ s u b t y p e></ a s s i g n m e n t P r o p e r t i e s></ a s s i g n m e n t T a r g e t S e a r c h>

た場合にロール・サービスの割り当ても修正されるよ
うにしている．

4.5.2

手動割り当てと自動割り当ての共存方法

midPoint 上でユーザに割り当てるサービス・ロー</ e x p r e s s i o n>

ル・組織には自動割り当てによって強制的に登録 (解除）したいものと，ユーザ・管理者の操作によって手動で登録（解除) したいものがある．midPoint においてSystem11 では「system10(System10 から引き継い割り当て内容はユーザの assignment 属性に保持されだ利用サービス指定)」「system11default(System11 上

るが，単純に strong マッピングによって assignment
属性を強制的に更新してしまうと，手動で割り当てたで強制的に登録するサービス・組織・ロール)」という内容も合わせて更新されてしまい，手動設定内容が失subtype を設けることで System11 上の手動設定と自動割当が共存するようにしている．

われてしまう．この問題に対応するために midPoint

4.6には出力マッピングの値域を定義する mapping range

ロールとサービス組織の設計

利用サービス指定に関する要求を満たすためにサーの機能が用意されている．

ビスを組織化し，ロール毎にアクセスできるサービス

この機能を用いるためには，assignment に登録するグループを制限している．

値の subtype 属性に値域を区別するための識別子を登録しておき (リスト 4 の例では system11default を登• CIS 初期サービス録)，これに対応するように出力マッピングの値域を全 て の CIS ア カ ウ ン ト に 対 し て 初 期 状 態 で「subtype 属性に含まれる文字列」で定義しておく (リ有 効 化 す る サ ー ビ ス を 組 織 化 し た も の (ex.

スト 5)．この設定により，マッピング強度に strong

LDAP,Moodle, 共用端末, ホームディレクトリ)を指定しても更新対象となる assignment 属性の値は• CIS 基本サービス

subtype によって分離される．なお手動で設定した割確認テスト合格後の CIS アカウントに対し，利用

り当てについては subtype は空になっている．

サービス指定により有効化/無効化することを許7

を実現している．

Listing 5 subtype を用いた出力マッピング対象の制限<t a r g e t><path>a s s i g n m e n t</ path>

5 まとめ<s e t><c o n d i t i o n>
< s c r i p t>
<code>
assignment ? . subtype . c o n t a i n s ( ’system11default ’ )midPoint を用いることで要求事項を満たす ID 管理システムを内製することができた．midPoint には
各種管理作業を行うための GUI が用意されているが，本学の要求事項を実現するには midPoint 固有の概念を理解した上で XML 定義ファイルを直接記述するこ</ code></ s c r i p t></ c o n d i t i o n></ s e t></ t a r g e t>とが必須であった．なかでも属性マッピングの処理はGroovy 言語で柔軟に記述できるが，midPoint の関数
ライブラリやデータ構造を理解する必要があり実質的にプログラミング作業が必要であった．
定常利用において安定稼働しており新システムへの可するサービスを組織化したもの (ex. 電子メー

移行はひと段落した状態であるが，年度またぎ処理な

ル, 共用プリンタ, 無線 LAN 接続, 多要素認証)

どの業務フローを確立することが今後の課題である．

• CIS 追加サービス

謝辞

管理者により手動で有効化するサービスを組織化したもの (ex.VPN 接続,eduroam)

本研究の一部は JSPS 科研費 JP20H04297 の助成を受けたものである．

ロール内で「ある組織に属するサービスへのアクセスを許可する」というアクセス権限を設定することで，参考文献

ユーザがサービス利用指定画面で閲覧することのできるサービスを制限することができる．System11 では[1] 大勝瀬川, 隆彦辻澤, みゆき石橋. 学内の様々な利用指定可能サービスを制限するために以下のロール運用形態に対応したコンパクトなアカウント管理システムの実現. 学術情報処理研究, No. 16, pp.

を設けた：

59–70, 2012.
• CIS Initial User[2] 中山仁, 甲斐郷子. Sun identity manager を用いアカウント初期登録済みで確認テスト合格前の状

た「小さな」統合 id 管理システムの構築. View

態に対応するロール．このロールを持つユーザはPoint, Vol. 10, pp. 80–83, 2010.

「CIS 初期サービス」に含まれるサービスを参照[3] 田中克明, 山中達哉, 松村芳樹, 高見澤秀幸. 大学構できる．

成員情報の管理・連携システムの構築. 学術情報処• CIS Standard User

理研究, Vol. 19, No. 1, pp. 50–57, 2015.

確認テスト合格済みで標準サービスを利用可能な[4] 櫻田武嗣, 三島和宏, 石橋みゆき, 萩原洋一ほか. 管状態に対応するロール．このロールを持つユーザ

理運用システム 「salut」 の概要. 研究報告イン

は「CIS 基本サービス」に含まれるサービスを参

ターネットと運用技術 (IOT), Vol. 2016, No. 3,

照できる．

pp. 1–6, 2016.

• CIS ID Admin[5] 永井孝幸, 山岡裕美, 桝田秀夫. 京都工芸繊維大学

アカウント発行・名寄せ作業担当者用のロール．
このロールを持つユーザは原簿全体の閲覧が可能

における利用者原簿管理基盤の強化と連携サービスの構築. 情報処理学会研究報告 第 25 回 CLE 研になる．

究発表会, Vol. 2018-CLE-25, No. 9, pp. 1–8, jun

2018.

CIS Initial User ロールをユーザの利用者区分に基づいて自動的に付与することで，統合認証基盤へのア
カウントプロビジョニングと必須サービスの有効化を行う．確認テストの合格状況を全学 LMS のデータベースから live sync で取り込み，合格者に対して CIS

Standard User ロールを自動付与することで要求 108