前回までの記事
Galaxyをわかりたい!(1) Galaxyのキホン
Galaxyをわかりたい!(2) Galaxyの拡張機能紹介
Galaxyをわかりたい!(3) Dockerイメージをカスタマイズして使えるPythonやRStudio
Galaxyで解析を行うユーザーが複数いる場合、
- 各自が自分用のGalaxyアカウントのユーザー名、ユーザーパスワードを入力しGalaxyにログイン
- 解析に使用するデータを自分のGalaxyヒストリに登録
- 解析ツールを実行して結果を確認
といった流れで実行するのが一般的です。
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ユーザーアカウントの利用停止、削除
管理者メニューからはユーザーのDelete(Undelete)とPurgeという操作も実行可能です。少し紛らわしいのですが、Deleteは”ユーザーアカウントの一時的な利用停止”を意味する操作となりUndelete操作によりDelete状態から復帰可能です。Purgeの方は”ユーザーアカウントの恒久的な利用停止”を意味する操作となり、一度実行すると取り消す事はできません。
一般ユーザーをグループ化する
複数のGalaxyユーザーに同一のpermissionを与えてよいと分かっている場合はGalaxyユーザーのグループ化機能が便利です。管理者メニュー > User Management > Groupからグループ作成、ユーザーのグループへの登録が可能です。作成後はグループ単位でRole登録する事ができるようになります。
Roleでデータのアクセス権限を設定する
Galaxyではユーザーのデータセットやデータライブラリへのアクセス権限をRBAC(Role Based Access Control)で制御しています。RBACではGalaxyユーザーに直接アクセス権限を設定するのではなく、権限を設定したRoleをまず作成し、それからRoleとGalaxyユーザーを関連付ける事になります。
一度Roleを設定してしまえばその後は作成済みのRoleをテンプレートとして利用できますので、Galaxyユーザー毎に都度権限を設定するより設定が容易になり、ミスを抑止できます。
設定例:特定のグループだけがデータにアクセスできるようにする
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でジョブを実行したときに、内部的にはどのような動作が行われているかについてご紹介したいと思います。