Galaxyをわかりたい!(4) Galaxyでのユーザー管理について

前回までの記事

Galaxyをわかりたい!(1) Galaxyのキホン
Galaxyをわかりたい!(2) Galaxyの拡張機能紹介
Galaxyをわかりたい!(3) Dockerイメージをカスタマイズして使えるPythonやRStudio

Galaxyで解析を行うユーザーが複数いる場合、

  1. 各自が自分用のGalaxyアカウントのユーザー名、ユーザーパスワードを入力しGalaxyにログイン
  2. 解析に使用するデータを自分のGalaxyヒストリに登録
  3. 解析ツールを実行して結果を確認

といった流れで実行するのが一般的です。

Galaxyをわかりたい! 第4回では複数のユーザーを擁するGalaxyをどのように管理していくかについてご紹介します。

Galaxyユーザー管理で使われる用語

               
ユーザー Galaxyにおける解析主体です。ユーザー登録すると自分の作業スペース(ヒストリ)が与えられます。ユーザー管理は特別な権限を持つユーザー(管理者ユーザー)が行います。
グループ ユーザーの集まり。複数ユーザーに対してロールを設定する際に使用します。
ロール ユーザー、グループに与えられる役割の呼び名。何をする役割なのかという事は別途設定する必要があります。

Galaxyでのユーザー管理ではまずユーザーを追加し、それから必要に応じてユーザーのグループ化、ロールの設定を行う事になります。

3タイプのGalaxyユーザー

Galaxyには

  • 管理者ユーザー
  • 一般ユーザー
  • 匿名ユーザー

という3タイプのユーザーがいます。

管理者ユーザー

管理者ユーザーとしてGalaxyにログインすると、webUIの管理者メニューからツール追加やレファレンスデータ設定などさまざまな設定を行うことができます。ユーザー管理に関しては以下のような項目があります。

  • ユーザー情報の確認
  • 一般ユーザーの追加/削除
  • Roleの一般ユーザーへの割り振り

一般ユーザー

一般ユーザーは自分のヒストリへの解析データの追加、ツールの実行、ワークフローの作成といったバイオインフォマティクス解析に関する操作を実行可能ですがGalaxy自体に関する設定変更は実施できません。Galaxyツールを追加してほしい、Shared Data Libraryを追加してほしいといった要望がある場合は管理者ユーザーに要望して作業を行ってもらう事になります。

匿名ユーザー

匿名ユーザーはワークフロー機能が使用できない、ブラウザのセッションをクリアするとヒストリがクリアされる等機能制限のあるユーザーです。ユーザー管理の観点から匿名ユーザーでのGalaxy使用を許可しないよう設定変更する事も可能です。

管理者ユーザーは一般ユーザーの利便性と求められるセキュリティのバランスを考慮して一般ユーザーに許可する操作を決定していく事になります。

Galaxyユーザーアカウントの作成

一般ユーザーアカウントの追加は管理者メニューのUser Management > Userから実施可能です。デフォルト設定ではGalaxサーバーのURLにアクセスして管理者の承認なしに作成する事も可能になっています。
アカウント/パスワード発行を管理者が一元的に行いたい場合は、管理者ユーザーのみがユーザーアカウントの作成を許可するよう設定変更する事もできます。

管理者メニューからGalaxyユーザーの一覧を確認できます。画面右上の”Create new user”から新規ユーザーを作成します。

 

Galaxyユーザーアカウントの利用停止、削除

管理者メニューからはユーザーのDelete(Undelete)とPurgeという操作も実行可能です。少し紛らわしいのですが、Deleteは”ユーザーアカウントの一時的な利用停止”を意味する操作となりUndelete操作によりDelete状態から復帰可能です。Purgeの方は”ユーザーアカウントの恒久的な利用停止”を意味する操作となり、一度実行すると取り消す事はできません。

ユーザー一覧下のDelete, Undelete, Purgeボタンから操作します。ユーザーがDeleteされているかはユーザー情報のstatus列から確認できます。

 

一般ユーザーをグループ化する

複数のGalaxyユーザーに同一のpermissionを与えてよいと分かっている場合はGalaxyユーザーのグループ化機能が便利です。管理者メニュー > User Management > Groupからグループ作成、ユーザーのグループへの登録が可能です。作成後はグループ単位でRole登録する事ができるようになります。

Roleでデータのアクセス権限を設定する

