Drupalの高機能な権限管理

前回の基礎知識編はいかがでしたでしょうか?

現在、さくらインターネット上のさくらのクラウドでは、Drupalの環境が容易に構築できるようになりました。
パブリックスタートアップスクリプトに「Drupal for CentOS 7」を追加しました。
スタートアップスクリプトは、スタジオ・ウミの大野さんが作成されて、私はテストをお手伝いしました。

Drupalをすぐに試したい時に面倒なインストール作業を進めなくてもすぐに構築が構築できます。ぜひお試しください。

さて、今回はDrupalの特徴である権限管理について説明します。Drupalは高機能な1つにユーザ管理、権限管理がきめ細かく管理ができるところにあります。また、運用面でもよく考えられていて、DrupalのCoreと呼ばれている基本機能が柔軟に統一した管理ができるようになっています。

権限管理

まずは権限管理についての説明です。権限管理は、主に各種の機能の利用可否を設定する形です。
Drupalでは、インストールした直後でも50を超える権限管理の項目があります。代表的な権限は、ユーザの管理、管理者メニューの表示・利用、ブロックの管理、コンテンツの管理、タクソノミーの管理などです。

例えばコンテンツの管理では、コンテンツタイプ毎にさらに以下のような権限があります。コンテンツタイプを増やすと、連動して設定項目が増えて設定することができます。

  • 新しいコンテンツを作成
  • 自身が作成したコンテンツを編集
  • 任意のコンテンツを編集
  • 自分が作成したコンテンツを削除
  • 任意のコンテンツを削除

例えば、コンテンツについて、他の人が作成したコンテンツを更新・削除できない権限を実施したい場合は、以下の権限を付与する形です。

  • 新しいコンテンツを作成
  • 自身が作成したコンテンツを編集
  • 自分が作成したコンテンツを削除

このように各種機能に対しての権限管理項目が多数あります。権限管理の一覧表示の内容と次に説明する役割管理との組み合わせで付与したい権限をチェックしていきます。

権限の一覧

モジュールを追加でインストールすると、モジュールによっては新しく権限が追加されていますので、一覧をチェックして必要な権限を付与します。
モジュールをインストール後に権限付与しないと機能が利用できないことがありますので、インストールすると確認するようにしましょう。

役割管理

権限管理は新しくモジュールを追加すると、そのモジュールに対応した権限の設定項目が増えていきます。モジュールをインストールしたり、コンテンツタイプを増やしていくと200以上の権限管理のリストが表示されることがよくあります。
もし、ユーザ1人を追加される毎に200以上の権限管理をチェックすることを考えるととても面倒ですね。Drupalでは、あらかじめ権限を付与した役割を作成して、その役割に権限を付与します。
作成した権限は、ユーザに割り当てる形になります。また、1つのユーザに複数の役割を割り当てることができます。一度、役割を作成して権限付与することで、以降はユーザに割り当てれば済むので容易に管理ができます。

権限管理・役割・ユーザの関係は以下のような形になります。どういった管理になっているかイメージができたでしょうか?

役割1,2,3があり、それぞれに利用できる権限を付与する

ユーザA,B,Cがそれぞれ役割に属する(ユーザCは複数の役割に属する)

 

ユーザ管理

ユーザには複数の役割を割り当てることができます。「認証済みユーザ」はDrupalの初期設定で付与される権限です。
ログインした時に付与される役割となり、この役割を削除することはできません。

ユーザの役割を設定

権限管理の説明ではないのですが、Drupal上のユーザ管理フィールドは以下の内容となります。ユーザ管理するフィールドは、コンテンツの管理と同様にユーザの任意のフィールドに追加することが可能です。例えば住所や連絡先などはコンテンツタイプと同様にフィールドの追加することで管理が可能です。

ユーザのフィールド一覧

役割によるユーザの権限管理、またユーザを管理するフィールドが、柔軟に設定、変更が可能となっています。

コンテンツの権限管理

次にコンテンツの管理です。権限管理で説明したようにコンテンツタイプ単位で、新規作成、更新、削除の権限付与が可能となります。
さらに、Drupalはコンテンツタイプ毎の権限管理だけではなく、Field Permissionsモジュールを追加インスト-ルすることにより、フィールド単位での管理が可能となります。

Field_Permissionの権限管理

役割に応じてコンテンツのフィールド単位に登録可否、表示・非表示の制御が可能です。この機能はコンテンツの権限管理する上では非常に有用な機能だと考えています。
例えば、ログインしていないユーザにはコンテンツの概要だけ表示して、ログインすることですべてのコンテンツを表示するなどが可能です。サイトにログインさせることで、付加価値を付けた形でのコンテンツ提供が可能となります。

ブロックの権限管理

コンテンツの権限管理と同様に、画面に配置するブロックでも権限管理ができます。以下のようにブロック1つ1つに表示可否を役割毎に設定ができます。

ブロックの権限管理

例えば、ブロックでサイトにログインフォームを作成した場合、ログインしていない時にのみ表示する設定ができます。逆に、ログインした人のみに表示する内容をブロックで表示するなどができます。

役割毎に表示・非表示の設定することで、柔軟にブロックの表示を制御することができます。

最後に

以上のようにDrupalの「役割」が様々な機能と連動して権限付与ができることがわかったと思います。Drupalの基本機能で役割管理しているため、統一してサイトの権限管理が出来、またユーザの役割に応じてコンテンツの提供が可能になります。

最後にTipsです。
Drupalインストール時に作成されたユーザは、administrator権限ではなくスーパーユーザとなります。インストール時に作成されたユーザ管理IDは1番が付与され、この1番は特別な意味があります。すべての権限管理をパスする処理がされて、すべての機能が利用可能な状態です。
権限管理のリストでチェックしなくても利用ができます。新しいモジュールをインストールしても、権限チェックしなくても利用ができます。
このため、ユーザにDrupal管理者権限を渡す場合でも改めてadministrator権限のユーザを作成して利用してもらう運用をお勧めします。