unicornidm-tool(8)
===================

概要
-----

::

    unicornidm-tool <resource> <command> [<args>]
    unicornidm-tool <command> [<args>]

説明
------

このツールは Unicorn ID Manager に対してユーザー追加やグループ追加などの操作を
行うための機能を提供します。このツールを利用するためには `設定ファイル`_
に設定を記述する必要があります。

*resource* は *user* 、 *group* 、 *admin* および *role* のいずれかを選択します。

*command* は *resource* に対してどのような操作を実行するかを指定します。

*args* はそれぞれの *resource* と *command* の組み合わせに対する引数やオプションです。

設定ファイル
-------------

unicornidm.conf に以下の内容を追記してください。

::

    [client]
    server_url = https://localhost:8443/
    admin_name = test-admin
    admin_password_file = /path/to/test-admin-password
    uid = unicornidm
    gid = unicornidm
    timezone = Asia/Tokyo

*[client]* はクライアント設定のセクションが開始されることを示します。

*server_url* は Unicorn ID Manager が稼働するサーバーの URL です。

*admin_name* は Unicorn ID Manager に接続するための管理者名です。

*admin_password_file* は *admin_name* のパスワードを格納したファイル名です。

*uid* と *gid* は **unicornidm-tool admin** か **unicornidm-tool role** を実行する
際に利用されます。 Unicorn ID Manager の実行ユーザー/グループを指定してください。

*timezone* を指定することで、ユーザーやグループの操作時に出力される監査ログの
時刻が指定した timezone の時刻になります。

それぞれのコマンドの詳細
-------------------------

ユーザーに関する操作
^^^^^^^^^^^^^^^^^^^^^

unicornidm-tool user add [OPTIONS] TARGET CSV_FILE
    ユーザーを追加します。

    ::

        Arguments:
        TARGET      操作対象のターゲット
        CSV_FILE    CSV ファイルのパス

        Options:
        -A, --admin-name TEXT           管理者の名前
        -P, --admin-password-file TEXT  管理者のパスワードを格納したファイル
        -b, --backends TEXT             バックエンド


unicornidm-tool user modify [OPTIONS] TARGET CSV_FILE
    ユーザーを修正します。

    ::

        Arguments:
        TARGET      操作対象のターゲット
        CSV_FILE    CSV ファイルのパス

        Options:
        -A, --admin-name TEXT           管理者の名前
        -P, --admin-password-file TEXT  管理者のパスワードを格納したファイル
        -b, --backends TEXT             バックエンド


unicornidm-tool user enable [OPTIONS] TARGET CSV_FILE
    ユーザーを有効化します。

    ::

        Arguments:
        TARGET      操作対象のターゲット
        CSV_FILE    CSV ファイルのパス

        Options:
        -A, --admin-name TEXT           管理者の名前
        -P, --admin-password-file TEXT  管理者のパスワードを格納したファイル
        -b, --backends TEXT             バックエンド

unicornidm-tool user disable [OPTIONS] TARGET CSV_FILE
    ユーザーを無効化します。

    ::

        Arguments:
        TARGET      操作対象のターゲット
        CSV_FILE    CSV ファイルのパス

        Options:
        -A, --admin-name TEXT           管理者の名前
        -P, --admin-password-file TEXT  管理者のパスワードを格納したファイル
        -b, --backends TEXT             バックエンド

unicornidm-tool user changepassword [OPTIONS] TARGET CSV_FILE
    ユーザーのパスワードを変更します。

    CSV ファイルのヘッダに *password* カラム
    が存在しなければ、 Unicorn ID Manager のランダムパスワード生成規則に基づいて
    パスワードを自動生成します。自動生成されたパスワードは
    *unicornidm-tool user getpassword [OPTIONS] TARGET* で取得してください。

    ::

        Arguments:
        TARGET      操作対象のターゲット
        CSV_FILE    CSV ファイルのパス

        Options:
        -A, --admin-name TEXT           管理者の名前
        -P, --admin-password-file TEXT  管理者のパスワードを格納したファイル
        -b, --backends TEXT             バックエンド

unicornidm-tool user delete [OPTIONS] TARGET CSV_FILE
    ユーザーを削除します。

    ::

        Arguments:
        TARGET      操作対象のターゲット
        CSV_FILE    CSV ファイルのパス

        Options:
        -A, --admin-name TEXT           管理者の名前
        -P, --admin-password-file TEXT  管理者のパスワードを格納したファイル
        -b, --backends TEXT             バックエンド


