2. Unicorn ID Manager 管理ガイド¶
ここでは Unicorn ID Manager を管理するための情報を説明いたします。 前提として、 Unicorn ID Manager は /opt/osstech をプレフィックスとする環境にインストール されていることを前提として説明いたします。
2.1. 設定ディレクトリー¶
2.1.1. ファイル/ディレクトリー構成¶
Unicorn ID Manager の設定ディレクトリーは /opt/osstech/etc/unicornidm です。 このディレクトリー以下のファイル/ディレクトリー構成は以下のとおりです。
.
├── secrets/
├── templates/
├── mongodb.conf
├── unicornidm.conf
└── uwsgi.conf
それぞれのファイル及びディレクトリーの用途は以下のとおりです。
- secrets/
- パスワード情報を格納したファイルなどを格納するためのディレクトリーです。
- templates/
- バックエンドのテンプレートファイルを格納するためのディレクトリーです。
- mongodb.conf
- Unicorn ID Manager のキャッシュ情報を格納する MongoDB の設定ファイルです。 通常、このファイルを編集する必要はございません。
- unicornidm.conf
- Unicorn ID Manager の設定ファイルです。
- uwsgi.conf
- Unicorn ID Manager の HTTP サーバーである uWSGI の設定ファイルです。
2.1.2. unicornidm.conf¶
unicornidm.conf は Unicorn ID Manager を動作させるために必要な設定ファイルです。
詳細は unicornidm.conf(5) を参照してください。
2.1.3. uwsgi.conf¶
uwsgi.conf は Unicorn ID Manager の HTTP サーバーである uWSGI の設定ファイルです。 Unicorn ID Manager はそれ単体で HTTP サーバーとして動作しますので、この設定ファイル が必要になります。
ほとんどの場合、このファイルを編集する必要はありませんが、 Unicorn ID Manager を リバースプロキシーのバックエンドで動作させるためには以下の修正が必要です。
chown-socket パラメーターのグループをリバースプロキシーの実行グループに修正
gid パラメーターをリバースプロキシーの実行グループに修正
https パラメーターの行を削除 (あるいはコメントアウト)
http-socket パラメーターを http-socket = :8081 として追記
- 8081 は uWSGI がリッスンするポート番号
デフォルトの uwsgi.conf に Apache HTTPD のリバースプロキシー配下で動作させるための 設定例がコメントアウトされて記載されています。そちらも参考にしてください。
2.1.4. mongodb.conf¶
mongodb.conf は Unicorn ID Manager のキャッシュ情報を格納する MongoDB の設定ファイルです。 このファイルを編集する必要はありません。設定パラメーターの詳細については https://docs.mongodb.org/manual/reference/configuration-options/ をご覧ください。
2.1.5. templates/¶
templates/ は Unicorn ID Manager のバックエンドのテンプレートファイルを 格納するためのディレクトリーです。テンプレートファイルは <name>.py というように 必ず末尾が .py のファイルで保存する必要があります。 また、テンプレートファイルはそれぞれのバックエンドごとに用意する必要があります。
テンプレートファイルの概要については unicornidm.template(5) を参照してください。
それぞれのバックエンドごとのテンプレートファイルは以下を参照してください。
- unicornidm.template.ldap(5)
- ldap バックエンドのテンプレートに関するドキュメント
- unicornidm.template.samba_ldap(5)
- samba_ldap バックエンドのテンプレートに関するドキュメント
- unicornidm.template.ad(5)
- ad バックエンドのテンプレートに関するドキュメント
- unicornidm.template.google(5)
- google バックエンドのテンプレートに関するドキュメント
- unicornidm.template.azure(5)
- azure バックエンドのテンプレートに関するドキュメント
- unicornidm.template.sql(5)
- sql バックエンドのテンプレートに関するドキュメント
- unicornidm.template.command(5)
- command バックエンドのテンプレートに関するドキュメント
2.1.6. secrets/¶
secrets/ パスワード情報を格納したファイルなどを格納するためのディレクトリーです。 Unicorn ID Manager としては必ずしも必要なディレクトリーではありません。
2.2. 管理者とロール¶
課題
管理者とロールの扱いについて
2.3. Web ブラウザーからの管理¶
Unicorn ID Manager は Web ブラウザーから管理することができます。 Unicorn ID Manager がインストールされたサーバーのホスト名が unicornidm.example.com の場合、以下の URL からアクセスしてログインしてください。
https://unicornidm.example.com/unicornidm/admin/
ログイン画面
2.3.1. ダッシュボード画面¶
ログインをすると、ダッシュボード画面が表示されます。ここで管理しようとしているターゲットを 選択します。なお、あるターゲットに対する何らかの権限がない管理者に対してはそのターゲットが 表示されません。
ダッシュボード画面
2.3.2. ユーザーまたはグループの一覧画面¶
ダッシュボード画面からターゲットを選択すると、そのターゲットのユーザー一覧画面が表示されます。
2.3.2.1. ユーザー一覧画面¶
ユーザー一覧画面
この画面から以下の画面に遷移することができます。
- ダッシュボード画面
- グループ一覧画面
- 結果画面
- ユーザー登録画面
- 一括処理画面
- 個別のユーザー画面
また、以下の操作を行うことができます。
- 自動生成されたパスワード一覧を取得
- ユーザー一覧を CSV でダウンロード
- バックエンドとの同期 (リフレッシュ)
- 検索
- ログアウト
2.3.2.2. グループ一覧画面¶
グループ一覧画面
この画面から以下の画面に遷移することができます。
- ダッシュボード画面
- ユーザー一覧画面
- 結果画面
- グループ登録画面
- 一括処理画面
- 個別のグループ画面
また、以下の操作を行うことができます。
- グループ一覧を CSV でダウンロード
- バックエンドとの同期 (リフレッシュ)
- 検索
- ログアウト
2.3.3. ユーザーまたはグループの個別画面¶
ユーザーまたはグループの一覧画面 から個別画面に遷移すると、ユーザーとグループそれぞれで 以下のような操作を行えます。
2.3.3.1. ユーザー個別画面¶
- ユーザー更新
- ユーザー有効化
- ユーザー無効化
- ユーザーのパスワード変更
- ユーザー削除
2.3.3.2. グループ個別画面¶
- グループ更新
- グループ削除
- グループへのメンバー追加
- グループからのメンバー削除
2.3.3.3. 結果画面¶
結果画面
結果画面は管理者が行った「登録」や「削除」等の操作結果が実行日時の降順に表示されます。 表示する結果を絞りたい場合は「検索」ボックスで以下のような文字列を入力することで 範囲を絞れます。
- after:<日付>
- 実行日が <日付> 以降の結果を表示します。 <日付> は YYYY-MM-DD の形式でなければ なりません。たとえば、 after:2015-11-29 と入力します。
- before:<日付>
- 実行日が <日付> 以前の結果を表示します。 <日付> は YYYY-MM-DD の形式でなければ なりません。たとえば、 before:2015-11-29 と入力します。
- ip:<IPアドレス>
- 操作実行者の IP アドレスが <IPアドレス> と一致する結果を表示します。 たとえば、 ip:192.168.0.23 と入力します。
- admin:<管理者名>
- 操作実行者の名前が <管理者名> と一致する結果を表示します。 たとば、 admin:test-admin と入力します。
- op:<実行種別>
- 操作の実行種別が <実行種別> と一致する結果を表示します。 たとえば、 op:change_password と入力します。
- is_succeeded:<実行結果>
- 操作の実行結果が <実行結果> と一致する結果を表示します。 <実行結果> は true か false を選択します。 たとえば、 is_succeeded:false と入力します。
- backend:<バックエンド>
- 操作対象が <バックエンド> に対する実行結果を表示します。 たとえば、 backend:ldap-server と入力します。
検索条件は複数指定できます。複数指定する場合は空白区切りで入力してください。
2.4. 一括操作のための CSV ファイルのフォーマットについて¶
2.4.1. CSV ファイルのヘッダーについて¶
Unicorn ID Manager はコマンドラインツールか管理画面から一括操作を行うことができます。 CSV ファイルのフォーマットは 1 行目に属性 (フロントエンド属性) のヘッダーを記載し、 2 行目以降に ユーザーやグループそれぞれの属性値を指定します。
例:
userName,familyName,givenName,password,mail,mail
user1,User,One,secret,user1@example.com,user1@sub.example.com
user2,User,Two,secret,user1@example.com,
1 行目の属性名はバックエンドのテンプレート設定によって決められます。 たとえば、あるターゲットに 2 つバックエンドが関連付けられている設定で、 それぞれのバックエンドが以下のテンプレートだとします。
User = {
"objectClass": [
"top",
"person",
"organizationalPerson",
"inetOrgPerson",
"posixAccount",
],
"uid": userName,
"cn": userName,
"uidNumber": default(uidNumber),
"gidNumber": default(gidNumber, 100),
"loginShell": default(loginShell, "/bin/bash"),
"homeDirectory": default(unixHomeDirectory, "/home/%(userName)s"),
"sn": familyName,
"givenName": givenName,
"userPassword": password,
"mail": mail,
"description": default(description),
"displayName": default(displayName, "%(familyName)s %(givenName)s"),
}
Group = {
"objectClass": [
"top",
"posixGroup",
],
"cn": groupName,
"gidNumber": default(gidNumber),
"description": default(description),
}
User = {
"userPrincipalName": userName,
"immutableId": default(immutableId),
"displayName": default(displayName, "%(familyName)s %(givenName)s"),
"surname": familyName,
"givenName": givenName,
"mailNickname": userName,
"accountEnabled": default(active, True),
"passwordProfile": {
"password": password,
"forceChangePasswordNextLogin": default(forceChangePasswordNextLogin, True),
},
"passwordPolicies": "DisablePasswordExpiration,DisableStrongPassword",
"usageLocation": default(usageLocation, "JP"),
"assignedLicenses": default(azureLicense),
}
Group = {
"displayName": groupName,
"mailNickname": groupName,
"mailEnabled": False,
"securityEnabled": True,
"description": default(description),
}
この設定の場合、たとえば、以下のような CSV ヘッダーが使用可能です。
userName,familyName,givenName,password,mail,immutableId,azureLicense
テンプレートは JSON のような見た目の形式 (Python の dict 型) になっており、 値部分に存在する識別子が属性 (フロントエンド属性) になります。
テンプレートに存在する default(..) というシンタックスは属性がオプション属性 であることを示します。たとえば、 default(active, True) の設定で、 active 属性 が存在していない場合は True が適用されます。また、 default(description) の設定で、 description が存在しない場合、 description は空になります。
上の設定のオプション属性まで含めたすべての属性を含むユーザーの CSV ヘッダーは 以下のようになります (見やすいように改行していますが、CSV ヘッダーは 1 行です) 。
userName,uidNumber,gidNumber,loginShell,unixHomeDirectory,familyName,
givenName,password,mail,description,displayName,immutableId,active,
forceChangePasswordNextLogin,usageLocation,azureLicense
2.4.2. CSV ファイルのヘッダーの大文字・小文字¶
CSV ファイルのヘッダーに指定する属性名は大文字と小文字を区別します。
2.4.3. CSV データ部分の空のセルについて¶
CSV ファイルで一括操作の際、値が、あるユーザーには存在し、別のあるユーザーには存在しない ことがあります。そのような際には、セルを空に指定することで存在しない値を表現できます。
例:
userName,familyName,givenName,description
user1,User,,This is user1
user2,User,Two,
user3,User
2.4.4. 複数値について¶
CSV ファイルで複数値を表現するためには、フロントエンド属性を複数ヘッダーに指定します。 なお、複数属性として定義できるフロントエンド属性は unicornidm.conf(5) の multi_valued_attributes で指定されたものに限ります。
例:
userName,mail,mail,mail
user1,user1@example.com,user1@sub.example.com,user1@example.jp
user2,user2@example.com
更新操作の際は以下ののようにフロントエンド属性名の先頭に + 、 - 、 – を指定することができます。これにより、属性値の追加、属性値の削除、属性値の全削除 が可能です。
部分追加、部分削除の例:
userName,+mail,-mail
user1,user1@plus.example.jp,user1@sub.example.com
user2,user2@p.example.com,
全削除の例 (全削除の場合データ部の指定は空でも全削除される):
userName,--mail
user1
user2
なお、グループ操作時に「メンバー追加」及び「メンバー削除」する際には +member と -member を混在させることはできません。