Custom Permissions

サイト管理者がカスタム権限を作成し、特定のDrupalルートにマッピングできる軽量モジュールです。広範な「サイト設定の管理」権限を付与することなく、きめ細かなアクセス制御を実現できます。

config_perms
10,058 sites
70
drupal.org

インストール

Drupal 11, 10, 9, 8 v8.x-2.3
composer require 'drupal/config_perms:8.x-2.3'

概要

Custom Permissionsは、管理インターフェースを通じてカスタム権限を作成・管理するためのシンプルかつ強力な方法を提供する軽量なDrupalモジュールです。管理者は特定のルート(管理パス)に割り当て可能な権限を定義でき、サイト設定タスクに対するきめ細かなアクセス制御が可能になります。

このモジュールは、権限名と関連するルートを保存する設定エンティティを作成することで動作します。有効にすると、Drupalの権限システムでこれらの権限を動的に生成し、指定されたルートのデフォルトのアクセスチェックを独自のアクセスチェッカーで上書きします。これにより、カスタム権限を持つユーザーは、より広範な「サイト設定の管理」権限がなくても、指定されたルートにアクセスできるようになります。

このモジュールには、4つの事前設定済み権限が同梱されています:アカウント設定の管理、日時の管理、エラーログの管理、ファイルシステムの管理です。管理者は管理インターフェースを通じて、新しい権限を簡単に追加したり、既存の権限を変更したりできます。

Features

  • 直感的な管理インターフェースを通じて、特定のDrupalルートにマッピングされたカスタム権限を作成
  • Drupalの標準権限ページに表示される権限を動的に生成
  • ルートアクセスチェックを上書きし、カスタム権限ベースのアクセス制御を使用
  • 一般的な管理タスク用の4つの事前設定済み権限を同梱
  • 改行区切りのルート名を使用して、1つの権限に複数のルートを割り当て可能
  • 権限を設定エンティティとして保存し、エクスポートやデプロイが可能
  • 保存前にルート名が存在するかを検証
  • ユーザー1は権限設定に関係なく、常に完全な管理者権限を維持

Use Cases

コンテンツ編集者への管理タスクの委任

一般的なユースケースは、完全な管理者アクセスを付与せずに、コンテンツ編集者が特定の設定ページにアクセスできるようにすることです。たとえば、編集者が日付フォーマットを管理(entity.date_format.collection)できるカスタム権限を作成し、他のシステム設定にアクセスせずにサイトでの日付の表示方法を設定できるようにすることができます。

レポートへのロールベースアクセスの作成

サイト管理者は、データベースログページ(dblog.overview)にアクセスするためのカスタム権限を作成し、「サイトモニター」ロールに割り当てることができます。これにより、指定されたユーザーは、より広範な管理権限なしにエラーログやサイトアクティビティを表示できます。

ファイルシステム管理の分離

特定のユーザーがファイルアップロード設定を構成する必要があるサイトでは、system.file_system_settingsにマッピングされた権限を作成します。これにより、ファイル管理者は他のシステム設定にアクセスせずにアップロードディレクトリとファイル処理を管理できます。

複数ルートの権限バンドル

複数の関連ルートへのアクセスを許可する単一の権限を作成します。たとえば、「ユーザー設定の管理」権限にentity.user.admin_form(アカウント設定)とuser.role_admin(ロール管理)の両方を含めることで、包括的なユーザー管理権限を作成できます。

Tips

  • ルート名は、Drupal coreやcontribモジュール内の*.routing.ymlファイル、またはDevelモジュールなどのデバッグツールを使用して確認できます
  • カスタム権限は指定されたルートのデフォルトのアクセス要件を完全に上書きすることを忘れないでください - 元のcore権限を持つユーザーは、カスタム権限も持っていない限りアクセスできなくなります
  • アクセスが正しく制限されていることを確認するために、必ず管理者以外のアカウントでカスタム権限をテストしてください
  • 古いバージョンから移行する場合、パスがルート名に置き換えられていることに注意してください - Drupalのパスバリデータを使用してパスをルート名に変換してください
  • ルートフィールドで各ルート名を別の行に入力することで、単一の権限に複数のルートを割り当てることができます

Technical Details

Admin Pages 2
カスタム権限リストフォーム /admin/people/custom-permissions/list

カスタム権限を管理するためのメイン管理ページです。このページには、定義されたすべてのカスタム権限のテーブルが表示され、管理者は権限の作成、編集、有効化/無効化、削除を行うことができます。各権限は1つ以上のDrupalルートにマッピングできます。

Custom perms entityの削除 /admin/structure/custom_perms_entity/{custom_perms_entity}/delete

カスタム権限を削除するための確認ページです。権限名を表示し、完全に削除する前に確認を求めます。

権限 1
カスタム権限の管理

ユーザーがCustom Permissions管理ページにアクセスして管理できるようにします。この権限を持つユーザーは、カスタム権限の作成、編集、有効化/無効化、削除が可能です。セキュリティ上の影響があるため、これは制限付きアクセス権限です。

Hooks 1
config_perms_parse_path

ルートの文字列表現と配列表現を相互に変換するユーティリティ関数です。ルートの配列が渡されると、改行で結合します。文字列が渡されると、改行で分割して配列にします。

Security Notes 4
  • カスタム権限は管理ページへのアクセスを許可するため、セキュリティ上の影響がある可能性があります - どのルートが公開されているか慎重に確認してください
  • このモジュールは、カスタム権限にセキュリティ上の影響がある可能性があることを示す警告を権限ページに表示します
  • カスタム権限に依存しながらユーザーの「サイト設定の管理」権限を削除することで、特定の管理領域のみにアクセスできるようになります
  • ユーザー1は権限設定に関係なく常に完全なアクセス権を維持し、サイト復旧のためのフェイルセーフを提供します