unicornidm-tool user getpassword [OPTIONS] TARGET
    自動生成されたユーザーのパスワードを取得します。

    ::

        Arguments:
        TARGET      対象のターゲット

        Options:
        -A, --admin-name TEXT           管理者の名前
        -P, --admin-password-file TEXT  管理者のパスワードを格納したファイル

unicornidm-tool user list [OPTIONS] TARGET
    ユーザー一覧を取得します。


    ::

        Arguments:
        TARGET                              対象のターゲット

        Options:
        -A, --admin-name TEXT               管理者の名前
        -P, --admin-password-file TEXT      管理者のパスワードを格納したファイル
        -p, --page INTEGER                  リストのページ番号
        --sort-by KEY                       KEY に基づいてソート
        --sort-order [ascending|descending] ソートを昇順にするか降順にするか
        --refresh                           キャッシュをリフレッシュして取得
        --limit INTEGER                     1 ページあたりの表示数
                                            (0 の場合、すべて表示 (時間がかかります))
        --filter TEXT                       検索フィルター

unicornidm-tool user result [OPTIONS] TARGET
    ユーザーに対する操作結果を取得します。

    ::

        Arguments:
        TARGET                         対象のターゲット

        Options:
        -A, --admin-name TEXT          管理者の名前
        -P, --admin-password-file TEXT 管理者のパスワードを格納したファイル
        -p, --page INTEGER             リストのページ番号
        --limit INTEGER                1 ページあたりの表示数
                                       (0 の場合、すべて表示 (時間がかかります))
        --filter TEXT                  検索フィルター


グループに関する操作
^^^^^^^^^^^^^^^^^^^^^

unicornidm-tool group add [OPTIONS] TARGET CSV_FILE
    グループを追加します。

    ::

        Arguments:
        TARGET      操作対象のターゲット
        CSV_FILE    CSV ファイルのパス

        Options:
        -A, --admin-name TEXT           管理者の名前
        -P, --admin-password-file TEXT  管理者のパスワードを格納したファイル
        -b, --backends TEXT             バックエンド

unicornidm-tool group modify [OPTIONS] TARGET CSV_FILE
    グループを修正します。

    ::

        Arguments:
        TARGET      操作対象のターゲット
        CSV_FILE    CSV ファイルのパス

        Options:
        -A, --admin-name TEXT           管理者の名前
        -P, --admin-password-file TEXT  管理者のパスワードを格納したファイル
        -b, --backends TEXT             バックエンド

unicornidm-tool group delete [OPTIONS] TARGET CSV_FILE
    グループを削除します。

    ::

        Arguments:
        TARGET      操作対象のターゲット
        CSV_FILE    CSV ファイルのパス

        Options:
        -A, --admin-name TEXT           管理者の名前
        -P, --admin-password-file TEXT  管理者のパスワードを格納したファイル
        -b, --backends TEXT             バックエンド

unicornidm-tool group addmembers [OPTIONS] TARGET CSV_FILE
    グループにメンバーを追加します。

    ::

        Arguments:
        TARGET      操作対象のターゲット
        CSV_FILE    CSV ファイルのパス

        Options:
        -A, --admin-name TEXT           管理者の名前
        -P, --admin-password-file TEXT  管理者のパスワードを格納したファイル
        -b, --backends TEXT             バックエンド

unicornidm-tool group deletemembers [OPTIONS] TARGET CSV_FILE
    グループからメンバーを削除します。

    ::

        Arguments:
        TARGET      操作対象のターゲット
        CSV_FILE    CSV ファイルのパス

        Options:
        -A, --admin-name TEXT           管理者の名前
        -P, --admin-password-file TEXT  管理者のパスワードを格納したファイル
        -b, --backends TEXT             バックエンド

unicornidm-tool group list [OPTIONS] TARGET
    グループ一覧を取得します。


    ::

        Arguments:
        TARGET                              対象のターゲット

        Options:
        -A, --admin-name TEXT               管理者の名前
        -P, --admin-password-file TEXT      管理者のパスワードを格納したファイル
        -p, --page INTEGER                  リストのページ番号
        --sort-by KEY                       KEY に基づいてソート
        --sort-order [ascending|descending] ソートを昇順にするか降順にするか
        --refresh                           キャッシュをリフレッシュして取得
        --limit INTEGER                     1 ページあたりの表示数
                                            (0 の場合、すべて表示 (時間がかかります))
        --filter TEXT                       検索フィルター

unicornidm-tool group listmembers [OPTIONS] TARGET GROUP_NAME
    グループのメンバー一覧を取得します。


    ::

        Arguments:
        TARGET                              対象のターゲット
        GROUP_NAME                          対象のグループ

        Options:
        -A, --admin-name TEXT               管理者の名前
        -P, --admin-password-file TEXT      管理者のパスワードを格納したファイル
        --refresh                           キャッシュをリフレッシュして取得