Galaxyではユーザーのデータセットやデータライブラリへのアクセス権限をRBAC(Role Based Access Control)で制御しています。RBACではGalaxyユーザーに直接アクセス権限を設定するのではなく、権限を設定したRoleをまず作成し、それからRoleとGalaxyユーザーを関連付ける事になります。
一度Roleを設定してしまえばその後は作成済みのRoleをテンプレートとして利用できますので、Galaxyユーザー毎に都度権限を設定するより設定が容易になり、ミスを抑止できます。

Roleの作成画面です。ユーザー、グループをRoleに割り当てます。

 

設定例:特定のグループだけがデータにアクセスできるようにする

Galaxyではユーザー間でのデータ共有の方法がいくつか提供されていますが、ユーザーが増えてくると、所属する組織や部署が違うユーザーがお互いのデータにアクセスできないようにしたい、という要望が出てくると思います。そのような場合にどのようにすればよいか、 ユーザー制御とデータライブラリを用いた設定例をご紹介します。

前提

12人のユーザーがLab1〜4のいずれかに所属し、ProjectA,Bのどちらかに割り当てられている状態を考えます。

Role Group User
ProjectA Lab1 user1,user2,user3
ProjectA Lab2 user4,user5,user6
ProjectB Lab3 user7,user8,user9
ProjectB Lab4 user10,user11,user12

ゴール

グループLab1,Lab2に所属するユーザーはProjectAのデータにアクセスできるが、ProjectBのデータにはアクセスできない。逆にグループLab3,Lab4に所属するユーザーはProjectBのデータにアクセスできるが、ProjectAのデータにはアクセスできない。

設定

管理者アカウントでログインし、トップメニューの[Shared Data(共有データ)]-[Data Libraries(データライブラリ)]を選択します。データライブラリを作成できるのは管理者として設定されたユーザーのみです。

データライブラリの権限を変更するには、リスト右端のManageから設定メニューを開きます。

各項目にRoleを指定します。デフォルトでは全項目で指定Roleなしとなっており、「ユーザーのアクセス制限なし」、「データの追加や権限変更は管理者のみ」の状態です。

今回は以下のように変更します。

Library Permissions ProjectA_library ProjectB_library
Roles that can access the library ProjectA ProjectB
Roles that can manage permissions on this library – (管理者のみ) – (管理者のみ)
Roles that can add items to this library ProjectA ProjectB
Roles that can modify this library – (管理者のみ) – (管理者のみ)

user1でログインします。user1はProjectAのみ割り当てられています。

トップメニューからデータライブラリのリストを表示します。

ProjectA_libraryのみが表示されており、ProjectB_libraryにはアクセスできません。

続いて、今度はuser7でログインします。user7はProjectBのみ割り当てられています。


user1とは逆にProjectB_libraryのみが表示されており、ProjectA_libraryにはアクセスできません。

Galaxyに備わっているユーザー設定機能をカスタマイズする

さらに、Galaxyは起動設定ファイルの編集を行う事でユーザー管理まわりの機能をオンオフ、カスタマイズする事が可能です。

たとえば以下のような項目があります。

  • require_login (デフォルト設定:オフ)
    設定をオンにするとGalaxyのトップページにアクセスした際にアカウントログイン画面にリダイレクトされるようになり、匿名ユーザーでのGalaxy利用が禁止されます。

  • allow_user_creation (デフォルト設定:オン)
    設定がオンの場合、アカウントログイン画面に表示されているリンクからユーザー追加が可能です。設定がオフの場合、ユーザーアカウントは管理者ユーザーのみが追加可能となります。

  • password_expiration_period (デフォルト設定:オフ)
    Galaxyユーザーのログインパスワードが有効な日数を設定可能です。パスワード作成・変更時点から設定した日数が経過している場合、ログインにはパスワードの再設定が必要となります。

  • session_duration (デフォルト設定:オフ)
    ログインセッションが有効な分数を設定可能です。指定時間が経過している場合Galaxyへの再ログインが必要となります。

設定変更するにはLinuxのターミナルからGalaxyサーバーにアクセスし、[Galaxyのインストール先/configディレクトリ]にあるgalaxy.yml(古いバージョンのGalaxyではgalaxy.ini)ファイルを編集します。変更を反映するにはGalaxyサービスの再起動が必要です。

まとめ

Galaxyをわかりたい! 第4回では、Galaxyでのユーザー管理についてご紹介しました。
適切なユーザー管理やアクセス制御ができると、より広範囲にGalaxyのサービスを提供できるようになります。ぜひご活用ください。
次回のポストではGalaxyでジョブを実行したときに、内部的にはどのような動作が行われているかについてご紹介したいと思います。