Unicorn ID Manager 管理ガイド
******************************

ここでは Unicorn ID Manager を管理するための情報を説明いたします。
前提として、 Unicorn ID Manager は **/opt/osstech** をプレフィックスとする環境にインストール
されていることを前提として説明いたします。

設定ディレクトリー
====================

ファイル/ディレクトリー構成
----------------------------

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 の設定ファイルです。

unicornidm.conf
-----------------

*unicornidm.conf* は Unicorn ID Manager を動作させるために必要な設定ファイルです。

詳細は :doc:`unicornidm-conf` を参照してください。

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 のリバースプロキシー配下で動作させるための
設定例がコメントアウトされて記載されています。そちらも参考にしてください。

mongodb.conf
-------------

*mongodb.conf* は Unicorn ID Manager のキャッシュ情報を格納する MongoDB の設定ファイルです。
このファイルを編集する必要はありません。設定パラメーターの詳細については
https://docs.mongodb.org/manual/reference/configuration-options/ をご覧ください。


templates/
-----------

*templates/* は Unicorn ID Manager のバックエンドのテンプレートファイルを
格納するためのディレクトリーです。テンプレートファイルは **<name>.py** というように
必ず末尾が **.py** のファイルで保存する必要があります。
また、テンプレートファイルはそれぞれのバックエンドごとに用意する必要があります。

テンプレートファイルの概要については :doc:`unicornidm-template` を参照してください。

それぞれのバックエンドごとのテンプレートファイルは以下を参照してください。

:doc:`unicornidm-template-ldap`
    ldap バックエンドのテンプレートに関するドキュメント
:doc:`unicornidm-template-samba_ldap`
    samba_ldap バックエンドのテンプレートに関するドキュメント
:doc:`unicornidm-template-ad`
    ad バックエンドのテンプレートに関するドキュメント
:doc:`unicornidm-template-google`
    google バックエンドのテンプレートに関するドキュメント
:doc:`unicornidm-template-azure`
    azure バックエンドのテンプレートに関するドキュメント
:doc:`unicornidm-template-sql`
    sql バックエンドのテンプレートに関するドキュメント
:doc:`unicornidm-template-command`
    command バックエンドのテンプレートに関するドキュメント

secrets/
---------

*secrets/* パスワード情報を格納したファイルなどを格納するためのディレクトリーです。
Unicorn ID Manager としては必ずしも必要なディレクトリーではありません。


管理者とロール
===============

.. todo:: 管理者とロールの扱いについて


Web ブラウザーからの管理
===========================

Unicorn ID Manager は Web ブラウザーから管理することができます。 Unicorn ID Manager
がインストールされたサーバーのホスト名が unicornidm.example.com の場合、以下の URL
からアクセスしてログインしてください。

.. code-block:: none

    https://unicornidm.example.com/unicornidm/admin/

.. figure:: img/01-login.png
    :alt: ログイン画面

    ログイン画面

ダッシュボード画面
-------------------

ログインをすると、ダッシュボード画面が表示されます。ここで管理しようとしているターゲットを
選択します。なお、あるターゲットに対する何らかの権限がない管理者に対してはそのターゲットが
表示されません。

.. figure:: img/02-dashboard.png
    :alt: ダッシュボード画面

    ダッシュボード画面


ユーザーまたはグループの一覧画面
---------------------------------

ダッシュボード画面からターゲットを選択すると、そのターゲットのユーザー一覧画面が表示されます。

ユーザー一覧画面
^^^^^^^^^^^^^^^^^

.. figure:: img/03-user-list.png
    :alt: ユーザー一覧画面

    ユーザー一覧画面

この画面から以下の画面に遷移することができます。

* ダッシュボード画面

* グループ一覧画面

* 結果画面

* ユーザー登録画面

* 一括処理画面

* 個別のユーザー画面

また、以下の操作を行うことができます。

* 自動生成されたパスワード一覧を取得

* ユーザー一覧を CSV でダウンロード

* バックエンドとの同期 (リフレッシュ)

* 検索

* ログアウト

グループ一覧画面
^^^^^^^^^^^^^^^^^

.. figure:: img/04-group-list.png
    :alt: グループ一覧画面

    グループ一覧画面


この画面から以下の画面に遷移することができます。

* ダッシュボード画面

* ユーザー一覧画面

* 結果画面

* グループ登録画面

* 一括処理画面

* 個別のグループ画面

また、以下の操作を行うことができます。

* グループ一覧を CSV でダウンロード

* バックエンドとの同期 (リフレッシュ)

* 検索

* ログアウト


ユーザーまたはグループの個別画面
---------------------------------

`ユーザーまたはグループの一覧画面`_ から個別画面に遷移すると、ユーザーとグループそれぞれで
以下のような操作を行えます。

ユーザー個別画面
^^^^^^^^^^^^^^^^^

* ユーザー更新

* ユーザー有効化

* ユーザー無効化

* ユーザーのパスワード変更

* ユーザー削除


グループ個別画面
^^^^^^^^^^^^^^^^^

* グループ更新

* グループ削除

* グループへのメンバー追加

* グループからのメンバー削除

結果画面
^^^^^^^^^^^


.. figure:: img/05-result.png
    :alt: 結果画面

    結果画面

結果画面は管理者が行った「登録」や「削除」等の操作結果が実行日時の降順に表示されます。
表示する結果を絞りたい場合は「検索」ボックスで以下のような文字列を入力することで
範囲を絞れます。

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* と入力します。

検索条件は複数指定できます。複数指定する場合は空白区切りで入力してください。