unicornidm-tool group result [OPTIONS] TARGET
    グループに対する操作結果を取得します。


    ::

        Arguments:
        TARGET                         対象のターゲット

        Options:
        -A, --admin-name TEXT          管理者の名前
        -P, --admin-password-file TEXT 管理者のパスワードを格納したファイル
        -p, --page INTEGER             リストのページ番号
        --limit INTEGER                1 ページあたりの表示数
                                       (0 の場合、すべて表示 (時間がかかります))
        --filter TEXT                  検索フィルター

管理者に関する操作
^^^^^^^^^^^^^^^^^^^

管理者に関する操作で -R(--remote) オプションを指定しない場合、
ローカルサーバーの Unicorn ID Manager 上の管理者を操作します。
この時、 -A オプション及び -P オプションで指定する、管理者名、管理者パスワードは
不要です。

unicornidm-tool をパッケージではなく、ソースコードからビルドしてインストールした場合、
unicornidm-tool を実行できるユーザーであれば、誰でも管理者の操作ができますので、
適宜、 unicornidm-tool のパーミッションや owner/group を修正してください。

unicornidm-tool admin add [OPTIONS] NAME
    管理者を追加します。

    ::

        Arguments:
        NAME                           追加する管理者の名前

        Options:
        --password TEXT                追加する管理者のパスワード
                                       (指定がない場合プロンプトから入力)
        -A, --admin-name TEXT          管理者の名前
        -P, --admin-password-file TEXT 管理者のパスワードを格納したファイル
        -r, --role TEXT                追加する管理者のロール
                                       (デフォルトは SuperView)
        -R, --remote                   リモートに対する操作かどうかのフラグ
                                       (デフォルトは False)

unicornidm-tool admin changepassword [OPTIONS] NAME
    管理者のパスワードを変更します。

    ::

        Arguments:
        NAME                           パスワードを変更する管理者の名前

        Options:
        --password TEXT                パスワードを変更する管理者の新しいパスワード
                                       (指定がない場合プロンプトから入力)
        -A, --admin-name TEXT          管理者の名前
        -P, --admin-password-file TEXT 管理者のパスワードを格納したファイル
        -R, --remote                   リモートに対する操作かどうかのフラグ
                                       (デフォルトは False)

unicornidm-tool admin changerole [OPTIONS] NAME ROLE
    管理者のロールを変更します。

    ::

        Arguments:
        NAME                           ロールを変更する管理者の名前
        ROLE                           ロール名

        Options:
        -A, --admin-name TEXT          管理者の名前
        -P, --admin-password-file TEXT 管理者のパスワードを格納したファイル
        -R, --remote                   リモートに対する操作かどうかのフラグ
                                       (デフォルトは False)

unicornidm-tool admin delete [OPTIONS] NAME
    管理者を削除します。

    ::

        Arguments:
        NAME                           削除する管理者の名前

        Options:
        -A, --admin-name TEXT          管理者の名前
        -P, --admin-password-file TEXT 管理者のパスワードを格納したファイル
        -R, --remote                   リモートに対する操作かどうかのフラグ
                                       (デフォルトは False)

unicornidm-tool admin list [OPTIONS]
    管理者の一覧を取得します。

    ::

        Options:
        -A, --admin-name TEXT          管理者の名前
        -P, --admin-password-file TEXT 管理者のパスワードを格納したファイル
        -R, --remote                   リモートに対する操作かどうかのフラグ
                                       (デフォルトは False)


ロールに関する操作
^^^^^^^^^^^^^^^^^^^

ロールに関する操作で -R(--remote) オプションを指定しない場合、
ローカルサーバーの Unicorn ID Manager 上のロールを操作します。
この時、 -A オプション及び -P オプションで指定する、管理者名、管理者パスワードは
不要です。

unicornidm-tool をパッケージではなく、ソースコードからビルドしてインストールした場合、
unicornidm-tool を実行できるユーザーであれば、誰でもロールの操作ができますので、
適宜、 unicornidm-tool のパーミッションや owner/group を修正してください。

unicornidm-tool role add [OPTIONS] ROLE_FILE
    ロールを追加します。

    ::

        Arguments:
        ROLE_FILE                      追加するロールの情報を格納したファイル

        Options:
        -A, --admin-name TEXT          管理者の名前
        -P, --admin-password-file TEXT 管理者のパスワードを格納したファイル
        -R, --remote                   リモートに対する操作かどうかのフラグ
                                       (デフォルトは False)

    ROLE_FILE は JSON フォーマットのファイルで、以下のようなファイルです。
    この JSON オブジェクトには必ず **name** と **privileges** を含まなければなりません。
    また、 **privileges** は Array 型で、それぞれの要素は **target** と **actions**
    を含むオブジェクトでなければなりません。

    ::

        {
          "name": "role_name",
          "privileges": [
            {
              "target": "target_name",
              "actions": [
                "user_list",
                "user_modify",
                "user_change_password"
              ]
            }
          ]
        }

    指定可能なアクションは以下のとおりです。 **privileges** 内の **actions** に
    ここで指定したアクションを含めることで、作成されるロールはこれらのアクションを
    実行することが可能になります。

    .. list-table:: 指定可能なアクション一覧
        :header-rows: 1

        * - アクション名
          - アクションの説明
        * - user_list
          - ユーザー一覧参照操作
        * - user_add
          - ユーザー作成操作
        * - user_modify
          - ユーザー更新操作
        * - user_enable
          - ユーザー有効化操作
        * - user_disable
          - ユーザー無効化操作
        * - user_delete
          - ユーザー削除操作
        * - user_rename
          - ユーザーのリネーム操作
        * - user_change_password
          - ユーザーのパスワード変更操作
        * - group_list
          - グループ一覧参照操作
        * - group_add
          - グループ作成操作
        * - group_modify
          - グループ更新操作
        * - group_delete
          - グループ削除操作
        * - group_rename
          - グループのリネーム操作
        * - group_add_members
          - グループへのメンバー追加操作
        * - group_delete_members
          - グループからのメンバー削除操作
        * - result
          - 結果参照操作
        * - get_password
          - ランダム生成されたパスワードの取得操作

    **privileges** 内のオブジェクトである、 **target** には *
    を指定することが可能です。これにより、すべてのターゲットに対する権限を
    指定できます。

    **privileges** 内のオブジェクトである、 **actions** 内に *
    を含めた場合、すべてのアクションを操作可能な権限を指定できます。

    .. versionadded::
        v3.7.9

        v3.7.9 で **actions** に * を含めることができるようになりました。


unicornidm-tool role delete [OPTIONS] ROLE_NAME
    ロールを削除します。

    ::

        Arguments:
        ROLE_NAME                      削除するロールの名前

        Options:
        -A, --admin-name TEXT          管理者の名前
        -P, --admin-password-file TEXT 管理者のパスワードを格納したファイル
        -R, --remote                   リモートに対する操作かどうかのフラグ
                                       (デフォルトは False)

unicornidm-tool role list [OPTIONS]
    ロールの一覧を取得します。

    ::

        Options:
        -A, --admin-name TEXT          管理者の名前
        -P, --admin-password-file TEXT 管理者のパスワードを格納したファイル
        -R, --remote                   リモートに対する操作かどうかのフラグ
                                       (デフォルトは False)

設定のテストに関する操作
^^^^^^^^^^^^^^^^^^^^^^^^

unicornidm-tool test WHAT_TO_TEST
    設定ファイルの正しさを検証します。完全な検証ではないので、このコマンドを使っても見つからないエラーもあります。

    WHAT_TO_TESTはconfiguration, connection, attributes, allのうちのいずれかです。
        configuration: unicornidm.conf, テンプレートファイルの正しさを検証します。エラーが見つからなかった場合何も出力しません。

        connection: unicornidm.confの設定でバックエンドに接続ができるか検証します。全てのバックエンドに接続できた場合何も出力しません。

        attributes: テンプレートファイルで設定したフロントエンド属性がどのバックエンドでは必須（任意）になっているかを出力します。

        all: 上記全ての検証を行います。


バックアップ・リストアに関する操作
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Unicorn ID Manager は管理者情報、ロール情報及び監査ログを
データベースで保持しているため、それらデータをバックアップする機能を
持っています。また、バックアップしたデータからリストアする機能も備えています。
バックアップ及びリストアは Unicorn ID Manager が実行する MongoDB が起動されている
必要があります。

unicornidm-tool backup [OPTIONS]
    バックアップを取得します。

    ::

        Options:
        -b, --backup-directory TEXT    バックアップデータ保存先ディレクトリー
                                       (デフォルトは LOCALSTATE_DIRECTORY/backup)
        -c, --backup-count INTEGER     バックアップ世代数 (デフォルトは 30)

unicornidm-tool restore BACKUP_ARCHIVE
    BACKUP_ARCHIVE からデータをリストアします。

    ::

        Arguments:
        BACKUP_ARCHIVE      unicornidm-tool backup でバックアプしたアーカイブファイル
